Kiểm tra khả năng đọc, ghi RAM của VPS bằng sysbench

Chúng ta tiếp tục chuỗi bài viết liên quan đến sysbench bằng bài kiểm tra liên quan đến khả năng đọc & ghi RAM của VPS.

Đây cũng là bài kiểm tra quan trọng trong đánh giá toàn diện hiệu năng của VPS. Ở các bài trước chúng ta đã dùng sysbench để kiểm tra sức mạnh tính toán thô của CPU & tốc độ đọc ghi database của VPS.

Môi trường test:

  • VPS VULTR HP, 1GB RAM, CPU 1 lõi, AMD64;
  • OS: Ubuntu LTS 24.04;
  • Location: Nhật Bản.

Lưu ý: Chỉ test trên môi trường demo, không test trên VPS đã có website chính thức của bạn.

Các bước làm.


1. Cài sysbench

Nếu chưa cài, ta lặp lại thao tác liên quan đến cập nhật danh sách gói cho Ubuntu, và cài sysbench trên VPS Ubuntu.

Cập nhật danh sách gói:

sudo apt-get update

Cài sysbench trên VPS Ubuntu:

sudo apt-get install sysbench -y

2. Kiểm tra tốc độ ghi

Câu lệnh:

sysbench memory --memory-block-size=1K --memory-total-size=100G run

Giải thích:

  • memory: chỉ định sysbench kiểm tra RAM.
  • Cờ --memory-block-size: dùng để chỉ định kích thước khối dữ liệu có giá trị bao nhiêu.
  • 1K: tham số cụ thể cho kích thước khối dữ liệu, ý là 1 KiB.
  • Cờ --memory-total-size: dùng để chỉ định tổng dữ liệu truyền tải qua RAM.
  • 100G: tham số cụ thể cho tổng dữ liệu truyền tải, ý là 100 GiB.
  • run: chạy lệnh trên cấu hình đã thiết lập.

Ý nghĩa của các tham số:

  • 1K: là khối dữ liệu phù hợp để kiểm tra độ trễ (latency) phản hồi, & tần số truy cập. Khi tăng khối dữ liệu lên, ví dụ 1M (1MiB) hoặc 4M (4MiB) nó thiên về kiểm tra băng thông tối đa, hay tốc độ truyền tải của RAM.
  • Kiểm tra ở khối nhỏ (1K – 4K) nó giống với web khi thao tác với database.
  • 100G: con số rất lớn, nhưng phù hợp với tốc độ truyền tải của RAM. Các RAM hiện nay có tốc độ xử lý rất cao, từ 3 – 10GB/s.

Kết quả của lệnh trên:

Tốc độ ghi RAM, block 1 KiB
Tốc độ ghi RAM, block 1 KiB

Giải thích kết quả:

  • MiB transferred: tốc độ truyền dữ liệu, lên tới 6222,36 MiB/sec (hơn 6,2 GB/giây). Chú ý đơn vị MiB, nó cao hơn MB một chút. 1MiB = 2^20 byte (1.048.576 Byte, cao hơn 1MB = 1.000.000 Byte khoảng 4,8%). Chúng ta quen với MB & GB (sử dụng lũy thừa cơ số 10), còn MiB & GiB sử dụng lũy thừa cơ số 2. Tuy nhiên nếu không cần quá chính xác thì có thể coi gần tương đương.
  • Latency: báo cáo độ trễ. Trong trường hợp cụ thể này cho thấy hầu như rất thấp ở tất cả các hạng mục (điều này là tốt, vì như vậy có nghĩa là RAM phản hồi nhanh), mức độ 95th cũng vẫn ghi nhận rất thấp. Độ trễ tối đa 0,31 ms (1 s = 1000 ms). Ý nghĩa: min (độ trễ thấp nhất), avg (độ trễ trung bình), max (độ trễ cao nhất).
  • Tổng thời gian (total time) kiểm tra là 10s, đây là con số mặc định của sysbench.
  • Tổng các sự kiện (total number of events): 63.721.446 (hơn 63 triệu sự kiện).

Nếu muốn tăng thời gian kiểm tra, ta dùng cờ --time, tăng thời gian được xem là cho kết quả ổn định, đáng tin cậy hơn.

sysbench memory --memory-block-size=1K --memory-total-size=100G --time=30 run

Kết quả:

Tốc độ ghi RAM, block 1 KiB, thời gian test 30s.
Tốc độ ghi RAM, block 1 KiB, thời gian test tối đa 30s.

Kết quả cho thấy tốc độ nhỉnh hơn một chút: 6,3 GB/s. Vì tốc độ cao như vậy nên 100 GiB truyền tải chỉ hơn 16s là hết. Ở đây với các tham số được nhập vào như vậy, bất cứ điều kiện nào đến trước sẽ kết thúc lệnh (khi thời gian hoặc tổng khối lượng dữ liệu truyền tải đạt ngưỡng).

Kiểm tra với block cao hơn (1 MiB):

sysbench memory --memory-block-size=1M --memory-total-size=1000G run

Vì khối data block (–memory-block-size) tăng lên nhiều nên lượng dữ liệu truyền tải (–memory-total-size) được tăng thành 1000 GiB để bài test không kết thúc quá sớm.

Kết quả:

Tốc độ ghi RAM, block 1 MiB
Tốc độ ghi RAM, block 1 MiB

Tốc độ ghi khoảng 28 GB/s.


3. Kiểm tra tốc độ đọc

Mặc định sysbench kiểm tra tốc độ ghi RAM, nếu muốn kiểm tra tốc độ đọc, cần bổ sung thêm cờ --memory-oper với tham số read.

Câu lệnh:

sysbench memory --memory-block-size=1K --memory-total-size=100G --memory-oper=read run

Kết quả:

Tốc độ đọc RAM, block 1 KiB
Tốc độ đọc RAM, block 1 KiB

Tốc độ đọc khoảng 7,2 GB/s. Thường tốc độ đọc sẽ cao hơn ghi, vì nhiệm vụ đọc đơn giản hơn.

Thử tăng thời gian test (lên tối đa 30s) & tổng lưu lượng truyền tải (lên tối đa 200 GiB) để xem kết quả thế nào:

sysbench memory --memory-block-size=1K --memory-total-size=200G --memory-oper=read --time=30 run

Kết quả:

Tốc độ đọc RAM, block 1 KiB, thời gian test tối đa 30s.
Tốc độ đọc RAM, block 1 KiB, thời gian test tối đa 30s.

Tốc độ khoảng 7,34 GB/s, cao hơn trước một chút.

Kiểm tra với block 1 MiB:

Tốc độ đọc RAM, block 1 MiB
Tốc độ đọc RAM, block 1 MiB

Tốc độ đọc với khối 1 MiB lên tới 48 GB/s.


4. Kiểm tra tốc độ truy xuất ngẫu nhiên

Mặc định là sysbench kiểm tra tốc độ đọc ghi theo các khối dữ liệu tuần tự (sequential) trên RAM. Nó nhanh hơn nhưng phản ánh điều kiện lý tưởng.

Ngược lại, với test truy xuất ngẫu nhiên (random access), thì dữ liệu đọc ghi sẽ thực hiện thao tác này ngẫu nhiên (các địa chỉ đọc ghi phân tán) trên RAM. Điều kiện này phản ảnh tốc độ thực tế của ứng dụng trên VPS nhiều hơn điều kiện lý tưởng đọc ghi tuần tự.

Câu lệnh:

sysbench memory --memory-block-size=1K --memory-total-size=100G --memory-access-mode=rnd run

Kết quả:

Ghi ngẫu nhiên, 1 KiB, 10s
Ghi ngẫu nhiên, 1 KiB, 10s

Tốc độ vào khoảng 2,8 GB/s.

Tăng thời gian ghi ngẫu nhiên lên tối đa 30s:

sysbench memory --memory-block-size=1K --memory-total-size=100G --memory-access-mode=rnd --time=30 run

Kết quả:

Ghi ngẫu nhiên, 1 KiB, 30s
Ghi ngẫu nhiên, 1 KiB, 30s

Có vẻ ổn định khi vẫn duy trì tốc độ ghi 2,8 GB/s (chỉ tăng khoảng 20 MB).

Kiểm tra với đọc truy xuất ngẫu nhiên:

sysbench memory --memory-block-size=1K --memory-total-size=100G --memory-oper=read --memory-access-mode=rnd run
Đọc ngẫu nhiên, 1 KiB, 10s
Đọc ngẫu nhiên, 1 KiB, 10s

Tốc độ đọc ngẫu nhiên khoảng 2,8 GB/s (không cao hơn ghi).

Tăng lên 30s kiểm tra:

sysbench memory --memory-block-size=1K --memory-total-size=100G --memory-oper=read --memory-access-mode=rnd --time=30 run

Kết quả:

Đọc ngẫu nhiên, 1 KiB, 30s
Đọc ngẫu nhiên, 1 KiB, 30s

Nhận xét chung: Với truy xuất ngẫu nhiên, ở VPS này chúng ta thấy tốc độ đọc ghi giảm xuống đáng kể (50 – 60%). Độ trễ min, avg, 95th vấn rất tốt. Tuy nhiên max ghi nhận nhiều sự kiện cần hơn 100 ms để xử lý.


5. Kiểm tra với đa luồng

Bổ sung thêm cờ --threads và số luồng mong muốn.

Câu lệnh (với số luồng là 2):

sysbench memory --memory-block-size=1K --threads=2 --memory-total-size=100G run

Kết quả:

Kiểm tra lệnh ghi khối 1KiB đa luồng
Kiểm tra lệnh ghi khối 1 KiB, đa luồng

Nhận xét: Trên core một lõi, bổ sung thêm luồng không có cải thiện đáng kể nào.

Viết một bình luận