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:
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ả:
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 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 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 độ 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 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ả:
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ả:
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
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ả:
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ả:
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.










