Kiểm tra hiệu suất IOPS

Tổng quan

Để kiểm tra hiệu suất IOPS (Input/Output Operations Per Second) trên một Volume, bạn có thể sử dụng công cụ fio.

Cảnh báo

  • Việc thực hiện kiểm tra hiệu suất IOPS có thể gây ảnh hưởng tới Volume của bạn. Chúng tôi khuyên bạn nên sao lưu dữ liệu bằng cách tạo snapshot của Volume hoặc tạo Volume mới không chứa dữ liệu để thử nghiệm. Để biết thêm thông tin, hãy xem phần Snapshot.

Các bước thực hiện

Bên dưới là hướng dẫn chi tiết và kết quả mẫu cho 3 bài test kiểm tra hiệu suất IOPS Read và Write đồng thời, chỉ Read, chỉ Write vào Volume. Cụ thể, một số cấu hình chúng tôi sử dụng như sau:

  • Region: HCM-03

  • OS Images: Ubuntu

  • Ubuntu Version: 1_Ubuntu-22.04x64

  • Instance: s-general-4x8

  • Volume Type: NVME

  • IOPS: 5000 và 10000

  • Volume Size: 100 GB

Kiểm tra hiệu suất đồng thời random read & random write

  1. Tạo một server với ổ đĩa Volume loại NVME với IOPS 5000 tại trang chủ vServer:

  1. Kết nối vào Server của bạn. Để biết thêm thông tin hãy xem hướng dẫn Kết nối vào máy chủ ảo.

  2. Chạy lệnh sau để cài đặt FIO:

  • Ubuntu/Debian:

  • CentOS/RHEL:

  1. Tạo 1 file 4GB, sau đó chạy câu lệnh bên dưới để thực hiện việc read/write đồng thời với blocksize 4KB theo tỉ lệ 75% – 25% (tức 3 read/1 write) và thực hiện đồng thời 64 tác vụ một lúc (Tỉ lệ 3:1 rất phổ biến và xấp xỉ với các dạng database hiện nay):

  • Với chỉ 1 job chạy, bạn có thể dùng lệnh:

  • Với 8 jobs chạy đồng thời, bạn có thể sử dụng:

Ngoài ra, bạn có thể thay đổi một vài thông số theo điều kiện mô tả bên dưới:

  • --randrepeat=1: Sử dụng cùng một seed ngẫu nhiên cho các bài kiểm tra.

  • --ioengine=libaio: Chỉ định I/O Engine, libaio (Linux asynchronous I/O) là một phương thức I/O không đồng bộ, phù hợp cho các bài kiểm tra hiệu suất I/O trên Linux.

  • --direct=1: Bỏqua bộ đệm của hệ điều hành (OS cache) khi thực hiện I/O.

  • --gtod_reduce=1:Giảm độ chính xác của timestamp (giảm số lần gọi gettimeofday), giúp giảm tác động đến hiệu suất và cải thiện tính chính xác của bài kiểm tra.

  • --name=TGS: Tên bài kiểm tra

  • --filename=TGS: Tên file kiểm tra

  • --iodepth=64: Độ sâu hàng đợi (queue depth) là 64, tức là tối đa 64 yêu cầu I/O có thể chờ xử lý cùng lúc.

  • --rwmixread=75: Tỷ lệ giữa đọc và ghi là 75:25.

  • --readwrite=randrw: Thực hiện đọc/ghi ngẫu nhiên.

  • --size=4G: Tổng kích thước dữ liệu cần kiểm tra.

  • --bs=blocksize=4k: Kích thước block (4KB là phổ biến để kiểm tra IOPS).

  • --numjobs=8: Số lượng job chạy đồng thời.

  1. Dưới đây là kết quả ghi nhận được (với cấu hình 4 core 8 GB)

  • Khi bạn thiết lập numjob = 1:

  • Khi bạn thiết lập numjob = 8:

Kết luận:

  • Khi tăng số lượng job (numjob=8), IOPS tổng (IOPS tổng hợp từ tất cả các job) đảm bảo đã đạt mức IOPS = 5000.

  • Với numjob=1, Read IOPS: 3748Write IOPS: 1252. Kết quả này đảm bảo đã đạt mức IOPS = 5000.

Kiểm tra hiệu suất random read

  1. Thực hiện các bước 1,2,3 tương tự trường hợp Kiểm tra hiệu suất đồng thời random read và random write.

  2. Tạo 1 file 4GB, sau đó chạy câu lệnh bên dưới để chỉ thực hiện việc read với blocksize 4KB theo tỉ lệ 100% (tức toàn bộ chỉ read) và thực hiện đồng thời 64 tác vụ một lúc:

  • Với chỉ 1 job chạy, bạn có thể dùng lệnh:

  • Với 8 jobs chạy đồng thời, bạn có thể sử dụng:

  1. Dưới đây là kết quả ghi nhận được:

  • Khi bạn thiết lập numjob = 1:

  • Khi bạn thiết lập numjob = 8:

Kết luận:

  • Khi tăng số lượng job (numjob=8), Read IOPS tổng (IOPS tổng hợp từ tất cả các job) đảm bảo đã đạt mức IOPS = 5000.

  • Với numjob=1, Read IOPS: 5002. Kết quả này đảm bảo đã đạt mức IOPS = 5000.

Kiểm tra hiệu suất random write

  1. Thực hiện các bước 1,2,3 tương tự trường hợp Kiểm tra hiệu suất đồng thời random read và random write. (Để tăng độ đa dạng, trong ví dụ này, tôi sẽ tăng IOPS của Volume này lên 10000 thay vì 5000, các cấu hình còn lại tôi giữ nguyên).

  2. Tạo 1 file 4GB, sau đó chạy câu lệnh bên dưới để chỉ thực hiện việc write với blocksize 4KB theo tỉ lệ 100% (tức toàn bộ chỉ write) và thực hiện đồng thời 64 tác vụ một lúc:

  • Với chỉ 1 job chạy, bạn có thể dùng lệnh:

  • Với 8 jobs chạy đồng thời, bạn có thể sử dụng:

  1. Dưới đây là kết quả ghi nhận được:

  • Khi bạn thiết lập numjob = 1:

  • Khi bạn thiết lập numjob = 8:

Kết luận:

  • Khi tăng số lượng job (numjob=8), Write IOPS tổng (IOPS tổng hợp từ tất cả các job) đảm bảo đã đạt mức IOPS = 10000.

  • Với numjob=1, Read IOPS: 10k. Kết quả này đảm bảo đã đạt mức IOPS = 10000.


Giám sát hiệu suất ổ đĩa bằng vMonitor Platform

Hiện tại, hệ thống vServer và vMonitor Platform đã tích hợp sẵn Dashboard giúp bạn quản lý các thông só của server của bạn (bao gồm cả thông số IOPS). Cụ thể, bạn có thể thực hiện theo các bước:

  1. Chọn mục Dashboard, sau đó chọn All VNG Cloud

  2. Tiếp tục tìm và chọn vào Dashboard chứa tên server của bạn, tên Dashboard này sẽ có định dạng: vServer-tên-server-xxxx

  1. Tại màn hình chi tiết Dashboard, bạn có thể thấy biểu đồ thể hiện thông số IOPS tại biểu đồ bên dưới:


Kết quả thử nghiệm kiểm tra hiệu suất ổ đĩa VNG Cloud

IO DEPTH
VOLUME TYPE
IOPS MAX
I/O READ
I/O WRITE
I/O READ+WRITE

64

SSD

3000

PASS

PASS

PASS

64

SSD

3200

PASS

PASS

PASS

64

SSD

6400

PASS

PASS

PASS

64

SSD

10000

PASS

PASS

PASS

64

SSD

iops-vng

Shared IOPS with other customer

Shared IOPS with other customer

Shared IOPS with other customer

64

NVME

5000

PASS

PASS

PASS

64

NVME

10000

PASS

PASS

PASS

64

NVME

20000

PASS

PASS

PASS

64

NVME

40000

PASS

PASS

PASS

64

NVME

60000

PASS

PASS

PASS

Last updated