Operations

Benchmark hiệu năng VPS với fio, sysbench, iperf3

Vừa order một VPS mới và cần biết con server đó thực sự mạnh tới đâu, chứ không chỉ tin vào thông số config? Hay bạn đang so sánh các gói thuê VPS khác nhau để chọn ra cái phù hợp với workload của mình? Dùng fio cho disk, sysbench cho CPU/RAM và iperf3 cho network là bộ ba tool benchmark "cứng" mà bất kỳ sysadmin nào cũng nên biết. Bài này hướng dẫn bạn chạy chúng, đọc kết quả và hiểu ý nghĩa thực tế, áp dụng trên Ubuntu 24.04 LTS với quyền root.

Yêu cầu trước khi bắt đầu

  • VPS chạy Ubuntu 24.04 LTS hoặc Debian 12 (lệnh tương tự).
  • Quyền root hoặc sudo.
  • Kết nối SSH ổn định.
  • Kiến thức cơ bản về dòng lệnh Linux.
  • Không có tiến trình nào đang chiếm toàn bộ CPU/Disk trong lúc benchmark.

Vì sao cần benchmark VPS?

Thông số cho thuê như "vCPU, 4GB RAM, 80GB NVMe" chỉ là phần nổi. Bộ xử lý Intel E5-2670 đời cũ chạy khác hẳn AMD EPYC 7003 series. Disk NVMe có IOPS thực tế thay đổi lớn khi bị noisy neighbor (VPS khác cùng host hút I/O). Băng thông network có thể bị giới hạn mềm. Benchmark ba thành phần kia giúp bạn có bức tranh khách quan trước khi giao phó workload, thay vì chạy production rồi mới ngỡ ngàng vì hiệu năng không như kỳ vọng.

Bước 1, Cài đặt fio, sysbench, iperf3

Cả ba đều có trong kho apt chính thức. Cập nhật package list và cài đặt một lần:

apt update
apt install fio sysbench iperf3 -y

Verify: Kiểm tra version từng tool đã sẵn sàng:

fio --version
sysbench --version
iperf3 --version

Output kỳ vọng: phiên bản xuất hiện, ví dụ fio-3.36, sysbench 1.0.20, iperf 3.16 (cJSON 1.7.15). Lỗi "command not found" nghĩa là cài chưa xong.

Bước 2, Benchmark disk với fio (đo IOPS và throughput)

fio là công cụ linh hoạt nhất để đo I/O. Hai metric quan trọng: IOPS (số thao tác đọc/ghi mỗi giây) và throughput (MB/s). Ta chạy hai bài test cơ bản: random read/write 4K (đo IOPS) và sequential read/write 1M (đo throughput tuyến tính).

Test 4K random read (chủ yếu đo IOPS)

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=4k --iodepth=64 --size=1G --readwrite=randread --numjobs=4
  • --bs=4k: kích thước block 4KB, mô phỏng workload database ngẫu nhiên.
  • --iodepth=64: số I/O chờ tối đa.
  • --size=1G: tổng dung lượng test 1GB.
  • --numjobs=4: 4 luồng chạy song song.

Đọc kết quả: Tìm dòng IOPS, con số này cho biết VPS của bạn có thể xử lý bao nhiêu thao tác đọc 4K mỗi giây. VPS NVMe thường đạt 30.000, 80.000 IOPS (random read). Dưới 10.000 IOPS là dấu hiệu disk HDD hoặc bị throttling.

Test 1M sequential read (đo throughput)

fio --randrepeat=1 --ioengine=libaio --direct=1 --gtod_reduce=1 --name=test --bs=1m --iodepth=64 --size=1G --readwrite=read --numjobs=4

Đọc kết quả: Tìm dòng BW= (Bandwidth), throughput tính bằng MB/s hoặc MiB/s. Ví dụ BW=1250MiB/s nghĩa là disk đọc tuần tự đạt ~1300 MB/s. VPS NVMe trung bình đạt 500-1500 MB/s tùy vào loại NVMe và mức độ overselling.

Lưu ý: Nếu disk đạt IOPS 4K random rất cao (trên 80K) nhưng sequential thấp (< 300 MB/s), có thể host đang dùng cache RAM để "ảo" IOPS. Hãy chạy file test 4GB hoặc 8GB thay vì 1GB để xóa bộ nhớ đệm.

fio --name=test --bs=4k --iodepth=64 --size=4G --readwrite=randread --numjobs=4 --ioengine=libaio --direct=1

Bước 3, Benchmark CPU với sysbench (đo events per second và latency)

sysbench CPU kiểm tra khả năng tính toán số nguyên tố, proxy tốt cho CPU compute-bound.

sysbench cpu run

Đọc kết quả: Dòng events per second: càng cao càng tốt. Một vCPU Intel Xeon 2.4GHz thường đạt 1800-2200 events/sec. VPS có 4 vCPU sẽ gấp 4 lần (vì sysbench mặc định chạy 1 thread).

Để chạy đúng với số vCPU thực, dùng tham số --threads:

sysbench cpu --threads=4 run

So sánh kết quả giữa chạy 1 thread và N threads: nếu N threads cho events/sec gần gấp N lần thì scaling rất tốt (kiến trúc CPU hiện đại). Nếu chỉ tăng 2-3 lần khi chạy 4 threads, có thể do hyper-threading ảo hoặc VPS bị giới hạn CPU credits.

Bước 4, Benchmark network với iperf3 (đo băng thông TCP/UDP)

iperf3 cần một server chạy ở đầu kia (thường là VPS khác hoặc máy trong cùng datacenter). Nếu không có, bạn có thể dùng server public của iperf.fr.

Băng thông TCP (phổ biến nhất)

Chạy server trên máy nhận (hoặc dùng server có sẵn tại iperf3.vi, thay bằng IP thật):

iperf3 -s

Trên VPS cần đo, chạy client:

iperf3 -c iperf3.vi -P 4 -t 30
  • -P 4: 4 luồng song song, đẩy băng thông lên tối đa.
  • -t 30: chạy 30 giây.

Đọc kết quả: Dòng cuối cùng [SUM] cho biết tổng throughput. VPS có băng thông trong nước không giới hạn thường đạt 800-950 Mbps trên gói VPS phổ thông (1Gbps port). Nếu chỉ đạt 100-200 Mbps, có thể port bị giới hạn hoặc đường truyền quốc tế chật.

Băng thông UDP (đo jitter và packet loss)

iperf3 -c iperf3.vi -u -b 100M -t 10
  • -u: giao thức UDP.
  • -b 100M: target bandwidth 100 Mbps.

Đọc kết quả: Chú ý dòng Jitter, lý tưởng dưới 1ms (mạng nội hạt). Packet loss nên là 0%. Nếu loss > 1%, mạng không ổn định cho ứng dụng real-time như VoIP hay game server.

Bảng tổng hợp các bài test benchmark

Thành phầnLệnh benchmarkMetric chínhGiá trị tham khảo (VPS NVMe/VPS thường)
Disk (IOPS)fio --bs=4k --readwrite=randread --size=1G --numjobs=4IOPS random read30K-80K (NVMe) / 2K-5K (HDD)
Disk (throughput)fio --bs=1m --readwrite=read --size=1G --numjobs=4MB/s sequential500-1500 MB/s (NVMe) / 80-200 MB/s (HDD)
CPUsysbench cpu --threads=1 runevents/sec1800-2200 (1 vCPU Xeon)
Network TCPiperf3 -c server -P 4 -t 30Mbps tổng800-950 Mbps (1Gbps port)
Network UDPiperf3 -c server -u -b 100M -t 10Jitter / loss< 1ms / 0%

Giải thích kết quả và các yếu tố ảnh hưởng

Kết quả benchmark không phải rất cao. Các yếu tố sau làm sai lệch:

  • Noisy neighbor: VPS khác trên cùng host vật lý đang chạy benchmark đồng thời. Chạy lại 2-3 lần vào giờ khác nhau để lấy giá trị trung bình.
  • CPU throttling do nhiệt: CPU host quá nóng sẽ giảm xung. Benchmark ngắn 30-60 giây không bị ảnh hưởng, nhưng benchmark kéo dài 5-10 phút sẽ thấy sự sụt giảm.
  • Disk cache: fio với file test nhỏ (1GB) có thể bị cache RAM làm sai lệch. Luôn dùng --direct=1 và tăng file size lên 4-8GB nếu nghi ngờ.
  • Kết nối iperf3: Server iperf3 ở xa (quốc tế) sẽ cho băng thông thấp hơn trong nước. Muốn đo băng thông thực của VPS, chạy iperf3 với server cùng datacenter.

Xử lý lỗi thường gặp

Lỗi: "fio: engine libaio not loadable"

Nguyên nhân: thiếu thư viện hoặc kernel không hỗ trợ libaio. Giải pháp: dùng ioengine posixaio thay thế, hoặc cài libaio-dev:

apt install libaio-dev -y

Lỗi: "iperf3: error - unable to connect to server"

Nguyên nhân: tường lửa chặn port 5201. Mở port trên VPS server:

ufw allow 5201/tcp
# hoặc nếu dùng firewalld:
firewall-cmd --add-port=5201/tcp --permanent && firewall-cmd --reload

Lỗi: sysbench CPU chạy rất chậm (dưới 500 events/sec)

Nguyên nhân: VPS bị giới hạn CPU credits, hoặc đang dùng CPU share rất thấp. Kiểm tra bằng lscpu xem có bao nhiêu vCPU thật. Nếu chỉ có 1 vCPU và chạy chậm, đó là giới hạn của gói. Liên hệ nhà cung cấp để nâng cấp.

Câu hỏi thường gặp

Nên benchmark trước hay sau khi mua VPS?

Trước khi mua, bạn chưa có VPS để chạy. Thay vào đó, xem benchmark độc lập từ cộng đồng hoặc yêu cầu nhà cung cấp trial/test drive. Sau khi mua, luôn benchmark để xác minh hiệu năng thực tế.

Có tool nào chạy benchmark tự động tổng hợp không?

Có, script như bench.sh của tedchou hoặc speedtest-cli + unixbench. Nhưng chúng thường không linh hoạt. fio/sysbench/iperf3 cho bạn kiểm soát từng tham số và hiểu rõ bottleneck.

Benchmark disk lâu quá, có cách nào tăng tốc không?

Giảm --size xuống 256MB và thời gian test xuống 30 giây: thêm --time_based --runtime=30 vào lệnh fio. Độ chính xác giảm nhưng đủ để so sánh nhanh.

Tôi mua VPS Linux, kết quả benchmark có khác VPS Windows không?

VPS Windows thường tốn thêm tài nguyên cho giao diện và services nền (Windows Defender, Update). Kết quả CPU và disk trên cùng phần cứng vật lý sẽ thấp hơn 5-15% so với Linux. Nếu cần hiệu năng tối đa, hãy chọn VPS Linux.

Kết quả benchmark quá thấp so với quảng cáo, tôi nên làm gì?

Kiểm tra lại bằng cách chạy benchmark với file lớn hơn (4GB), tắt các service không cần thiết. Nếu vẫn thấp, gửi log benchmark cho nhà cung cấp và yêu cầu giải thích. Một số nhà cung cấp VPS giá rẻ có thể oversell, bạn nên cân nhắc nâng cấp lên gói cao hơn hoặc chuyển nhà cung cấp uy tín hơn.

Bài viết liên quan

Lưu ý: Bài viết mang tính tham khảo, tổng hợp kiến thức chung. Mỗi hệ thống, hạ tầng và nhu cầu có đặc thù riêng, nên kiểm thử trong môi trường an toàn và tham vấn kỹ sư trước khi triển khai thực tế.