Khi vượt số yêu cầu ổ đĩa xử lý được trong 1 giây, hàng đợi dài ra và độ trễ tăng vọt.
Vì sao Yêu cầu đọc, ghi tiến sát khả năng xử lý của ổ đĩa → Dẫn đến Hàng đợi dài ra (thường tăng vọt khi mức sử dụng từ 90% trở lên) → Trên màn hình Lưu và loading bị chậm, nếu là lời gọi đồng bộ thì đứng hình
Phụ trách chính Hạ tầng server (Đội hạ tầng) · Phối hợp Phát triển server (Đội phát triển game), Hạ tầng DB (Đội hạ tầng)
Việc cần làm (Đội phát triển game)
Gộp yêu cầu, cache dữ liệu hay đọc, chuyển sang bất đồng bộ để thread game không phải chờ ổ đĩa.
Việc cần làm (Đội hạ tầng)
Thiết bị server·OS: ổ đĩa nhanh hơn, kiểm tra giới hạn băng thông ổ đĩa và IOPS theo loại instance, cảnh báo mức sử dụng và hàng đợi ổ đĩa, sao chép file lớn vào giờ vắng. Thiết bị DB: cảnh báo cả mức sử dụng IOPS và thông lượng của ổ đĩa DB, kiểm tra giới hạn ổ đĩa theo cấu hình instance DB.
Con số tham khảo
HDD khoảng 150, SATA SSD vài chục nghìn, NVMe vài trăm nghìn IOPS. Ổ đĩa mặc định trên cloud (AWS gp3) đạt 3.000 IOPS và 125 MiB mỗi giây. Giới hạn lượng truyền mỗi giây tách riêng khỏi IOPS, và khi việc sao chép file lớn lấp đầy nó thì cả những lần ghi nhỏ cũng bị dồn lại.
Trên đồ thị
Chạm giới hạn rồi đi ngang · IOPS, độ dài hàng đợi ổ đĩa
Chỗ cần xem
Xem r/s, w/s, rkB/s, wkB/s, aqu-sz, r_await, w_await của iostat -x 1. Trên cloud, xem VolumeReadOps, VolumeWriteOps, VolumeQueueLength của EBS và các chỉ số vượt giới hạn VolumeIOPSExceededCheck, VolumeThroughputExceededCheck, phía instance là InstanceEBSIOPSExceededCheck, InstanceEBSThroughputExceededCheck
Đúng nếu
số yêu cầu mỗi giây hoặc lượng truyền đi ngang ở đúng giá trị giới hạn, aqu-sz và await cùng tăng vọt. Trên cloud, chỉ số kiểm tra vượt giới hạn bằng 1
Loại trừ nếu
%util 100% mà await vẫn thấp → có thể vẫn còn dư. Với SSD và RAID xử lý song song nhiều yêu cầu, %util không thể hiện giới hạn. Chưa chạm giới hạn mà chỉ await cao → độ trễ của bản thân ổ đĩa (dk-hdd) hoặc fsync (dk-fsync)
Cách kiểm tra
Kiểm tra bằng công cụ hạ tầng (không cần code game)
Tìm hiểu thêm
Trên cloud, ngoài giới hạn của ổ đĩa, mỗi cấu hình server (loại instance) còn có giới hạn băng thông ổ đĩa và IOPS riêng. Dù gắn ổ đĩa đắt tiền, nếu server nhỏ thì vẫn bị chặn ở giới hạn của instance.
Nguồn
Exos X18 Data SheetSeagate HDD 7.200 rpm cho server đọc ngẫu nhiên 4K đạt 170 IOPS (QD16)
D3-S4520 SSDSolidigm SATA SSD cho server đọc, ghi ngẫu nhiên 4 KB tối đa 92K/48K IOPS
iostat(1) — Linux manual pagesysstat -x: r/s, w/s, rkB/s, wkB/s, aqu-sz (tên cũ là avgqu-sz), r_await, w_await, %util. Với RAID và SSD đời mới xử lý song song nhiều yêu cầu, %util không thể hiện giới hạn hiệu năng
Amazon CloudWatch metrics for Amazon EBSAWS VolumeIOPSExceededCheck, VolumeThroughputExceededCheck: bằng 1 nếu đã cố vượt giới hạn IOPS hoặc thông lượng của volume (instance Nitro), VolumeQueueLength