Speedtest Script - Hướng dẫn chi tiết
Speedtest Script là công cụ kiểm tra hiệu năng server toàn diện, tự động cài dependencies và chạy được trên Linux/macOS lẫn Windows.
Script giúp bạn:
- Đánh giá nhanh hiệu năng CPU/RAM/Disk/Network
- So sánh VPS providers
- Phát hiện bottleneck I/O và routing mạng
- Lưu kết quả làm baseline để monitoring định kỳ
Tính năng
1) System Information
- CPU: Model, số cores/threads, tốc độ xung nhịp
- RAM: Tổng dung lượng và đã sử dụng
- Disk: Dung lượng ổ đĩa và % sử dụng
- OS: Phiên bản hệ điều hành, kernel, architecture
- Network: IP public, uptime, load average
2) Disk Speed Test
- Sequential Write (dd): Tốc độ ghi tuần tự (3 lần chạy)
- Random I/O (fio/diskspd): IOPS và throughput cho random read/write
- Tự động cài đặt
fio(Linux) hoặcDiskSpd(Windows) nếu chưa có
3) Network Speed Test
- International Servers: CloudFlare CDN, Linode US/Tokyo, Vultr Singapore
- Vietnam ISPs: VNPT, Viettel, FPT, CMC Telecom
- Latency Test: Ping đến các servers quốc tế và nội địa
Cách sử dụng
Linux / macOS
Chạy trực tiếp (khuyến nghị):
curl -Lso- bacpv.com/speedtest.sh | bash
Tải về và chạy:
curl -O https://bacpv.com/speedtest.sh
chmod +x speedtest.sh
./speedtest.sh
Yêu cầu:
- Script tự động cài đặt:
curl,dig(dnsutils),fio - Cần quyền
sudođể cài đặt dependencies - Hỗ trợ: Ubuntu, Debian, CentOS, RHEL, AlmaLinux, Rocky Linux, Fedora, Arch, macOS
Windows PowerShell
1) Windows Server 2012 R2 (khuyến nghị)
Windows Server 2012 R2 thường gặp 2 vấn đề phổ biến:
- TLS mặc định không phải TLS 1.2 → lỗi khi download script
- Encoding → một số script có thể bị lỗi ký tự
✅ Dùng lệnh chạy chuẩn UTF-8 (khuyến nghị cho 2012 R2):
Invoke-Expression ([System.Text.Encoding]::UTF8.GetString((Invoke-WebRequest -Uri "https://bacpv.com/speedtest.ps1" -UseBasicParsing).Content))
Nếu gặp lỗi TLS/SSL, chạy lệnh này trước rồi chạy lại lệnh ở trên:
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
2) Cách khác (PowerShell 5+)
iwr https://bacpv.com/speedtest.ps1 | iex
Tải về và chạy:
Invoke-WebRequest -Uri "https://bacpv.com/speedtest.ps1" -OutFile speedtest.ps1
.\speedtest.ps1
Yêu cầu:
- PowerShell 5.0+
- Nên chạy Administrator để cài DiskSpd (khuyến nghị)
- Kết nối internet
Phân tích kết quả test
Chú thích quan trọng: MB/s và Mbps (tránh nhầm lẫn)
Nhiều người hay nhầm giữa tốc độ Disk và Network vì dùng đơn vị khác nhau:
- MB/s = Megabyte/giây (Byte) → thường dùng cho Disk (I/O)
- Mbps = Megabit/giây (bit) → thường dùng cho Network (ISP)
Quy đổi nhanh:
- 1 Byte = 8 bit
- 1 MB/s ≈ 8 Mbps
- 100 Mbps ≈ 12.5 MB/s
- 1 Gbps (1000 Mbps) ≈ 125 MB/s
Ví dụ:
- 121.76 Mbps ≈ 15.22 MB/s
- 1612 Mbps ≈ 201.50 MB/s
1) System Information (Kết quả mẫu)
CPU Model : Intel(R) Xeon(R) Platinum 8180 CPU @ 2.50GHz
CPU Cores : 4 cores, 4 threads
CPU Speed : 2494 MHz
Total RAM : 4.00 GB
Used RAM : 1.95 GB
Total Disk (C:) : 39.66 GB
Used Disk (C:) : 16.54 GB (41.71%)
OS : Microsoft Windows Server 2012 R2 Standard (6.3.9600)
Architecture : 64-bit
Uptime : 0d 3h 54m
Đánh giá:
- CPU 4 cores/4 threads: phù hợp web/app nhỏ, proxy, các service nhẹ.
- RAM 4GB, dùng ~49%: còn dư ổn, nhưng nếu chạy DB/cache lớn nên cân nhắc 8GB+.
- Disk dùng 41.71%: an toàn, còn dư nhiều.
- Windows Server 2012 R2: hệ điều hành cũ → chú ý TLS 1.2, update root certs khi cần.
2) Disk Speed Test (Kết quả mẫu)
2.1 Sequential Write
Run 1: 104.91 MB/s
Run 2: 105.28 MB/s
Run 3: 107.17 MB/s
📌 Trung bình: ~105.8 MB/s
2.2 Random I/O (DiskSpd)
Random Read (4K): 486.75 MB/s | 124608.76 IOPS
Random Write (4K): 19.48 MB/s | 4986.47 IOPS
Benchmark Disk (chuẩn hoá bảng)
Sequential Write Benchmark (MB/s)
| Loại ổ đĩa / Storage | Tốc độ ghi tuần tự thường gặp |
|---|---|
| HDD 7200rpm | 80 – 160 MB/s |
| SATA SSD | 400 – 550 MB/s |
| NVMe SSD | 1000 – 3500 MB/s |
| Cloud VPS (shared storage) | 100 – 500 MB/s |
| Cloud VPS (dedicated/local NVMe) | 500 – 2000+ MB/s |
Đánh giá kết quả mẫu (~105 MB/s):
- Mức này giống HDD hoặc VPS shared storage bị giới hạn throughput.
- Không giống SATA SSD/NVMe (SSD thường > 400 MB/s).
Random IOPS Benchmark (4K)
| Loại ổ đĩa / Storage | Random Read IOPS | Random Write IOPS |
|---|---|---|
| HDD 7200rpm | 80 – 120 | 60 – 100 |
| SATA SSD | 30,000 – 90,000 | 20,000 – 80,000 |
| NVMe SSD | 100,000 – 500,000+ | 80,000 – 400,000+ |
| Cloud VPS | 5,000 – 50,000 | 3,000 – 40,000 |
Đánh giá kết quả mẫu:
- Random Read ~124,608 IOPS: rất cao, gần mức NVMe entry/mid (hoặc backend có cache/read optimization).
- Random Write ~4,986 IOPS: thấp → dấu hiệu bị giới hạn write IOPS, hoặc shared storage quá tải.
Kết luận về Disk
Kết quả mẫu cho thấy Disk không cân bằng:
- Read rất mạnh
- Write yếu
Tác động thực tế:
- Web server/cache/proxy (đọc nhiều, ghi ít): vẫn ổn
- Database/logging/queue (ghi nhiều): dễ nghẽn I/O, tăng latency
Khuyến nghị:
- Nếu chạy DB → chọn VPS có local NVMe hoặc plan có cam kết IOPS write
- Nếu cần ổn định → hạn chế dùng shared storage dễ throttle
3) Network Speed Test (Kết quả mẫu)
3.1 International
Cloudflare : 121.76 Mbps
Linode US (Newark) : 18.56 Mbps
Vultr Singapore : 6.48 Mbps
Linode Tokyo : 46.4 Mbps
Đánh giá:
- Cloudflare khá tốt → phù hợp dùng CDN.
- US thấp → không phù hợp phục vụ traffic US/EU.
- Singapore rất thấp → routing/cap quốc tế không tốt (bất thường nếu bạn cần phục vụ khu vực SG).
- Tokyo ổn.
3.2 Domestic (Vietnam)
VNPT Ha Noi : 354 Mbps
Viettel : 1612.08 Mbps
FPT Ha Noi : 1527.04 Mbps
CMC Telecom : 644.4 Mbps
Đánh giá:
- Viettel/FPT > 1.5Gbps: xuất sắc.
- VNPT 354Mbps: tốt.
- CMC 644Mbps: tốt/khá.
➡️ Phù hợp triển khai website/app phục vụ người dùng Việt Nam.
Benchmark Network (chuẩn hoá bảng)
Benchmark tốc độ nội địa VN (Mbps)
| ISP / Tuyến | Mức tốt | Mức rất tốt | Mức xuất sắc |
|---|---|---|---|
| VNPT / Viettel / FPT / CMC | 50 – 200 Mbps | 200 – 800 Mbps | 800 Mbps – 2 Gbps+ |
4) Latency Test (Kết quả mẫu)
International:
Google DNS : 28 ms
Cloudflare DNS : 33 ms
US East : 250 ms
Singapore : 47.67 ms
Tokyo : 102 ms
Vietnam Domestic:
VNPT : 10 ms
Viettel : 1 ms
FPT : 1 ms
CMC : 1 ms
Đánh giá:
- Nội địa rất thấp (1–10ms) → cực tốt cho user VN.
- Singapore ~48ms → ổn.
- Tokyo ~102ms → trung bình.
- US East ~250ms → cao (không phù hợp realtime).
Benchmark Latency (chuẩn hoá bảng)
| Khoảng cách | Latency tốt | Latency chấp nhận | Latency cao |
|---|---|---|---|
| Local / Same DC | < 1 ms | 1 – 5 ms | > 5 ms |
| Same country | < 10 ms | 10 – 30 ms | > 30 ms |
| Same region (VN–SG) | < 40 ms | 40 – 80 ms | > 80 ms |
| Cross-continent (VN–US/EU) | < 150 ms | 150 – 250 ms | > 250 ms |
Kết luận tổng thể (dựa theo kết quả mẫu)
✅ Điểm mạnh:
- Network nội địa cực tốt (354Mbps – 1.6Gbps), latency thấp → rất phù hợp phục vụ user Việt Nam.
- Random Read IOPS cao → tốt cho workload đọc nhiều.
⚠️ Điểm yếu:
- Sequential write thấp (~105 MB/s) → giống HDD/shared storage.
- Random Write rất thấp (~5k IOPS) → không phù hợp workload ghi nhiều.
🎯 Phù hợp cho:
- Reverse proxy, CDN edge, cache server
- Web server phục vụ user Việt Nam
- Workload đọc nhiều, ghi ít
🚫 Không lý tưởng cho:
- Database ghi nhiều (MySQL/Postgres), analytics, ELK/logging-heavy
- Storage workload cần write throughput cao
Khuyến nghị:
- Nếu chạy DB → chọn VPS có local NVMe hoặc plan có cam kết IOPS write
- Nếu cần ổn định → tránh shared storage dễ throttle
Use Cases thực tế
1) So sánh VPS providers
# VPS A
curl -Lso- bacpv.com/speedtest.sh | bash > vps-a-result.txt
# VPS B
curl -Lso- bacpv.com/speedtest.sh | bash > vps-b-result.txt
# Compare
diff vps-a-result.txt vps-b-result.txt
Chỉ số nên so sánh:
- Disk IOPS (đặc biệt write IOPS nếu chạy DB)
- Network speed đến tập người dùng mục tiêu
- Latency đến region cần phục vụ
2) Troubleshooting hiệu năng
Disk chậm:
Sequential Write: 45 MB/s
Random IOPS: 800
→ Có thể do disk full, I/O wait cao, hoặc shared storage quá tải.
→ Kiểm tra df -h, iostat, xem process ghi nhiều.
Network chậm đến Vietnam:
Viettel: 5 Mbps
FPT: 8 Mbps
→ Server ở nước ngoài, routing không tối ưu hoặc bị throttle.
→ Dùng CDN có edge VN hoặc chuyển server về VN.
Latency cao bất thường:
Gateway: 15 ms
→ Provider network có vấn đề hoặc congestion.
→ Kiểm tra mtr/traceroute, liên hệ support.
3) Kiểm tra sau upgrade
# Trước upgrade
curl -Lso- bacpv.com/speedtest.sh | bash > before-upgrade.txt
# Sau upgrade
curl -Lso- bacpv.com/speedtest.sh | bash > after-upgrade.txt
4) Monitoring định kỳ (cron)
# Chạy lúc 3:00 sáng hàng ngày
0 3 * * * curl -Lso- bacpv.com/speedtest.sh | bash >> /var/log/speedtest-daily.log 2>&1
Tips và Best Practices
1) Chạy test nhiều lần
- Chạy ít nhất 3 lần vào các thời điểm khác nhau
- Loại bỏ outliers (kết quả bất thường)
- Lấy trung bình để có kết quả chính xác
2) Chạy vào giờ thấp điểm
- Network test nên chạy khi traffic thấp (2–5 giờ sáng)
- Tránh chạy khi server đang load cao
3) So sánh với baseline
- Lưu kết quả lần đầu làm baseline
- Alert khi hiệu năng giảm > 30% so với baseline
4) Hiểu giới hạn của provider
- Mỗi plan có bandwidth limit
- Shared storage có thể bị giới hạn IOPS/throughput
- Không kỳ vọng vượt spec của plan
Troubleshooting
Script không chạy được (Linux)
which curl
Nếu không có curl, cài thủ công:
sudo apt install curl -y # Ubuntu/Debian
sudo yum install curl -y # CentOS/RHEL
Dependencies không tự động cài (Linux)
Ubuntu/Debian:
sudo apt update
sudo apt install curl dnsutils fio -y
CentOS/RHEL:
sudo yum install curl bind-utils fio -y
Cài DiskSpd thủ công (Windows)
Qua winget (khuyến nghị):
winget install Microsoft.DiskSpd
Tổng kết
Speedtest Script là một công cụ “snapshot” nhanh để đánh giá hiệu năng VPS/Server theo 3 nhóm chính: System (CPU/RAM/Disk), Disk (Sequential + Random IOPS) và Network (Speed + Latency). Khi đọc kết quả, cần đặc biệt chú ý sự khác nhau giữa MB/s (Disk) và Mbps (Network) để tránh nhầm lẫn.
Từ kết quả mẫu minh hoạ:
- Network nội địa Việt Nam rất mạnh và latency thấp → phù hợp triển khai website/app phục vụ người dùng trong nước.
- Random Read IOPS cao nhưng Random Write IOPS thấp → phù hợp workload đọc nhiều/ghi ít (proxy/cache/web), nhưng không lý tưởng cho database hoặc hệ thống ghi log nhiều nếu cần độ ổn định I/O.
Để đánh giá chính xác, nên:
- Chạy test nhiều lần ở các thời điểm khác nhau,
- Lưu kết quả làm baseline,
- So sánh theo đúng loại storage và nhu cầu workload thực tế (web/cache vs database/logging),
- Kết hợp thêm monitoring (Netdata/Prometheus) để theo dõi dài hạn.
Tham khảo thêm
- Script source code
- Linux system monitoring
- Network troubleshooting
- Disk performance tuning
Xem thêm: