ゲームラグ白書 › L7 サーバーOS(カーネル)
CPUスチール(仮想マシン) CPU steal time
原因ID so-steal · 主担当 インフラチーム・サーバーインフラ · 副担当 外部・外部
図と実験のあるメインページでこのカードを開く →
物理サーバー(ハイパーバイザー)が仮想マシンのCPU時間を一時的にほかの仮想マシンに回している間(CPUスチール)、ゲームサーバーが止まります。
なぜ 同じホスト上のほかの仮想マシンがCPUを大量に使用 → すると 自分の仮想マシンが数ms〜数十msずつ実行機会を失う → 画面では 原因不明のティック時間の急増で、カクつき・フリーズ
- 症状
- カクつき, フリーズ
- 要因
- ストール
- 誰に起きるか
- サーバー全体
- いつ
- ときどきランダムに
- 担当
- 主担当 インフラチーム・サーバーインフラ · 副担当 外部・外部
- インフラチームの対応
- steal指標(top・vmstatのst)の監視、専用コア・専有ホスト、CPUクレジットが尽きると遅くなるバースト可能インスタンスを避ける、stealが高止まりするインスタンスは停止してから起動し直し、別のホストへ移す。
- 外部の対応
- stealが高止まりするホストをクラウド事業者に報告。
- グラフでは
- 不定期なスパイク · %steal、サーバーのティック時間
- 確認箇所
- mpstat -P ALL 1の%stealを、サーバーのティック時間と同じ時間軸に並べて確認
- 該当する場合
- ティックが跳ねた時刻に%stealも跳ね、停止してから起動し直して別のホストに移すと減る
- 該当しない場合
- %stealが0に近いのにティックが跳ねるなら、ゲームサーバー内部の原因(「サーバーGCの全停止」「ロック競合」)。コンテナなら「コンテナのCPUスロットリング(CFSクォータ)」
- 確認手段
- インフラのツールで確認(ゲームコード不要)
出典
- proc_stat(5) — Linux manual page Linux man-pages
steal:仮想化環境で、ほかのOSが実行されていたために奪われた時間 - Standard mode for burstable performance instances AWS
バースト可能インスタンスはクレジットを使ってベースライン性能を超え、クレジットが尽きるとCPU使用率がベースラインの水準まで下がる - How EC2 instance stop and start works AWS
インスタンスを停止してから起動すると、ほとんどの場合は新しいホストに移される - mpstat(1) — Linux manual page sysstat
%steal:ハイパーバイザーがほかの仮想CPUを実行している間、この仮想CPUがやむを得ず待たされた時間の割合
あわせて読みたい原因
同じ層:L7 サーバーOS(カーネル)
同じ症状(カクつき)を起こすほかの層の原因
図と実験のあるメインページでこのカードを見る