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

ゲームラグ白書 › 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クォータ)」
確認手段
インフラのツールで確認(ゲームコード不要)

出典

  1. proc_stat(5) — Linux manual page Linux man-pages
    steal:仮想化環境で、ほかのOSが実行されていたために奪われた時間
  2. Standard mode for burstable performance instances AWS
    バースト可能インスタンスはクレジットを使ってベースライン性能を超え、クレジットが尽きるとCPU使用率がベースラインの水準まで下がる
  3. How EC2 instance stop and start works AWS
    インスタンスを停止してから起動すると、ほとんどの場合は新しいホストに移される
  4. mpstat(1) — Linux manual page sysstat
    %steal:ハイパーバイザーがほかの仮想CPUを実行している間、この仮想CPUがやむを得ず待たされた時間の割合

あわせて読みたい原因

同じ層:L7 サーバーOS(カーネル)

同じ症状(カクつき)を起こすほかの層の原因

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