VMware vSphere環境の監視管理

2009年12月11日(金)
柳沢 昭則

リソース監視視点の変化の要因[1]<CPUリソース>

仮想マシンのCPUリソースを監視するにあたり、まずはVMware vSphereのCPU制御の特徴的な機能について考えます。

昨今、半導体設計/製造技術の進歩によってCPUのマルチコア化が進み、CPUの単体性能が飛躍的に向上しています。

これまでCPU性能の引き上げにはクロック周波数やマルチプロセッサ搭載などの手法が用いられてきましたが、設置スペースの拡大や消費電力/発熱量などが問題となっていました。

こうした中で登場したマルチコア技術は、ほぼ同時期に市場認知度の高まったサーバー仮想化技術における複数の仮想マシンの並列稼働にうってつけの技術ですが、環境の作成のしかたにより、以下のような考慮が必要です。

VMware ESXは、「1物理コア=1仮想CPU」として1つのCPUを分割し、同時に複数の仮想マシンが稼働できる機能を提供します。さらに、時分割機能(通常20ミリ秒ごとにCPUを割り当てる仮想マシンを切り替える機能)も提供されており、物理コア数以上の仮想マシンを同時稼働させることも可能です。

結果として以下の関係式になり、CPUの稼働効率を高めています。
--------------------------------------------------------------------------------
全仮想マシンの仮想CPU数 + VMware ESX用のCPU数 > 全物理コア数

※ここでいう“VMware ESX用のCPU数”とは、具体的にはVMware ESX自身が利用するCPUリソースと、管理コンソール(ServiceConsole)が利用するCPUリソースをあわせたもので、仮想CPUにして約1個分のリソースに相当します。
--------------------------------------------------------------------------------

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

仮想化に特有のこれらの状態は、従来のサーバー環境には見られなかった症状であり、すなわちOSに仕込んだエージェントからは見えない情報となります。このため、個々の仮想マシン上で動作するエージェントが収集した監視データだけでは、システムのパフォーマンスへの影響などを判断することができないのです。

この課題を解決するためには、仮想マシンの外部に存在するハイパーバイザが正確な情報を把握していることを利用し、ハイパーバイザ層に監視の目を向ける必要があります。

リソース監視視点の変化の要因[2]<メモリリソース>

CPUリソースに引き続いてメモリ・リソースを監視するにあたり、VMware vSphereのメモリ制御について考えます。

VMware vSphereは、メモリ制御にも特徴的な技術があります。1つは、複数の仮想マシンで利用するメモリ・データ・イメージに同じものが存在する場合に、ページ単位で一意のメモリ領域を共有する“透過的メモリ・ページ・シェアリング”です。特に同じ種類のOSを複数の仮想マシンで稼働させる場合は使用するメモリ領域を大幅に節約できます。

もう1つは、物理的に割り当てられる(予約される)メモリ容量以上の仮想メモリを定義して仮想マシンを作成/動作させることができるメモリ・スワップ・アウトです。前述の図2-2に図解したように、ある仮想マシン内で必要とするメモリ量が、予約された物理メモリ量に満たない場合でも、通常の物理メモリ・アクセスと何ら遜色(そんしょく)なく動作します。

使用するメモリ量が実際に割り当てているメモリ量を超えても、オーバー・コミットによる定義メモリ(仮想マシンのOSでは見掛け上所有しているように見える)の容量以下であれば、その差分はVMware vSphere特有のスワップ・アウト技術によって融通します。

このスワップ・アウト技術には、性質の異なる2つの機能があります。

スワップ・アウト技術の1つは、バルーニングと言われる機能です。VMware Toolsという、VMware社が仮想マシンへのインストールを推奨しているソフトが提供する機能です。ある仮想マシンで物理メモリの不足が発生した際、ほかの仮想マシンのメモリ上のデータのうち、鮮度や使用頻度が低い領域を一時的にスワップ・アウトして開放するという仕組みです。

もう1つのスワップ・アウト技術が、VMwareの中核ソフトであるVMkernelが実行するスワップ・アウトです。メモリ要求に対してバルーニング処理が追いつかない場合や、そもそもバルーニングの対象となるようなデータ領域が無い場合に、ほかの仮想マシンが確保しているメモリ・リソースのデータを、鮮度や使用頻度と無関係に、強制的にvswpファイルという専用ファイルへスワップ・アウトします。

バルーニング機能の注意点は、頻ぱんにこの処理が行われると仮想マシン上のCPU負荷が高くなるなど、結果的にシステムのパフォーマンスへの影響が懸念されることです。一方、VMkernelのスワップ・アウト処理の注意点は、アクセス頻度の高いメモリ領域もスワップ・アウトの対象となるため、メモリ・アクセスを多用する処理はパフォーマンスが落ちやすいということです。

こうした背景から、従来のサーバー監視におけるスワップ・アウトの検知と同様にバルーニングやVMkernelのスワップ・アウトも監視するべきですが、これも従来のエージェント型の監視では情報を得られません。メモリ制御においても、VMware vSphereにおける新たな監視の視点として、ハイパーバイザ層を監視する手法が必要なのです。

VMware社は、vCenter Serverでハイパーバイザからリソース使用状態を取得し、異常と判断した場合にメール発信やSNMPトラップを外部へ発信するアラーム機能を備えています。この方法で監視運用を実施している実例もあります。

また、最近では、従来からあるサーバー監視ソフトでも、ハイパーバイザの情報を監視できる機能が提供されています。次ページでは、こうしたハイパーバイザを監視できる、こうしたサーバー監視ソフトの一部を紹介します。

伊藤忠テクノソリューションズ株式会社
ITエンジニアリング室 ミドルウェア技術部 ITシステムマネジメント技術課所属。2006年にCTCに入社。前職より統合システム運用管理製品のプリセールスや構築支援に携わり、現在に至る。

Think ITメルマガ会員登録受付中

Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。

Think ITメルマガ会員のサービス内容を見る

他にもこの記事が読まれています