한국어English日本語简体中文繁體中文DeutschไทยTiếng ViệtРусскийPortuguês (Brasil)EspañolBahasa Indonesia

ゲームラグ白書 › L11 ディスク

IOPS上限・キューの飽和 IOPS limit / queue saturation

原因ID dk-iops · 主担当 インフラチーム・サーバーインフラ · 副担当 ゲーム開発チーム・サーバー開発, インフラチーム・DBインフラ

図と実験のあるメインページでこのカードを開く →

ディスクが1秒間に処理できる要求数を超えると、キューが長くなって遅延が急増します。

なぜ 読み書きの要求がディスクの処理能力に近づく → すると キューが長くなる(たいてい利用率90%以上で急増) → 画面では 保存・ロードの遅延、同期呼び出しならフリーズ

症状
入力遅延, フリーズ
要因
遅延, ストール
誰に起きるか
サーバー全体
いつ
人が集中したとき, 夜のピーク時間帯
担当
主担当 インフラチーム・サーバーインフラ · 副担当 ゲーム開発チーム・サーバー開発, インフラチーム・DBインフラ
ゲーム開発チームの対応
要求をまとめる、よく読むデータはキャッシュ、ゲームスレッドでディスクを待たないよう非同期に。
インフラチームの対応
サーバー機器・OS:より高速なディスク、インスタンスタイプごとのディスク帯域幅・IOPS上限の確認、ディスク利用率・キューのアラート、大きなファイルのコピーは空いている時間帯に。DBサーバー:DBのディスクもIOPS・スループット利用率のアラート、DBインスタンスのスペックごとのディスク上限の確認。
数値の目安
HDDは約150、SATA SSDは数万、NVMeは数十万IOPS。クラウドの標準ディスク(AWS gp3)は3,000 IOPS、毎秒125MiBです。IOPSとは別にある毎秒の転送量の上限を大きなファイルのコピーが使い切ると、小さな書き込みまで詰まります。
グラフでは
上限で頭打ち · IOPS、ディスクのキュー長
確認箇所
iostat -x 1のr/s・w/s、rkB/s・wkB/s、aqu-sz、r_await・w_awaitを確認。クラウドはEBSのVolumeReadOps・VolumeWriteOps・VolumeQueueLengthと、上限超過の有無を示すVolumeIOPSExceededCheck・VolumeThroughputExceededCheck、インスタンス側のInstanceEBSIOPSExceededCheck・InstanceEBSThroughputExceededCheckを確認
該当する場合
毎秒の要求数や転送量が上限値で頭打ちになり、aqu-szとawaitが一緒に跳ね上がる。クラウドでは超過チェックのメトリクスが1
該当しない場合
%utilが100%でもawaitが低ければ、まだ余裕があることもある。要求を並列に処理するSSD・RAIDでは、%utilは上限を意味しない。上限に達していないのにawaitだけが高いなら、ディスク自体の遅延(dk-hdd)かfsync(dk-fsync)
確認手段
インフラのツールで確認(ゲームコード不要)
もっと詳しく
クラウドでは、ディスクの上限とは別に、サーバースペック(インスタンスタイプ)ごとにディスク帯域幅・IOPSの上限があります。高価なディスクを付けても、サーバーが小さければインスタンスの上限で頭打ちになります。

出典

  1. Exos X18 Data Sheet Seagate
    7,200rpmのサーバー向けHDDの4Kランダム読み出し170 IOPS(QD16)
  2. D3-S4520 SSD Solidigm
    サーバー向けSATA SSDの4KBランダム読み出し・書き込み、最大92K/48K IOPS
  3. Solidigm™ D7-P5520 and D7-P5620 Product Brief Solidigm
    サーバー向けNVMe SSDのランダム読み出し・書き込み、1,000K/200K IOPS
  4. Amazon EBS General Purpose SSD volumes AWS
    gp3のベースライン性能は3,000 IOPSと125MiB/s、2つは別々に引き上げられる独立した上限
  5. Amazon EBS-optimized instance types AWS
    インスタンスタイプごとに、EBSの帯域幅・スループット・IOPSのベースラインと最大の上限が別にある
  6. iostat(1) — Linux manual page sysstat
    -x:r/s・w/s、rkB/s・wkB/s、aqu-sz(旧名avgqu-sz)、r_await・w_await、%util。要求を並列に処理するRAID・最近のSSDでは、%utilは性能の上限を表さない
  7. Amazon CloudWatch metrics for Amazon EBS AWS
    VolumeIOPSExceededCheck・VolumeThroughputExceededCheck:ボリュームのIOPS・スループット上限を超えようとしたら1(Nitroインスタンス)、VolumeQueueLength
  8. CloudWatch metrics that are available for your instances AWS
    InstanceEBSIOPSExceededCheck・InstanceEBSThroughputExceededCheck:インスタンスのEBS IOPS・スループット上限を超えようとしたら1

あわせて読みたい原因

同じ層:L11 ディスク

同じ症状(入力遅延)を起こすほかの層の原因

図と実験のあるメインページでこのカードを見る