Batas IOPS dan antrean jenuh IOPS limit / queue saturation
ID penyebab dk-iops · Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game), Infrastruktur DB (Tim Infrastruktur)
Jika permintaan melebihi jumlah yang bisa diproses disk per detik, antrean memanjang dan latensi melonjak tajam.
Mengapa Permintaan baca dan tulis mendekati kemampuan proses disk → Akibatnya Antrean memanjang (biasanya melonjak tajam saat utilisasi 90% atau lebih) → Di layar Penyimpanan dan loading tertunda; jika pemanggilannya sinkron, terjadi freeze
Saat banyak pemain berkumpul, Jam sibuk malam hari
Penanggung jawab
Penanggung jawab utama Infrastruktur server (Tim Infrastruktur) · Turut terlibat Pengembangan server (Tim Pengembang Game), Infrastruktur DB (Tim Infrastruktur)
Tugas Tim Pengembang Game
Gabungkan permintaan, simpan data yang sering dibaca di cache, gunakan I/O asinkron agar thread game tidak menunggu disk.
Tugas Tim Infrastruktur
Server/OS: gunakan disk yang lebih cepat, periksa batas bandwidth disk dan IOPS per tipe instance, pasang alert utilisasi dan antrean disk, salin file besar di jam sepi. Server DB: pasang alert utilisasi IOPS dan throughput untuk disk DB juga, periksa batas disk pada spesifikasi instance DB.
Kisaran angka
HDD sekitar 150 IOPS, SSD SATA puluhan ribu, NVMe ratusan ribu IOPS. Disk standar cloud (AWS gp3) 3.000 IOPS dan 125 MiB per detik. Batas throughput per detik ini terpisah dari IOPS, dan jika salinan file besar menghabiskannya, penulisan kecil pun ikut tertahan.
Di grafik
Mendatar di batas · IOPS, panjang antrean disk
Yang diperiksa
Periksa r/s dan w/s, rkB/s dan wkB/s, aqu-sz, serta r_await dan w_await di iostat -x 1. Di cloud, periksa VolumeReadOps, VolumeWriteOps, dan VolumeQueueLength di EBS, indikator pelampauan batas VolumeIOPSExceededCheck dan VolumeThroughputExceededCheck, serta InstanceEBSIOPSExceededCheck dan InstanceEBSThroughputExceededCheck di sisi instance
Cocok jika
Jumlah permintaan per detik atau throughput mendatar di nilai batas, dan aqu-sz serta await melonjak bersamaan. Di cloud, metrik pemeriksaan pelampauan bernilai 1
Tidak cocok jika
%util 100% tetapi await rendah: mungkin masih ada ruang. Pada SSD dan RAID yang memproses permintaan secara paralel, %util tidak menunjukkan batas. Belum mencapai batas tetapi hanya await yang tinggi: lebih mungkin latensi disk itu sendiri (dk-hdd) atau fsync (dk-fsync)
Sarana pemeriksaan
Tools infrastruktur (tanpa perlu kode game)
Pelajari lebih lanjut
Di cloud, selain batas disk, setiap spesifikasi server (tipe instance) juga punya batas bandwidth disk dan IOPS. Walaupun disk mahal dipasang, jika servernya kecil, kinerjanya tertahan di batas instance.
Sumber
Exos X18 Data SheetSeagate Baca acak 4K pada HDD server 7.200 rpm: 170 IOPS (QD16)
D3-S4520 SSDSolidigm Baca/tulis acak 4 KB pada SSD SATA server: maksimal 92K/48K IOPS
Amazon EBS-optimized instance typesAWS Setiap tipe instance punya batas baseline dan maksimum tersendiri untuk bandwidth, throughput, dan IOPS EBS
iostat(1) — Linux manual pagesysstat -x: r/s dan w/s, rkB/s dan wkB/s, aqu-sz (nama lamanya avgqu-sz), r_await dan w_await, %util. Pada RAID dan SSD modern yang memproses permintaan secara paralel, %util tidak menunjukkan batas performa
Amazon CloudWatch metrics for Amazon EBSAWS VolumeIOPSExceededCheck dan VolumeThroughputExceededCheck: bernilai 1 jika ada upaya melewati batas IOPS atau throughput volume (instance Nitro), VolumeQueueLength