仮想環境における CPU パフォーマンス管理のポイントとして、CPU 使用率に加えて、CPU の競合状態を把握する事が挙げられます。一般的に CPU を起因とするパフォーマンスの劣化が発生した場合は、以下の要因が考えられます。
- ホストのサイジングの問題:仮想マシンに割り当てている CPU の個数が適当ではない。
- ゲストのサイジングの問題:仮想マシンに割り当てている vCPU の個数が適当ではない。
以上の問題を判断するために必要な CPU パフォーマンスの指標(参考値)は下記のとおりです。
- ホスト:75% 程度
- ゲスト:システムに依存
上記及び、ゲストにおける Steal の発生率、CPU Ready 等でシステムのパフォーマンスを確認します。
Steal とは
ゲスト OS がリソース要求を行ったにも関わらず CPU リソースを割当ててもらえなかった時間の割合を示します。Steal が 0% でない場合は、CPU 制限が適用されているか、他のゲストと「取り合い」をして競合状態になっている可能性があり、ホストを増設する等の対応が求めれます。Steal は、top コマンド or vmstat コマンドで確認できます。
top コマンドの実行例*1
# 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 実行例(2秒間隔)*2
# 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
CPU Ready とは
物理 CPU コアが別の仮想マシンで使用される事で、競合が発生し、ESXi でスケジューリングされた vCPU が待ちを強いられている時間を示します。steal との違いは、具体的な時間[ms]を確認できる点です。vCPU あたり 20秒の累積の参考値として 2000-4000ms 程度が指標となるようです。CPU Ready の確認は、vSphere のパフォーマンスチャートから確認します。
CPU Ready 確認方法
ゲストを選択しパフォーマンスタブの[切替先:]で CPU を選択します。
チャートオプションをクリックします。
CPU のカウンタで[準備完了]にチェックし[適用]をクリックします。
CPU Ready(準備完了)を確認します。