Chuyển tới nội dung chính

Speedtest Script - Hướng dẫn chi tiết

Script kiểm tra hiệu năng server toàn diện với khả năng tự động cài đặt dependencies và chạy trên cả Linux lẫn Windows.

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ặc DiskSpd (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

Chạy trực tiếp (khuyến nghị):

iwr bacpv.com/speedtest.ps1 | iex

Hoặc dùng lệnh đầy đủ:

Invoke-Expression (Invoke-WebRequest -Uri "https://bacpv.com/speedtest.ps1" -UseBasicParsing).Content

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+ (Windows 10+ có sẵn)
  • Chạy as Administrator để cài đặt DiskSpd (khuyến nghị)
  • Kết nối internet

Hiểu kết quả test

System Information

CPU Model:            Intel(R) Xeon(R) CPU E5-2680 v4 @ 2.40GHz
CPU Cores: 8 cores
CPU Frequency: 2400 MHz
Total RAM: 15.79 GB
Used RAM: 8.24 GB
Total Disk (C:): 223.46 GB
Used Disk (C:): 197.41 GB (88.35%)
Operating System: Ubuntu 22.04 LTS
Public IP: 160.191.101.63

Đánh giá:

  • CPU: Số cores/threads cao → xử lý tốt multi-tasking
  • RAM Used: < 80% → Tốt, > 90% → Cân nhắc upgrade
  • Disk Used: < 80% → An toàn, > 90% → Nguy cơ đầy ổ đĩa
  • Public IP: Xác định vị trí server và ISP

Disk Speed Test

Sequential Write (dd)

Sequential Write (dd):
Run 1: 520 MB/s
Run 2: 480 MB/s
Run 3: 465 MB/s

Benchmark so sánh:

Loại ổ đĩaTốc độ ghi thông thường
HDD 7200rpm80-160 MB/s
SATA SSD400-550 MB/s
NVMe SSD1000-3500 MB/s
Cloud VPS (shared)100-500 MB/s
Cloud VPS (dedicated)500-2000 MB/s

Đánh giá kết quả:

  • < 100 MB/s: HDD hoặc VPS shared storage chậm
  • 100-500 MB/s: SATA SSD hoặc VPS tốt
  • 500-1000 MB/s: SATA SSD nhanh hoặc NVMe entry
  • > 1000 MB/s: NVMe SSD hiệu năng cao

Random I/O (fio/diskspd)

Random I/O Test (fio):
Read: 234.5 MB/s | 60032 IOPS
Write: 189.2 MB/s | 48435 IOPS

Benchmark IOPS:

Loại ổ đĩaRandom Read IOPSRandom Write IOPS
HDD 7200rpm80-12060-100
SATA SSD30,000-90,00020,000-80,000
NVMe SSD100,000-500,000+80,000-400,000+
Cloud VPS5,000-50,0003,000-40,000

Đánh giá:

  • < 5,000 IOPS: Hiệu năng thấp, không phù hợp database
  • 5,000-30,000 IOPS: Đủ dùng cho web server, small database
  • 30,000-100,000 IOPS: Tốt cho database, high-traffic applications
  • > 100,000 IOPS: Xuất sắc, phù hợp enterprise workloads

Lưu ý: IOPS quan trọng hơn throughput cho database và ứng dụng có nhiều small random operations.

Network Speed Test

International Servers

Server                         IP Address           Speed
─────────────────────────────────────────────────────────────────
CloudFlare CDN 162.159.140.220 19.2 MB/s
Linode US (Newark) 96.126.123.45 5.8 MB/s
Vultr Singapore 45.32.101.23 6.3 MB/s
Linode Tokyo 139.162.65.37 22.1 MB/s

Đánh giá theo vị trí server:

Server tại Việt Nam:

  • CloudFlare CDN: 10-50 MB/s (tốt, có edge server gần)
  • Singapore: 5-20 MB/s (tốt, khoảng cách địa lý gần)
  • Tokyo: 8-25 MB/s (tốt)
  • US/EU: 3-10 MB/s (chấp nhận được)

Server tại Singapore:

  • CloudFlare CDN: 50-200 MB/s
  • Singapore local: 50-300 MB/s
  • Tokyo: 20-80 MB/s
  • Vietnam: 5-30 MB/s

Server tại US/EU:

  • CloudFlare CDN: 100-500 MB/s
  • US/EU local: 100-1000 MB/s
  • Asia: 5-50 MB/s

Vietnam Domestic Servers

Server                         IP Address           Speed
─────────────────────────────────────────────────────────────────
VNPT Ha Noi 113.164.16.66 103.2 MB/s
Viettel 27.68.226.129 410.5 MB/s
FPT Ha Noi 118.70.115.12 343.8 MB/s
CMC Telecom 101.99.5.8 41.7 MB/s

Đánh giá (cho server tại Việt Nam):

  • Viettel/FPT: 200-500 MB/s → Xuất sắc (backbone tốt)
  • VNPT: 50-150 MB/s → Tốt
  • CMC: 30-80 MB/s → Trung bình
  • < 30 MB/s: Kém, có thể bị throttle hoặc routing không tối ưu

Lưu ý: Tốc độ cao với domestic ISPs quan trọng cho website phục vụ user Việt Nam.

Latency Test

International:
Google DNS: 2.3 ms
CloudFlare DNS: 1.8 ms
US East: 185.4 ms
Singapore: 33.2 ms
Tokyo: 68.5 ms

Vietnam Domestic:
VNPT: 0.8 ms
Viettel: 1.2 ms
FPT: 2.1 ms
CMC: 10.3 ms
Gateway: 0.3 ms

Benchmark latency:

Khoảng cáchLatency tốtLatency chấp nhậnLatency cao
Local/Same DC< 1 ms1-5 ms> 5 ms
Same country< 10 ms10-30 ms> 30 ms
Same region (VN-SG)< 40 ms40-80 ms> 80 ms
Cross-continent< 150 ms150-250 ms> 250 ms

Ảnh hưởng của latency:

  • < 50 ms: Xuất sắc cho real-time apps (gaming, video call)
  • 50-100 ms: Tốt cho web browsing, API calls
  • 100-200 ms: Chấp nhận được cho web thông thường
  • > 200 ms: User có thể cảm nhận lag, không phù hợp real-time

Ứng dụng thực tế:

  • Website phục vụ VN: Chọn server VN (latency < 10ms với ISPs VN)
  • API phục vụ toàn cầu: Chọn Singapore (latency cân bằng với châu Á)
  • App phục vụ US/EU: Chọn server tại US/EU

Use Cases thực tế

1. So sánh VPS providers

Chạy speedtest trên nhiều VPS khác nhau để so sánh:

# 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

So sánh chỉ số quan trọng:

  • Disk IOPS (cho database)
  • Network speed đến target audience
  • Latency đến target regions

2. Troubleshooting hiệu năng

Disk chậm:

Sequential Write: 45 MB/s (thấp bất thường)
Random IOPS: 800 (rất thấp)

→ Nguyên nhân: Disk đang full, có I/O wait cao, hoặc shared storage bị overload → Giải pháp: Kiểm tra df -h, iostat, xem có process nào đang ghi nhiều

Network chậm đến Vietnam:

Viettel: 5 MB/s (thấp)
FPT: 8 MB/s (thấp)

→ Nguyên nhân: Server ở nước ngoài, routing không tối ưu → Giải pháp: Dùng CDN có edge server tại VN hoặc chuyển server về VN

Latency cao:

Gateway: 15 ms (cao bất thường)

→ Nguyên nhân: Network của VPS provider có vấn đề → Giải pháp: Liên hệ support hoặc đổi provider

3. Kiểm tra sau upgrade

Chạy speedtest trước và sau khi upgrade hardware:

# Trước upgrade
curl -Lso- bacpv.com/speedtest.sh | bash > before-upgrade.txt

# Sau upgrade SSD → NVMe
curl -Lso- bacpv.com/speedtest.sh | bash > after-upgrade.txt

So sánh để xác nhận hiệu quả của upgrade.

4. Monitoring định kỳ

Thêm vào cron job để chạy hàng ngày:

# 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

Phát hiện sớm sự suy giảm hiệu năng theo thời gian.

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ỏ kết quả bất thường (outliers)
  • 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)
  • Disk test có thể chạy bất kỳ lúc nào
  • Tránh chạy khi server đang load cao

3. So sánh với baseline

  • Lưu lại kết quả lần đầu làm baseline
  • Định kỳ so sánh để phát hiện degradation
  • Alert khi hiệu năng giảm > 30% so với baseline

4. Kết hợp với monitoring tools

  • Speedtest cho snapshot tại 1 thời điểm
  • Dùng Netdata/Prometheus cho continuous monitoring
  • Speedtest để verify khi có alert từ monitoring

5. Hiểu giới hạn của provider

  • Mỗi VPS plan có bandwidth limit
  • Shared storage có IOPS limit
  • Không kỳ vọng vượt quá spec của plan

Troubleshooting

Script không chạy được

Linux:

# Kiểm tra curl
which curl

# Nếu không có, cài thủ công
sudo apt install curl -y # Ubuntu/Debian
sudo yum install curl -y # CentOS/RHEL

Windows:

# Kiểm tra PowerShell version
$PSVersionTable.PSVersion

# Nếu < 5.0, update PowerShell
# Download từ: https://aka.ms/pscore

Dependencies không tự động cài

Linux - Cài thủ công:

# Ubuntu/Debian
sudo apt update
sudo apt install curl dnsutils fio -y

# CentOS/RHEL
sudo yum install curl bind-utils fio -y

Windows - Cài DiskSpd thủ công:

# Qua winget (khuyến nghị)
winget install Microsoft.DiskSpd

# Hoặc download từ GitHub
# https://github.com/microsoft/diskspd/releases

Kết quả không chính xác

  • Disk speed thấp: Server đang busy, chạy lại sau
  • Network speed thấp: ISP đang throttle, thử đổi DNS
  • Latency cao: Routing issue, kiểm tra mtr hoặc traceroute

Kết luận

Speedtest script là công cụ hữu ích để:

  • ✅ Đánh giá nhanh hiệu năng server
  • ✅ So sánh các VPS providers
  • ✅ Phát hiện vấn đề về disk/network
  • ✅ Monitoring định kỳ

Nhớ:

  • Chạy nhiều lần để có kết quả chính xác
  • So sánh với benchmark phù hợp loại server
  • Kết hợp với tools khác cho monitoring toàn diện

Tham khảo thêm