概要
CPU steal timeとは何か、VPSで確認するにはどうすればよいですか?
CPU steal timeとは、ハイパーバイザーが別のマシンを実行している間に、あなたのvCPUが実行可能な状態であった時間の割合です。stealが10%の場合、負荷の高いジョブは実行時間の約10分の1を失います。2026年11月2日時点で、専用CPUを謳う22のKYC不要・暗号資産対応ホストのいずれもstealの測定値を公開しておらず、Cobaltfellも同様でした。Linuxはstealをstではtopに、%stealではmpstatに表示します。
steal timeとは正確には何ですか?
steal timeは、あなたの仮想CPUが処理を行おうとしたものの、物理プロセッサが別のゲストの処理で忙しかった時間を数えます。 Linuxのツールはこれをわずかに異なる3つの表現で説明しています:
top:「このVMがハイパーバイザーに奪われた時間」。mpstat:ハイパーバイザーが「別の仮想プロセッサを処理していた」間の「不本意な待機」の割合。/proc/stat:「仮想化環境で実行中に他のオペレーティングシステムで費やされた時間」で、Linux 2.6.11以降で計測されます。
カーネルのKVMドキュメントは、このカウンタを有用にする詳細を補足しています:stealはvCPUが実行されなかった時間であり、vCPUがアイドル状態だった時間はstealとして報告されません。ホストがどれほど混雑していても、アイドル状態のVPSはstealを示すことはできません。この数値は、CPUを要求したのに得られなかったときにのみ現れます。
この数値はハイパーバイザーに由来し、ハイパーバイザーがゲストカーネルに共有します。ゲストはハイパーバイザーが報告するものしか数えられないため、低い値をベンチマークの繰り返しで確認すべき理由がもう一つあります。
steal timeはどうやって確認しますか?
4つのコマンドで確認できます。ただし、アイドル状態のマシンではなく、実際のワークロードを実行している間に実行してください。 topとvmstatは、一般的なすべてのディストリビューションでprocpsパッケージに含まれています。mpstatはsysstatに含まれています(DebianとUbuntuではapt install sysstat、AlmaLinuxとRockyではdnf install sysstat)。
topvmstat 1 60mpstat -P ALL 1 60a=($(head -n1 /proc/stat)); sleep 10; b=($(head -n1 /proc/stat))
# fields 1-8: user nice system idle iowait irq softirq steal
all=0; for i in 1 2 3 4 5 6 7 8; do all=$((all + b[i] - a[i])); done
awk -v st=$((b[8] - a[8])) -v all=$all 'BEGIN { printf "steal: %.2f%%\n", 100 * st / all }'/proc/statの最初の行は、すべてのvCPUをUSER_HZ単位(ほとんどのシステムでは100分の1秒)で合計します。スクリプトはこれを10秒間隔で2回読み取り、蓄積されたstealを経過したすべての時間で割ります。そもそも仮想マシン上で動作しているかを確認するには、systemd-detect-virtがハイパーバイザーの種類を表示し、KVMではkvmになります。
数値はどう読めばよいですか?
「良好な」steal値を定める標準はありませんが、計算は単純です:常にCPUを必要とするジョブは、最大でも100%からstealを引いた時間しか得られません。 stealが5%なら要求した時間の約95%、25%なら約4分の3を得られます。1回のサンプルではなく、パターンを読み取ってください。
| 表示内容 | 意味 | 対処 |
|---|---|---|
| ジョブがフル負荷で動作している間、すべてのvCPUで0 | 何も奪われていない、またはハイパーバイザーがstealを報告していない | 異なる2つの時間帯に同じベンチマークで確認する |
| 非ゼロのサンプルが数回出た後、再び0 | ホスト上での短時間の競合 | 通常は何もしなくてよい。レイテンシに敏感なジョブならログを残す |
| 負荷時に毎秒安定してstealが発生 | vCPUが他のゲストの後ろで待機している | 時間帯を記録し、1日計測し、ログをホストに送る |
mpstat -P ALLで1つのvCPUだけにsteal | スレッドの1つがホストのより混雑した部分に配置されている | チケットでvCPU番号を伝える |
| 毎日同じ時間帯にstealが上昇 | スケジュールを持つ隣人:バックアップ、バッチジョブ、ピークトラフィック | 重いジョブを別の時間帯に移す、または専用vCPUに移行する |
| 専用として販売されているプランで持続的なstealが発生 | その時点では約束が守られていません | ホストに説明を求めるか、VPSの移動を依頼してください |
CPUはノイジーネイバーと共有されていますか?
CPUに負荷をかけたときにstealが上昇し、その上昇が自分の作業ではなく時間帯に連動しているなら、他のテナントがあなたのプロセッサ時間を共有しています。 3つの確認で絞り込めます。
- 自分で負荷をかける。 実際のジョブ、またはCPU負荷の高いテストを実行し、別のターミナルで
mpstat -P ALL 1を開いたままにします。自分の負荷に追従してstealが動くなら、ホストの空きCPUがプランの想定より少ないということです。 - 時間帯を比較する。 同じベンチマークを朝と夜に実行します。専用vCPUなら2つの結果は近くなるはずです。YABSやGeekbench 6でVPSをベンチマークする方法にコマンドがあります。
- プランを確認する。 共有vCPUで販売されているプランはstealが出ても問題ありません。その分安いのです。共有vCPUと専用vCPUの違いのページで、それぞれ何を得られるか説明しています。
stealがゼロなのに遅いVPSは、別の原因を指します。ディスク待ち(wa列、I/O待ちの時間)、メモリプレッシャー、またはアプリケーション自体です。
steal timeの原因は何で、どう直せばよいですか?
ホストが実行できるハードウェアスレッド数より多くのビジーなvCPUを売りすぎると、stealは増えます。 すべてのゲストが一斉にCPUを要求すると、待たされるゲストが出て、その待ち時間が各ゲストのstealとしてカウントされます。
できること(手間の少ない順):
- 重い処理を移動する。ワークロードが許せば、ホストが静かな時間帯に移します。
- ホストに依頼する。VPSを負荷の低いノードへ移してもらいます。
mpstatのログがあれば依頼が具体的になります。 - プランタイプを変える。 専用vCPUなら他のゲストがあなたのスレッドに入りません。専用vCPUを販売しているホストと、それぞれの表現、コアあたりの価格は2026年11月の専用CPU VPSのコアあたり価格にまとめています。
Cobaltfellの2026年11月2日の調査によると、身分証明書なしで暗号資産を受け付けるVPSホスト51社のうち22社が専用CPUを書面で約束しており、私たちが読んだページでsteal timeの測定値を示していたホストはありませんでした。
共有vCPUを増やしてもほとんど効果はありません。同じ混雑したホストのスレッドが増えても、同じキューで待つだけです。
データベースでは、stealは最も遅いクエリに最初に現れます。CPU stealがVPS上のPostgreSQLのp99レイテンシにどう影響するかで説明しています。
CobaltfellのVPSではstealはどの程度であるべきですか?
専用vCPUでは、steal timeはゼロかゼロに近い値になるはずです。当社は自社マシンで測定した数値を日付とともに公開し、推定値を公開することはありません。 各vCPUは1つのVPS専用に確保されます:vCPUはホストプロセッサのハードウェアスレッド1つ分です。お客様のvCPUはVPSに1対1で固定され、他のお客様に貸し出されることはなく、物理コアの2つのスレッドは常にペアで割り当てられます。そのため、2 vCPUごとに隣人と共有しない完全なコア1つになります。
当社自身のYABSおよびGeekbench 6の結果は、測定したsteal timeとともに、最初のテストマシンが納品され次第、日付を添えて公開されます。それまでは、当社独自のパフォーマンス数値は一切提示しません。そのページに日付入りの数値が載るまでは、上のコマンドを自分のVPSで実行してください。ジョブ実行中にstealが高いままなら、そのログでチケットを切るのに十分です。2026年の専用CPU VPSプロバイダー比較は、当社を含め同じ書面の基準で比較しています。サポートメールには、SSHキー、再インストール、ファイアウォールルールに関するご相談を含め、年中無休で12時間以内に担当者が返信します。
CPU steal timeについて他にどんな質問がありますか?
steal timeはiowaitと同じですか?
いいえ。steal(st)は、あなたのvCPUが実行したかったのにハイパーバイザーが別のゲストを実行した時間です。iowait(wa)は、ディスクやその他のI/Oの完了を待ってCPUがアイドルだった時間です。iowaitが高いならストレージ、stealが高いならCPUの競合を示します。
topにstの値が表示されないのはなぜですか?
topのマニュアルには、カーネルのバージョンによってはstフィールドが表示されない場合があると記されています。現在のディストリビューションでは%Cpu(s)行に表示されますが、古いカーネルや仮想マシン外では欠けているか、ゼロのままの場合があります。
専用サーバーでsteal timeは表示されますか?
ハイパーバイザーなしでハードウェア上で直接動くシステムには、stealする相手がいないため、カウンターはゼロのままです。stealはハイパーバイザー配下のゲストにのみ存在します。
stealの値はいくつから高すぎますか?
上限を定めた標準はありません。計算で考えましょう。stealが10%なら、CPU負荷の高いジョブは必要な時間の約90%しか得られません。専用vCPUで販売されているプランでは、作業中もstealはゼロかほぼゼロであるべきです。
steal timeはスループットだけでなくレイテンシにも影響しますか?
はい。待ちが発生するたびにそのvCPUで実行中だったリクエストが遅れるため、stealは平均値より先に、最も遅いリクエスト(データベースやAPIのp99)に現れます。
出典 (6)
- KVM固有のMSR:MSR_KVM_STEAL_TIME — The Linux Kernel documentation (checked 2026-11-02)
- proc_stat(5):カーネル/システム統計 — man7.org (Linux man-pages 6.19) (checked 2026-11-02)
- top(1)マニュアルページ — man7.org (procps-ng) (checked 2026-11-02)
- vmstat(8)マニュアルページ — man7.org (procps-ng) (checked 2026-11-02)
- mpstat(1) マニュアルページ — man7.org (sysstat) (checked 2026-11-02)
- systemd-detect-virt(1)マニュアルページ — man7.org (systemd) (checked 2026-11-02)