-shared-img-thumb-PAK85_kuronurisaretahoukokusyo201409051_TP_V

CPUリソースの監視視点変化の要因

仮想化マシンのCPUリソースを監視するためにまず、仮想化環境(VMware、vSphereなど)のCPU制御の特徴的な機能について考えます。
今までCPUの性能を引き上げるためには、クロック数を向上させたり、マルチプロセッサを搭載するなどの手法が用いられてきましたが、
この手法では、設置スペースの拡大・消費電力・発熱量などが徐々に問題となってきました。

しかしここ数年、半導体の設計・製造技術の進歩によってCPUのマルチコア化が進み、CPUの単体性能が飛躍的に向上しました。
マルチコア技術は、ほぼ同じ頃、市場認知度が高まりつつあったサーバー仮想化技術、複数の仮想化マシンの並列稼働にうってつけの技術でした。

VMware ESXでは、「物理コア1つ = 仮想CPU1つ」として1つのCPUを分割し、複数の仮想化マシンを同時に稼働できる機能を提供しています。
また、物理コア数を越える数の仮想化マシンを稼働させることも可能で、その場合は、
CPUを一定秒ごとに切り替えて仮想化マシンに割り当てる機能(時分割機能)が利用されます。

ここで注目すべきなのは、
仮想化マシンを多く稼働させると、それだけCPUの競合率が高まり、
個々の仮想化マシンが多くのCPU能力を必要とする処理を行う場合、CPUが割り当てられるまでの待ち時間が多く発生するということです。
また同時にCPUのスケジューリング処理の負荷も高まるため、これらの処理がCPUリソースを消費してしまいます。

例えば、監視対象の仮想化マシンがほとんどCPU負荷のかかる作業をしていなかったとしても、
他の仮想化マシンが高負荷状態となると、それに引きずられてCPU使用率が増加して見えてしまうことがあります。

もちろん従来のサーバー環境ではこれらの状態は見られず、仮想化環境に特有の状態です。
すなわちこれらの情報は、OSに仕込んだエージェントからは見えない情報となります。

このため、個々の仮想化マシン上のOSで動作しているエージェントが収集できるデータだけでは、
システム全体のパフォーマンスへの影響を正しく判断することができないのです。

この課題を解決するためには、管理用OSを経由してゲストOSのリソース情報を取得する必要があります。
管理用OSとは文字通り、複数あるゲストOSを管理するためのOSです。
通常、サーバー仮想化ソフトウエアが提供する管理用クライアント・ツールで、仮想化マシンにアクセスし、ハードウエアリソースの割り当てなどを行います。

管理用OS上でゲストOSのリソース情報を表示するコマンドを提供していたり、
ゲストOSのリソース情報をグラフ表示する機能を提供するものがありますので、
これらのツールを利用し、より正確なリソース値を取得し、CPUリソースを監視できるようにしましょう。

関連記事