はじめに
VMware 仮想環境における CPU パフォーマンス管理は重要であり、CPU 使用率だけでなく、競合状態にも注目が必要です。CPU によるパフォーマンスの低下は、以下の要因が考えられます。
- ホストのサイジング問題:仮想マシンに適切な CPU 数が割り当てられていない。
- ゲストのサイジング問題:仮想マシンに適切な vCPU 数が割り当てられていない。
これらの問題を判断するために、CPU パフォーマンスの指標は以下の通りです。
- ホスト:75% 程度
- ゲスト:システムに依存
また、ゲストでの Steal の発生率や CPU Ready なども、システムのパフォーマンスを評価するために役立ちます。
Steal とは
Steal time(または stolen time)は、Linux ベースの仮想マシンで利用できる指標です。これは、仮想マシンが要求した CPU リソースがホストから割り当てられなかった時間の割合を示します。Steal timeは、主に top
コマンドと vmstat
コマンドを使って確認できます。
top
コマンドを使った Steal time の確認方法:
- ターミナルで
top
コマンドを実行します。 - CPU 使用率の行にある
%st
が Steal time を示します。
top コマンドの実行例:
> top
top - 19:29:10 up 4 min, 3 users, load average: 0.24, 0.23, 0.10
Tasks: 128 total, 2 running, 126 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0%us, 0.0%sy, 0.0%ni,100.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 1023924k total, 606252k used, 417672k free, 30820k buffers
Swap: 2064344k total, 0k used, 2064344k free, 374476k cached
vmstat
コマンドを使った Steal time の確認方法:
- ターミナルで
vmstat 2
(2秒間隔で更新)やvmstat 5
(5秒間隔で更新)のように、任意の更新間隔でvmstat
コマンドを実行します。 - 出力結果の最後の列にある
st
が Steal time を示します。
vmstat コマンドの実行例:
# vmstat 2
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu------
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 0 417680 30888 374472 0 0 1223 122 1056 338 3 3 87 7 0
0 0 0 417680 30888 374500 0 0 0 0 977 177 0 0 100 0 0
0 0 0 417680 30888 374500 0 0 0 0 976 180 0 0 100 0 0
Steal time が増加している場合、仮想マシンが CPU リソースを十分に得られていない可能性があります。これは、他の仮想マシンとCPU リソースの競合が発生しているか、ホストがオーバーコミットされていることを示すことがあります。その場合、ホストのリソース調整や仮想マシンの移動が必要になることがあります。
CPU Ready とは
物理 CPU コアが別の仮想マシンで使用され、競合が発生し、ESXi でスケジューリングされた vCPU が待ちを強いられている時間を示します。具体的な時間(ms)が確認できる点で、Stealと異なります。vCPU あたり 20秒 の累積の参考値として、2000-4000ms 程度が目安です。CPU Ready の確認は、vSphere のパフォーマンスチャートから行います。
vSphere Client (HTML5)を使った CPU Ready の確認方法:
- vSphere Client (HTML5) でゲスト仮想マシンを選択し、[モニター] タブを開きます。
- [パフォーマンス] サブタブの中から “CPU” を選択します。
- 右上の歯車アイコンをクリックして、[グラフ オプション] を開きます。
- CPU カウンタの中から [準備完了] にチェックを入れ、[適用] をクリックします。
- CPU Ready(準備完了)のグラフが表示されるので、パフォーマンスを確認します。
以上