IOPS là gì? Vì sao IOPS quyết định tốc độ web và database

Chia sẻ bài viết

Mục lục

Trả lời nhanh: IOPS viết tắt của Input Output Operations Per Second, tức số thao tác đọc ghi ổ đĩa thực hiện được trong một giây. Chỉ số này quan trọng hơn tốc độ MB/s với hầu hết ứng dụng web, vì database và mã nguồn đọc ghi rất nhiều mẩu dữ liệu nhỏ nằm rải rác chứ không đọc một file lớn liên tục. Ổ NVMe đạt 400.000 tới 700.000 IOPS đọc ngẫu nhiên, SSD SATA khoảng 80.000 tới 100.000, còn ổ cứng cơ chỉ 100 tới 200. Đo IOPS trên VPS bằng lệnh fio.

Nhiều bảng giá VPS khoe tốc độ 3.500 MB/s nghe rất kêu, nhưng con số đó gần như không liên quan tới việc website của bạn phản hồi nhanh hay chậm. Thứ quyết định là IOPS, và bài này giải thích vì sao.

Tóm tắt nhanh
  • IOPS đo số thao tác đọc ghi mỗi giây, phản ánh đúng cách database và ứng dụng web truy cập ổ đĩa.
  • Có hai loại: tuần tự và ngẫu nhiên. Ứng dụng thật gần như luôn là ngẫu nhiên.
  • Chỉ số MB/s chỉ có ý nghĩa khi copy file lớn, không phản ánh trải nghiệm người dùng web.
  • Đo bằng fio, và đọc thêm chỉ số độ trễ chứ đừng chỉ nhìn IOPS.

IOPS tuần tự và IOPS ngẫu nhiên

Đọc tuần tự là khi dữ liệu nằm liền nhau, ví dụ copy một file video 4GB. Ổ đĩa chỉ việc đọc một mạch từ đầu tới cuối nên con số MB/s rất đẹp.

Đọc ngẫu nhiên là khi dữ liệu nằm rải rác khắp nơi. Một truy vấn MySQL tra bảng có chỉ mục sẽ nhảy tới vài chục vị trí khác nhau, mỗi lần lấy một mẩu vài KB. Website tải một trang có thể phát sinh hàng trăm thao tác kiểu này. Đây mới là điều xảy ra suốt ngày trên máy chủ thật, và cũng là chỗ ổ NVMe bỏ xa SSD SATA.

Cách đo IOPS trên VPS

Cài công cụ fio rồi chạy phép đo đọc ghi ngẫu nhiên khối 4KB, đúng kiểu database hay làm:

sudo apt install fio -y
fio --name=test --filename=/tmp/fiotest --size=1G \
    --rw=randrw --rwmixread=70 --bs=4k --iodepth=32 \
    --numjobs=4 --runtime=60 --time_based --group_reporting

Kết quả trả về hai nhóm số cần chú ý: IOPSlat tức độ trễ. Nhớ xoá file test sau khi đo bằng rm /tmp/fiotest để không chiếm dung lượng.

Một lưu ý về tính trung thực: đo trên máy ảo luôn cho con số thấp hơn phần cứng trần vì còn lớp ảo hoá và còn khách khác dùng chung máy chủ. Điều nên so là tương quan giữa các nhà cung cấp chứ không phải so với thông số nhà sản xuất ổ.

Bao nhiêu IOPS là đủ

Loại ứng dụngIOPS thường cầnGhi chú
Blog, landing page ít truy cậpvài trămSSD thường dư sức
Website doanh nghiệp, tin tứcvài nghìnSSD tốt hoặc NVMe
Sàn thương mại điện tửhàng chục nghìnNên dùng NVMe
Database nhiều ghi, log, cachehàng trăm nghìnNVMe là bắt buộc

Con số chỉ mang tính tham chiếu vì còn phụ thuộc cách viết ứng dụng. Một website tối ưu tốt chạy nhẹ hơn nhiều so với website cùng lượng truy cập nhưng thiếu bộ nhớ đệm và thiếu chỉ mục database.

Đừng chỉ nhìn IOPS, hãy nhìn cả độ trễ

Hai ổ cùng cho 100.000 IOPS nhưng một ổ trả kết quả trong 40 micro giây còn ổ kia mất 300 micro giây thì trải nghiệm rất khác. Độ trễ mới là thứ người dùng cảm nhận, nhất là khi một trang web phải chờ hàng trăm thao tác nối tiếp nhau.

Ngoài ra nên xem độ ổn định: nhiều ổ phổ thông cho IOPS cao trong vài chục giây đầu rồi tụt mạnh khi bộ nhớ đệm đầy và nhiệt độ tăng. Ổ chuẩn doanh nghiệp giữ được mức ổn định khi chạy liên tục, và đó chính là kịch bản của máy chủ.

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

IOPS quan trọng hơn hay MB/s quan trọng hơn?

Với web và database thì IOPS quan trọng hơn nhiều. Chỉ số MB/s chỉ phản ánh việc đọc ghi file lớn liên tục, còn ứng dụng thật đọc ghi rất nhiều mẩu nhỏ nằm rải rác, đó là việc của IOPS.

Đo IOPS trên VPS bằng gì?

Dùng công cụ fio với chế độ randrw khối 4KB. Nhớ đo trong khoảng thời gian đủ dài, ít nhất 60 giây, để thấy được cả trường hợp ổ bị tụt tốc chứ không chỉ vài giây đầu.

Vì sao IOPS đo trên VPS thấp hơn thông số nhà sản xuất?

Vì có thêm lớp ảo hoá và vì tài nguyên ổ đĩa chia sẻ với các máy ảo khác trên cùng máy chủ. Điều nên so sánh là tương quan giữa các nhà cung cấp, không phải so với con số phần cứng trần.

IOPS thấp thì biểu hiện ra sao?

Website chậm vào giờ cao điểm dù CPU và RAM vẫn còn dư, truy vấn database lâu hơn bình thường, chỉ số I/O wait trong lệnh top tăng cao. Đó là dấu hiệu ổ đĩa đang là nút thắt.

Hạ tầng NVMe Enterprise của TND
VPS ổ Enterprise U.2 NVMe, CPU xung cao, đặt tại Việt Nam
Truy vấn SQL, PHP dựng trang, build Next.js hay đóng gói app iOS và Android: phần lớn các bước này chạy đơn luồng và đập liên tục vào ổ đĩa. Nghẽn nằm ở tốc độ đọc ghixung nhịp CPU, không phải ở việc có thật nhiều nhân. Ổ Enterprise U.2 NVMe chuẩn máy chủ chạy RAID 10 cho IOPS đọc ghi ngẫu nhiên gấp 5 đến 7 lần ổ SATA SSD, khác hẳn NVMe M.2 phổ thông. Chạy trên chip Intel Xeon Platinum dòng xung cao, backup tự động hàng tuần, bàn giao trong 5 phút.
Xem VPS Enterprise U.2 NVMe RAID 10, CPU xung cao

Bài viết liên quan