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

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

HDDのシーク遅延 HDD seek latency

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

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

HDDはヘッドがプラッタ上を移動する(シーク、seek)必要があるため、散らばったデータの読み書きに1回あたり10ms近くかかります。

なぜ 古いサーバーや低価格ストレージでHDDを使用 → すると ランダムな読み書きのたびに約10ms → 画面では 全体的な保存・ロードの遅延

症状
入力遅延
要因
遅延
誰に起きるか
サーバー全体
いつ
常に
担当
主担当 インフラチーム・サーバーインフラ · 副担当 インフラチーム・DBインフラ, ゲーム開発チーム・サーバー開発
ゲーム開発チームの対応
シーケンシャル書き込み中心の設計。
インフラチームの対応
サーバー機器・OS:SSDに交換(ランダムな読み書きが多い保存用ディスクから)。DBサーバー:ランダムな読み書きが最も多いDBディスクを先にSSDに交換。
グラフでは
最初から常に高い · ディスクの読み書き遅延(r_await・w_await)
確認箇所
lsblk -d -o NAME,ROTAで回転ディスク(HDD)かどうかを確認し、iostat -x 1のr/s・w/sとr_await・w_awaitを確認。仮想サーバーはクラウド・ストレージの仕様でディスクの種類を確認
該当する場合
回転ディスクで、毎秒の要求が数十〜100件あまりの水準なのに、r_await・w_awaitが常に数ms〜数十ms
該当しない場合
SSDなのに遅延が高いなら、キューの飽和(dk-iops)かバーストクレジットの枯渇(dk-burst)側
確認手段
インフラのツールで確認(ゲームコード不要)

出典

  1. Designs, Lessons and Advice from Building Large Distributed Systems (LADIS 2009 keynote) Google
    ディスクシーク1回10ms、ディスクからの1MBシーケンシャル読み出し20ms
  2. Exos X18 Data Sheet Seagate
    7,200rpm HDDの平均回転待ち4.16ms、4Kランダム読み出し170 IOPS
  3. lsblk(8) — Linux manual page util-linux
    -oで出力する列を選択、デバイストポロジーの列にROTA(回転型かどうか)を含む
  4. ABI stable symbols Linux kernel
    /sys/block/(ディスク)/queue/rotational:デバイスが回転型か非回転型かを示す
  5. iostat(1) — Linux manual page sysstat
    -x:r/s・w/s、r_await・w_await(キューで待った時間を含む、要求あたりの平均処理時間)

あわせて読みたい原因

同じ層:L11 ディスク

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

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