NETWORK ENGINEER BLOG

Tips and Reviews for Engineers

仮想環境における CPU パフォーマンス管理について

仮想環境における 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 を選択します。
f:id:FriendsNow:20130513194604p:plain

チャートオプションをクリックします。
f:id:FriendsNow:20130513194612p:plain

CPU のカウンタで[準備完了]にチェックし[適用]をクリックします。
f:id:FriendsNow:20130513194620p:plain

CPU Ready(準備完了)を確認します。
f:id:FriendsNow:20130513194626p:plain

*1:%st が steal 発生率を示します。

*2:st が steal 発生率を示します。