以下、本発明による情報処理システムの実施形態を、図面に基づいて詳細に説明する。
図1は、本発明の第1の実施形態による情報処理システムの構成を示す機能ブロック図である。
本発明の第1の実施形態による情報処理システムは、監視対象計算機50と、監視マネージャー計算機51と、運用管理端末52と、を備える計算機システムによって実現される。監視対象計算機50、監視マネージャー計算機51及び運用管理端末52は、ネットワーク26を介して接続されている。
ここで、本実施形態における情報処理システムのオペレータは、運用管理端末52を通して、監視対象計算機50上で稼動している仮想計算機の性能を監視する。
監視対象計算機50は、仮想化機構30を備えている。
仮想化機構30は、監視対象計算機50のCPU21(図2参照)によって実行されるソフトウェアである。仮想化機構30は、監視対象計算機50のリソースを論理的に分割することによって、仮想化機構30上に仮想的な計算機環境を構築する。仮想化機構30は、仮想化機構30上で動作するゲストOS31が互いに独立して各種の処理を実行するよう制御する。また、仮想化機構30は、ゲストOS31が仮想化機構30へと発するリソース要求に応じて監視対象計算機50へリソースを割り当てる。
本実施形態の仮想化機構30は、いわゆる「hypervisor」と、hypervisorの機能を呼び出すためのいわゆる管理OSとを併せたものとする。あるいは、仮想化機構30は、いわゆるVMwareにおけるVMカーネルと、いわゆる管理OSとを併せたものであってもよい。
仮想化機構30は、第1仮想計算機43a及び第2仮想計算機43bを構築する。第1仮想計算機43aでは第1ゲストOS31aが、第2仮想計算機43bでは第2ゲストOS31bが動作する。
第1ゲストOS31a及び第2ゲストOS31bは、一般的なOSである。
以下、第1仮想計算機43a及び第2仮想計算機43bのいずれにも適用される説明をする場合のように、第1仮想計算機43a及び第2仮想計算機43bのいずれかを特定する必要がない場合、これらを単に仮想計算機43と記載する。同様に、第1ゲストOS31a及び第2ゲストOS31bを単にゲストOS31と記載する場合がある。性能情報提供部36、性能監視エージェント32及びそれらに含まれる部分についても同様である。
本実施の形態は、例として、監視対象計算機50が二つの仮想計算機43を含む場合を示している。しかし、監視対象計算機50は、任意の数の仮想計算機43を含むことができる。
仮想化機構30は、監視情報提供部35と、メッセージ通信処理部34と、を含む。
監視情報提供部35は、ホスト性能情報30aと、第1仮想計算機監視情報30bと、第2仮想計算機監視情報30cと、を含む。第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cは、仮想計算機リソース割当情報と、仮想計算機構成情報と、仮想計算機性能情報と、を含む。
ホスト性能情報30aは、仮想化機構30が稼動している監視対象計算機50のリソース使用状況を表す情報である。
例えば、ホスト性能情報30aは、監視対象計算機50上の物理CPU21に関するCPU使用率、メモリ22の使用率、単位時間あたりのスワップ処理回数を含む。
仮想計算機リソース割当情報は、仮想化機構30によって割り当てられる監視対象計算機50のリソースの仮想計算機43への割り当て率を示す情報である。監視情報提供部35は、仮想計算機43ごとのリソースの割り当て率を示す情報を含む。例えば、第1仮想計算機監視情報30bは、第1仮想計算機43aへのリソースの割り当て率を示す第1仮想計算機リソース割当情報を含む。第2仮想計算機監視情報30cは、第2仮想計算機43bへのリソースの割り当て率を示す第2仮想計算機リソース割当情報を含む。
例えば、仮想計算機リソース割当情報は、ゲストOS31が稼働する仮想計算機43の仮想CPUに割り当てられたCPU時間の割合、及び、仮想計算機43に割り当てられたメモリサイズを示す情報を含む。
仮想計算機構成情報は、仮想計算機43の計算リソースに関する構成情報である。監視情報提供部35は、仮想計算機43ごとの構成情報を含む。例えば、第1仮想計算機監視情報30bは、第1仮想計算機43aの構成を示す第1仮想計算機構成情報を含む。第2仮想計算機監視情報30cは、第2仮想計算機43bの構成を示す第2仮想計算機構成情報を含む。
例えば、仮想計算機構成情報は、仮想計算機の仮想CPU数及び仮想計算機のメモリサイズを示す情報を含む。
仮想計算機性能情報は、仮想計算機43に関する性能情報である。監視情報提供部35は、仮想計算機43ごとの性能情報を含む。例えば、第1仮想計算機監視情報30bは、第1仮想計算機43aの性能を示す第1仮想計算機性能情報を含む。第2仮想計算機監視情報30cは、第2仮想計算機43bの性能を示す第2仮想計算機性能情報を含む。
仮想計算機性能情報は、例えば、仮想計算機43に関するスワップI/O処理回数及びデータI/O転送率を含む。
メッセージ通信処理部34は、仮想計算機43間のメッセージ通信、仮想計算機43と仮想化機構30との間の通信、仮想計算機43と、ネットワーク26を介して監視対象計算機50に接続された外部の計算機(例えば、監視マネージャ計算機51)との間の通信、及び、仮想化機構30と外部の計算機との間の通信に関する処理を実行する。これらの仮想計算機43内の通信処理は、監視対象計算機50内のメモリコピーによって実現される。
第1ゲストOS31a及び第2ゲストOS31bは、それぞれ、性能情報提供部36a及び性能情報提供部36bを含む。第1ゲストOS31a及び第2ゲストOS31b上では、それぞれ、第1性能監視エージェント32a及び第2性能監視エージェント32bが動作している。さらに、第1ゲストOS31a及び第2ゲストOS31b上では、その他のアプリケーションプログラム(図示省略)が動作している。
性能情報提供部36a及び性能情報提供部36bは、ゲストOS31に関する性能情報を収集及び管理する。具体的には、本実施形態の性能情報提供部36aは、第1ゲストOS31aの性能情報であるゲスト性能情報39aを保持する。性能情報提供部36bは、第2ゲストOS31bの性能情報であるゲスト性能情報39bを保持する。
例えば、ゲスト性能情報39には、CPU使用率、メモリ使用率及び単位時間あたりのページング処理回数が含まれる。これらは、一般的なOSが提供するような性能情報である。
なお、本実施の形態のゲストOS31は、仮想化されていない計算機において従来から使用されていた一般的なOSである。このため、ゲストOS31は、仮想化されていない計算機にそのゲストOS31がインストールされている場合と同様の処理を実行する。言い換えると、ゲストOS31は、そのゲストOS31がインストールされている仮想計算機43に割り当てられたリソースのみを管理することができ、その他の仮想計算機43にどれだけのリソースが割り当てられているかを知ることができない。このため、ゲスト性能情報39に含まれるCPU使用率は、各仮想計算機43に割り当てられているCPU時間に対する、実際にその仮想計算機43において使用されているCPU時間の割合である。
第1性能監視エージェント32a及び第2性能監視エージェント32bは、それぞれ、ゲストOS31a及びゲストOS31bの上で実行されるアプリケーションプログラムである。第1性能監視エージェント32aは、ゲストOS31a、ゲストOS31a上で実行されるアプリケーションプログラム及び仮想化機構30を監視する。第1性能監視エージェント32aは、監視情報収集部37a、監視情報管理部38a及び監視情報記憶部40aを含む。第2性能監視エージェント32bは、ゲストOS31b、ゲストOS31b上で実行されるアプリケーションプログラム及び仮想化機構30を監視する。第2性能監視エージェント32bは、監視情報収集部37b、監視情報管理部38b及び監視情報記憶部40bを含む。
監視情報収集部37a及び監視情報収集部37bは、それぞれ、ゲストOS31a及びゲストOS31bが管理する性能情報を収集する処理を制御する。さらに、監視情報収集部37a及び監視情報収集部37bは、仮想化機構30が管理する性能情報を収集する処理を制御する。
ここで、本実施形態において、監視情報収集部37aは、性能情報提供部36aからゲスト性能情報39aの一部又は全部を収集し、監視情報収集部37bは、性能情報提供部36bから性能情報39bの一部又は全部を収集する。さらに、監視情報収集部37a及び監視情報収集部37bは、監視情報提供部35から、ホスト性能情報30a、及び、全ての仮想計算機43に関する仮想計算機リソース割当情報、仮想計算機構成情報及び仮想計算機性能情報(すなわち、本実施形態の場合、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30c)を収集する。
監視情報管理部38a及び監視情報管理部38bは、監視情報収集部37が収集した性能情報を、後述する監視情報記憶部40a、40bに監視情報として格納し、格納した監視情報を管理する処理を制御する。
監視情報記憶部40a及び監視情報記憶部40bは、仮想計算機ゲストOS対応テーブル記憶領域(図示省略)と、性能監視エージェントゲストOS対応テーブル記憶領域(図示省略)と、を含む。
仮想計算機ゲストOS対応テーブル記憶領域には、仮想計算機とゲストOSとを対応付ける情報が記憶されている。例えば、仮想計算機ゲストOS対応テーブル記憶領域には、図3Aに示すような仮想計算機ゲストOS対応テーブル702が記録される。
図3Aは、本発明の第1の実施形態の仮想計算機ゲストOS対応テーブル702の説明図である。
仮想計算機ゲストOS対応テーブル702は、ホスト名欄702b及び仮想計算機名欄702aを含む。
ホスト名欄702bには、ゲストOS31a及びゲストOS31b上で設定されているホスト名が記憶されている。各ゲストOS31は、ホスト名によって一意に識別される。
仮想計算機名欄702aには、対応するホスト名欄702bに記憶されているゲストOS31a及び31bが稼動する仮想計算機43の名前が記憶されている。
図3Aでは、例えば、仮想計算機名欄702aに「VM1」が記憶され、「VM1」に対応するホスト名欄702bに「ホスト1」が記憶される。これは、名前が「VM1」である仮想計算機43において、「ホスト1」によって識別されるゲストOS31が稼動していることを示す。
性能監視エージェントゲストOS対応テーブル記憶領域には、性能監視エージェント32と、性能監視エージェント32が稼働するゲストOS31とを対応付ける情報が記憶されている。例えば、図3Bに示すような性能監視エージェントゲストOS対応テーブル701が記憶される。
図3Bは、本発明の第1の実施形態の性能監視エージェントゲストOS対応テーブル701の説明図である。
性能監視エージェントゲストOS対応テーブル701は、性能監視エージェント識別子欄701a及びホスト名欄701bを含む。
性能監視エージェント識別子欄701aには、性能監視エージェント32を識別する情報が記憶されている。
ホスト名欄701bには、ゲストOS31a及びゲストOS31b上で設定されているホスト名が記憶されている。
図3Bでは、例えば、性能監視エージェント識別子欄701aに「Agt1」が記憶され、「Agt1」に対応するホスト名欄701bに、「ホスト1」が記憶される。これは、「ホスト1」によって識別されるOS31上で、「Agt1」によって識別される性能監視エージェント32が実行されることを示す。
本実施形態において、監視情報管理部38aは、監視情報収集部37aが収集した監視情報を第1性能監視エージェント32a内の監視情報記憶部40aに格納する。監視情報管理部38bは、監視情報収集部37bが収集した監視情報を第2性能監視エージェント32b内の監視情報記憶部40bに格納する。
監視情報記憶部40a、40bは、性能監視エージェント32が収集した監視情報を格納する領域である。例えば、監視情報記憶部40aは、第1仮想計算機43aの仮想ディスクデバイス(図示省略)上の記憶領域であり、監視情報記憶部40bは、第2仮想計算機の仮想ディスクデバイス上の記憶領域であってもよい。なお、仮想ディスクデバイスとは、例えば、後述する外部記憶装置25の記憶領域のうち、各仮想計算機に割り当てられた記憶領域に相当する。この場合、第1性能監視エージェント32aのみが監視情報記憶部40aに対する読み書きを実行でき、第2性能監視エージェント32bのみが監視情報記憶部40bに対する読み書きを実行できる。
監視情報収集部37が監視情報提供部35から取得した監視情報は、例えば、図3Cに示す監視情報テーブル300のようなテーブル構造で監視情報記憶部40に記憶される。
図3Cは、本発明の第1の実施形態の監視情報テーブル300の説明図である。
監視情報テーブル300は、時刻欄300a、仮想計算機名欄300b、リソース名欄300c、監視情報名欄300d及び監視情報値欄300eとを含む。
時刻欄300aには、監視情報を収集した時刻が記憶される。
仮想計算機名欄300bには、例えば、仮想計算機43に設定されている名称が記憶されている。
リソース名欄300cには、仮想計算機43を構成する仮想的なリソースの識別子が記憶される。仮想的なリソースは、例えば、仮想CPU(vCPU)又は仮想I/Oデバイス等である。
監視情報名欄300dには、監視情報の名称が記憶される。
監視情報値欄300eには、時刻欄300aの時刻におけるリソース300cの統計値が記憶される。
例えば、図3Cでは、時刻欄300aに「2007/01/11 10:00:00」が記憶され、「2007/01/11 10:00:00」に対応する仮想計算機名欄300b、リソース名欄300c、監視情報名欄300d及び監視情報値欄300eには、それぞれ、「VM1」、「vCPU1」、「仮想CPU割り当て率」及び「30%」が記憶されている。これは、2007年1月11日午前10時0分0秒の時点で、監視対象計算機50のCPU21の全CPU時間のうち30%が、「VM1」によって識別される仮想計算機43の、「vCPU1」によって識別される仮想CPUに割り当てられていることを示す。
監視情報収集部37が性能情報提供部36から取得した監視情報は、例えば、図3Dに示すゲスト性能情報テーブル440のようなテーブル構造で監視情報記憶部40に記憶される。
図3Dは、本発明の第1の実施形態のゲスト性能情報テーブル440の説明図である。
ゲスト性能情報テーブル440は、時刻欄440a、ホスト名欄440b、リソース名欄440c、監視情報名欄440d及び監視情報値欄440eを含む。
時刻欄440aには、監視情報を収集した時刻が記憶される。
ホスト名欄440bには、監視情報値欄440eに記憶されている監視情報の取得元に関するゲストOS31のホスト名が記憶されている。
リソース名欄440cには、監視情報値欄440eに記憶された監視情報の取得元であるリソースについて記憶されている。監視情報の取得元であるリソースは、例えば、仮想CPU(vCPU1)等である。
監視情報名欄440dには、収集した監視情報の監視情報名が記憶される。
監視情報値欄440eには、収集した監視情報の値が記憶される。
例えば、図3Dでは、時刻欄440aに「2007/01/11 10:00:00」が記憶され、「2007/01/11 10:00:00」に対応するホスト名欄440b、リソース名欄440c、監視情報名欄440d及び監視情報値欄440eには、それぞれ、「ゲストOS1」、「vCPU1」、「仮想CPU使用率」及び「30%」が記憶されている。これは、2007年1月11日午前10時0分0秒の時点で、「vCPU1」によって識別される仮想CPUの使用率が30%であることを示す。さらに、この例は、監視情報収集部37が、「ゲストOS1」によって識別されるOS31から、その仮想CPU使用率「30%」を取得したことを示す。
図3Eは、本発明の第1の実施の形態の管理テーブル310の説明図である。
管理テーブル310には、監視情報と、その監視情報を取得した取得元についての情報とが記述される。管理テーブル310は、監視情報名欄310aと、取得元名欄310bとを含む。監視情報名欄310aには、取得した監視情報名が記憶される。また、取得元名欄310bには、監視情報名欄310aに記憶された名前によって識別される監視情報の取得元の名前が記憶される。例えば、監視情報名欄310aに記憶された名前が、性能情報提供部36a又は36bから取得された監視情報の名前である場合、その名前に対応する取得元名欄310bには、その監視情報の取得元の名前「ゲストOS」が記憶される。一方、監視情報が監視情報提供部35から取得された場合、取得元名欄310bには「仮想化機構」が記憶される。
管理テーブル310は、監視情報管理部38a及び38bが、性能情報提供部36a及び36b又は監視情報提供部35から情報を取得する際に、容易に作成することができる。管理テーブル310は、監視情報記憶部40a、40bに格納される。
以上に記載した監視対象計算機50は、図2に示すようなハードウェア構成の計算機20によって実現可能である。
図2は、本発明の第1の実施形態の監視対象計算機50のハードウェア構成を示すブロック図である。
監視対象計算機50を実現する計算機20は、CPU21と、主記憶装置(メモリ)22と、外部記憶装置25と、外部記憶装置25に接続するための外部記憶装置インターフェース23と、ネットワーク26と、ネットワーク26に接続するための通信インターフェース24と、を備える。計算機20は、さらに、入力装置及び出力装置を備えてもよい。入力装置は、例えばマウス・キーボード27である。出力装置は、例えばモニタ28である。
メモリ22は、例えば半導体メモリのようなデータ記憶装置である。例えば、計算機20のメモリ22内部には、CPU21によって実行されるゲストOS31a、ゲストOS31b、これらのゲストOS31上で稼動するアプリケーションプログラム、及び仮想化機構30が格納されている。
外部記憶装置25は、例えばハードディスク装置又はその他の種類の記憶装置である。監視情報記憶部40は、外部記憶装置25上の記憶領域として実現可能である。監視情報収集部37a、監視情報収集部37b、監視情報管理部38a及び監視情報管理部38bは、外部記憶装置25上に記憶された所定のプログラムをCPU21で実行することによって実現可能である。ネットワーク26は、いかなる通信方式によって実現されてもよい。例えば、ネットワーク26は、有線ネットワーク又は無線ネットワークのいずれであってもよい。
再び、図1を参照する。
監視マネージャー計算機51は、性能監視マネージャー48を備える。性能監視マネージャー48は、監視情報管理部47を含む。
監視情報管理部47は、運用管理端末52からの処理要求メッセージを解析し、その解析の結果に従って、各性能監視エージェント32a及び32bに対する処理要求メッセージを送信する。また、監視情報管理部47は、性能監視エージェント32a及び性能監視エージェント32bから受信したメッセージの内容を解析し、その解析の結果に従って、運用管理端末52に応答する処理動作を行う。
以上のように構成される監視マネージャー計算機51は、監視対象計算機50と同様、図2に示した計算機20によって実現可能である。例えば、性能監視マネージャー48は、メモリ22に格納され、CPU21によって実行されるプログラムであり、監視情報管理部47は、性能監視マネージャー48を構成するプログラムモジュールである。
運用管理端末52は、入力部53と、出力部54と、通信処理部55と、送受信部57と、を備える。
通信処理部55は、後述する入力部53を介して入力された情報を、後述する送受信部57を介して監視マネージャー計算機51に送信する処理を制御する。
また、通信処理部55は、監視マネージャー計算機51から受信した情報を所定の表示形式に編集して、後述する出力部54に出力する処理を制御する。
入力部53は、運用管理端末52のオペレータからの入力を受け付ける入力装置である。
出力部54は、運用管理端末52のオペレータに所定の情報を通知するための出力装置である。
送受信部57は、ネットワーク26を介して情報を送受信する装置である。
以上のように構成される運用管理端末52は、監視対象計算機50と同様、図2に示した計算機20によって実現可能である。通信処理部55は、メモリ22から読み出されたプログラムをCPU21が実行することによって実現可能である。入力部53はマウス・キーボード27のような入力装置によって実現可能である。出力部54はモニタ28のような出力装置によって実現可能である。送受信部57は、通信インターフェース24によって実現可能である。
なお、図1は、監視対象計算機50と監視マネージャー計算機51と運用管理端末52とがそれぞれ別の計算機20によって実現される場合を示している。しかし、これらの計算機及び端末のうちいずれか二つ又は全部が、同じ計算機20によって実現されてもよい。
また、本実施形態は、監視対象計算機50上に第1仮想計算機43a及び第2仮想計算機43bの二つの仮想計算機が構成される例を示す。しかし、本実施の形態はこのような態様に限定されない。すなわち、監視対象計算機50上に一の仮想計算機43が構成されてもよく、三つ以上の仮想計算機が構成されてもよい。さらに、他の装置が追加されてもよい。
次に、性能監視エージェント32が実行する処理の流れを説明する。
図4Aは、本発明の第1の実施形態の性能監視エージェント32が、性能情報を収集する処理を示すフローチャートである。
(1)まず、情報処理システムのオペレータは、初期設定を行う(ステップ400)。
具体的には、情報処理システムのオペレータは、例えば、運用管理端末52を介して、性能監視エージェント32a及び32bの監視情報管理部38a及び38bを呼び出し、性能監視エージェント32a及び32bの監視情報記憶部40a及び40bに、収集情報管理テーブルを記憶する。
収集情報管理テーブルは、性能監視エージェント32a及び32bの収集する監視情報について規定したテーブルであり、収集情報管理テーブルには、性能監視エージェント32が収集する性能情報と、その性能情報を取得する取得対象、取得リソース、及び、性能監視エージェント32が性能情報を取得する間隔(すなわち取得監視間隔)を示す内容が登録されている。言い換えると、性能監視エージェント32は、収集情報管理テーブルを参照することによって、どのリソースのどのような種類の性能情報をどれだけの間隔で取得すべきかを知ることができる。
また、初期設定として、性能監視エージェント32a及び32bの監視情報記憶部40a及び40bに、ゲストOS31a及び31bの性能情報提供部36a及び36bの参照先と、仮想化機構30上の監視情報提供部35の参照先と、が記憶される。参照先の情報は、監視情報収集部37a及び37bが、監視情報を収集する処理をするために呼び出す参照情報を示している。例えば、情報処理システムのオペレータが、運用管理端末52を介して、仮想化機構30の監視情報提供部35が提供するWebサービスのサービスエンドポイントを、仮想化機構30の監視情報提供部35の参照先として記憶する。
(2)次に、性能情報監視エージェントの監視情報収集部37a及び37bは、性能監視マネージャー48から性能情報収集開始要求メッセージを受信すると、ゲストOSの性能情報提供部36a及び36bから性能情報を、仮想化機構30の監視情報提供部35から監視情報を定期的に収集する(ステップ401)。
具体的には、監視情報収集部37a及び37bは、監視情報管理部38a及び38bを介して、監視情報記憶部40a及び40bからゲストOSの性能情報提供部36a及び36bの参照先、及び、仮想化機構30上の監視情報提供部35の参照先を読み出す。さらに、監視情報収集部37a及び37bは、監視情報管理部38a、38bを介して、監視情報記憶部40a、40bから収集情報管理テーブルを読み出す。参照先から監視情報提供部35、性能情報提供部36a、36bを呼び出すインターフェース仕様に基づき、監視情報テーブルの性能情報取得対象であるリソースについて、性能情報欄に記載された監視情報を取得する。
仮想化機構30の監視情報提供部35が提供する監視情報は、例えば、仮想ネットワークを経由して監視情報提供部35が提供するWebサービスを呼び出し、規定のインターフェースを呼び出すことによって取得されてもよい。また、ゲストOS31a、31bの性能情報は、例えば、性能情報を取得するライブラリを呼び出すことによって取得されてもよい。
ステップ401は、定期的に(すなわち、収集時間間隔ごとに)呼び出される。この定期的な呼び出しは、監視対象計算機50が有するタイマ機構(図示省略)を呼び出し、スケジュール管理することによって実行される。
(3)次に、性能監視エージェントの監視情報管理部38a及び38bは、性能監視エージェント32a及び32bの監視情報収集部37a及び37bが収集した性能情報を性能監視エージェントの監視情報記憶部40a及び40bに記憶する(ステップ402)。
例えば、性能監視エージェントの監視情報管理部38a及び38bは、取得した性能情報に、取得した時刻のタイムスタンプを付与して、図3C及び図3Dに示すようなテーブルに記憶する。
その後、収集時間間隔が経過すると、再びステップ401が実行される。
図4Bは、本発明の第1の実施形態の性能監視エージェント32が、性能監視マネージャー48を介して、運用管理端末52に監視情報を応答する処理を示すフローチャートである。
(1)最初に、情報処理システムのオペレータは、運用管理端末52から性能監視マネージャー48を介して、性能監視エージェント32a及び32bに監視情報要求メッセージを送信する(ステップ410)。
監視情報要求メッセージでは、オペレータが取得しようとする監視情報を特定する監視情報の取得時刻、取得対象名及び取得する性能情報名の一覧情報が指定される。
(2)次に、性能監視エージェント32a及び32bの監視情報管理部38a及び38bは、性能監視マネージャー48から送信された監視情報要求メッセージを受信する。監視情報管理部38a及び38bは、受信した監視情報要求メッセージから、時刻、取得対象名、リソース名及び性能情報名一覧情報を取得する(ステップ411)。なお、監視情報管理部38a及び38bは、監視情報要求メッセージを受信するまで待ち状態である。
(3)次に、監視情報管理部38a及び38bは、監視情報記憶部40a及び40bから、監視情報テーブル300及びゲスト性能情報テーブル440を読み出し、監視情報取得メッセージによって要求される情報を含むレコードを取得する(ステップ412)。具体的には、監視情報管理部38a及び38bは、監視情報取得メッセージに含まれる性能情報名及び取得時刻と同一の値が監視情報名欄300d及び時刻欄300aに記憶されているレコードを、監視情報テーブル300から取得する。さらに、監視情報管理部38a及び38bは、監視情報取得メッセージに含まれる性能情報名及び取得時刻と同一の値が監視情報名欄440d及び時刻欄440aに記憶されているレコードを、性能情報テーブル440から取得する。
なお、この処理の詳細は、図4Cにて別途説明する。
(4)そして、監視情報管理部38a、38bは、性能監視マネージャー48に対して、取得したレコードを指定し、監視情報応答メッセージを送信する(ステップ413)。すなわち、監視情報応答メッセージは、検索して取得したレコードのホスト名欄440b、仮想計算機名欄300b、リソース名欄300c及び440c、監視情報名欄300d及び440d、監視情報値欄300e及び440e、及び、時刻欄300a及び440aに記憶された値を含む。なお、監視情報管理部38a、38bは、複数のレコードを指定した場合、性能監視マネージャー48を介して、運用管理端末52に、指定した複数のレコードのそれぞれの情報を含む監視情報応答メッセージを送信する。
(5)そして、運用管理端末52の通信処理部55が、送受信部57を介して、性能監視マネージャー48の監視情報管理部が送信したメッセージを受信すると、出力部54が、メッセージに含まれる性能情報を出力装置(例えば、モニタ28)に出力する(ステップ414)。
図4Cは、本発明の第1の実施の形態の性能監視エージェント32a及び32bの監視情報管理部38a及び38bが、性能情報提供部36a及び36bから収集した情報と、監視情報提供部35から収集した情報とを対応付ける処理の一例を説明するフローチャートである。
(1)性能監視エージェント32a及び32bの監視情報管理部38a及び38bは、監視情報要求メッセージを受信すると、時刻、取得対象及び取得監視情報テーブル(図示省略)を抽出する。監視情報管理部38a及び38bは、抽出した時刻、取得対象及び取得監視情報テーブルを、それぞれ変数A1、A2及びA3として取得する(ステップ420)。
前記時刻は、取得する監視情報の時刻を指定するための時刻情報である。
前記取得対象は、監視情報を取得する対象を示す情報を含む。例えば、前記取得対象は、第1仮想計算機43a、第2仮想計算機43b、第1ゲストOS31a又は第2ゲストOS31b等を指定する情報を含む。
前記取得監視情報テーブルは、取得する監視情報に関する情報の一覧である。
(2)次に、監視情報管理部38a及び38bは、変数A3から要素を1つ取り出して、その要素を変数B1とする(ステップ421)。
(3)次に、監視情報管理部38a及び38bは、管理テーブル310を検索して、監視情報名欄310aが変数B1と一致するレコードの取得元名欄310bの値を抽出し、抽出した値を変数B2とする。そして、監視情報管理部38a及び38bは、変数B2が「ゲストOS」又は「仮想化機構」のいずれであるか判定する(ステップ422)。
(4)ステップ422において、変数B2が「ゲストOS」であると判定された場合、受信した監視情報要求メッセージは、ゲストOS31から取得された性能情報を要求している。この場合、監視情報管理部38a及び38bは、監視情報記憶部40a及び40bに記憶された仮想計算機ゲストOS対応テーブル702を検索し、仮想計算機名欄702aが変数A2と一致するレコードのホスト名欄702bの内容を抽出し、抽出された内容を変数B3として取得する(ステップ423)。
(5)次に、監視情報管理部38a及び38bは、監視情報記憶部40a及び40bに記憶されたゲスト性能情報テーブル440を検索し、時刻欄440aが変数A1、リソース名欄440cが変数B3、監視情報名欄440dが変数A3と一致するレコードを抽出し、抽出したレコードを変数Yに追加する(ステップ424)。
なお、監視情報提供部35から取得した監視情報のリソース名欄300cの番号付け規則及び命名規則と、性能情報提供部36a及び36bから取得した監視情報のリソース名欄440cの番号付け規則及び命名規則とが異なる場合がある。その場合には、例えば、以下の処理が実行される。
ゲストOS31と仮想計算機43との命名規則対応テーブル(図示省略)を運用管理端末52からオペレータが入力する。命名規則対応テーブルは、監視情報記憶部40に記憶される。監視情報管理部38は、命名規則対応テーブルを検索することで、対応関係を検索することができる。命名規則対応テーブルは、番号付け規則及び命名規則があらかじめ分かっている場合、容易に作成することができる。
また、ゲスト性能情報テーブル440内のリソース名欄440cと監視情報テーブル300のリソース名欄300cとは、それぞれの名前に対応するリソースに関連付けられた識別子情報に基づいて対応付けることもできる。例えば、対応付けようとするリソース名が仮想ネットワークインターフェースカード(NIC)の名前である場合、仮想NICに関連付けられているMACアドレス情報を参照し、一致するか否かを判定することで対応付けすることができる。また、運用管理端末52からリソースの関連付け情報を定義し、その定義に基づいて対応付けることもできる。さらに、ゲスト性能情報テーブル440及び監視情報テーブル300のそれぞれのリソース名欄440c及び300cを含むレコードの監視情報値の相関を解析し、その解析の結果に基づいてこれらのレコードを対応付けることもできる。
(6)ステップ422において、変数B2が「仮想化機構30」であると判定された場合、受信した監視情報要求メッセージは、仮想化機構30から取得された監視情報を要求している。この場合、監視情報管理部38a及び38bは、変数A2の内容を変数B3に代入する(ステップ427)。
(7)次に、監視情報管理部38a及び38bは、監視情報提供部35から取得した情報が記録された監視情報テーブル300を検索し、時刻欄300aが変数A1、リソース名欄300cが変数B3、監視情報名欄300dが変数A3と一致するレコードを抽出し、抽出されたレコードを変数Yに追加する(ステップ428)。
(8)次に、監視情報管理部38a及び38bは、変数A3から次の要素を取得し、変数B1にその要素の内容を記憶し、ステップ422に戻る(ステップ426)。次の要素がない場合、監視情報管理部38a及び38bは、変数Yの値を指定し、性能監視マネージャー48に応答メッセージを送信する(ステップ429)。
なお、運用管理端末52への表示(ステップ414)のために、対応付け処理は必須の処理ではない。すなわち、対応付けを実行することなく、取得された監視情報が表示されてもよいし、対応付けを表示しなくてもよい。
また、上記の例では、監視情報管理部38a、38bが、性能情報提供部36a、36b及び監視情報提供部35から取得した情報を監視情報記憶部40a、40bから読み出し、読み出された情報を対応付けている。その代わりに、監視情報管理部38a、38bが性能情報提供部36a、36bと監視情報提供部35から収集した監視情報を記憶する前に対応付ける処理をしてもよい。また、監視情報管理部38a及び38bの代わりに、性能監視マネージャー48の監視情報管理部47が対応付け処理を実行することもできる。
また、対応付け処理において、仮想計算機ゲストOS対応テーブル702は、オペレータが運用管理端末52から入力することによって構成されてもよいし、ネットワーク26に接続された構成情報を管理する計算機(図示省略)から取得した情報に基づいて自動的に構成されてもよい。構成情報を管理する計算機は、ゲストOS31と仮想計算機43との対応関係を管理し、求めに応じてその対応関係を応答する。
結局、監視情報テーブル300のいずれかのレコードが監視情報要求メッセージによって指定された場合、そのレコードに対応するゲスト性能情報テーブル440のレコードが、図4Cに示す対応付け処理によって特定される。ゲスト性能情報テーブル440のいずれかのレコードが監視情報要求メッセージによって指定された場合、そのレコードに対応する監視情報テーブル300のレコードが、図4Cに示す対応付け処理によって特定される。
具体的には、それらのレコードの時刻欄300aの内容と時刻欄440aの内容とが同一であり、リソース名欄300cの内容とリソース名欄440cの内容とが同一であり、監視情報名欄300dの内容と監視情報名欄440dの内容とが同一であり、かつ、ホスト名欄440bによって識別されるゲストOS31が、仮想計算機名欄300bによって識別される仮想計算機43上で稼動している場合、それらのレコードが対応する。
既に説明したように、監視情報テーブル300は、各仮想計算機43へのリソースの割り当て率を含む。一方、ゲスト性能情報テーブル440は、各仮想計算機43に割り当てられたリソースに対して、実際に使用されているリソースの割合を示す使用率を含む。このため、図4Cの処理によって対応付けられた二つのレコードの監視情報値欄300eの内容と監視情報値欄440eの内容とに基づいて、ある時点における監視対象計算機50のリソースの実際の使用率を算出することができる。
例えば、図3C及び図3Dの例では、それぞれのテーブルの先頭レコードどうしが対応する。この例では、2007年1月11日午前10時0分0秒の時点で、「vCPU1」によって識別される仮想CPUに、監視対象計算機50のCPU21の全CPU時間のうち30%が割り当てられ、そのうち30%が実際に使用されている。すなわち、その時点で、監視対象計算機50のCPU21の全CPU時間の30%のうちの30%(すなわち全CPU時間の9%)が、「vCPU1」によって識別される仮想CPUによって使用されている。
いずれかの仮想計算機43のリソース使用率が高くなったために、その仮想計算機43の処理性能が低下する場合がある。このような障害が発生した場合、上記のように監視対象計算機50の(物理的な)リソースの使用率を算出することによって、性能低下に対する効果的な対処方法を決定することができる。例えば、仮想計算機43aのリソースの監視情報値440eが高い値であっても、仮想計算機43bに割り当てられているリソースの一部を仮想計算機43aに新たに割り当てることによって、仮想計算機43aの処理性能を改善できる場合がある。具体的には、各仮想計算機43によって実際に使用されている監視対象計算機50のリソースの使用率を算出することによって、いずれかの仮想計算機43に割り当てられているにもかかわらず実際には使用されていないリソースの存在を知ることができる。そのようなリソースを、性能が低下した仮想計算機43に新たに割り当てることによって、他の仮想計算機43の処理性能に影響を与えることなく、性能を改善することができる。
仮想計算機43の障害を表す障害パターンとしては、例えば、以下に説明するようなものがある。
ゲスト性能情報39のCPU使用率(すなわち、監視情報値440eとして記憶されている値)が高い場合であって、物理CPU使用率(すなわち、監視対象計算機50のCPU21の使用率)は高くなく、ゲストOS31に対応する仮想計算機43のCPU割当て率がCPU割当上限で制限されているパターン。この場合、CPU割当上限設定がボトルネックになっていると判断することができる。したがって、障害への対処として、CPU割当上限設定値を上げる決定をすることができる。
ページングが頻繁に発生していることがゲスト性能情報39からわかるパターン。このことは、仮想計算機43に設定したメモリサイズが少ないことを表している。
スワップI/O処理が頻繁に発生していることが仮想計算機43の性能情報からわかるパターン。ことことから、仮想計算機43に割り当てられているメモリサイズが不足していることがわかる。
本発明の第1の実施形態によれば、以上に説明したような手法を用いることによって、ゲストOS31を監視するために必要最低限の情報をゲストOS31上に収集し、収集した情報に基づいてゲストOS31を監視することができる。また、本発明の第1の実施形態によれば、複数あるゲストOS31上のそれぞれの上で性能を監視することができる。このため、監視対象であるゲストOSに近い場所で監視することができる。
また、あるゲストOS31上の性能監視エージェント32が何らかの障害によって停止した場合、他のゲストOS31上の性能監視エージェント32が、仮想化機構30から、障害によって停止した性能監視エージェント32が稼動する仮想計算機43の監視情報を収集している。このため、その情報を監視することによって当該仮想計算機43に関する監視を継続することが可能となる。
さらに、仮想計算機43を他の監視対象計算機50に移行する、いわゆるライブマイグレーション処理を行った場合、ライブマイグレーション処理を実行する前に収集した監視情報を監視情報記憶部40に保持したまま移行することが可能である。このため、オペレータは、仮想計算機43のライブマイグレーション処理後も、ライブマイグレーション処理前に監視した監視情報を運用管理端末52から取得することが可能である。
また、監視情報収集部37a、37bが、監視情報提供部35から監視情報を収集する処理は、物理的なネットワーク26を介さず、監視対象計算機50のメモリ内のコピー処理のみによって実行される。このため、ネットワーク26の障害や遅延に影響されることなく、監視情報を収集することができる。
さらに、第1の実施形態は、従来の仮想化機構30上で稼動する従来のゲストOS31上に性能監視エージェント32をインストールすることによって実現することができる。すなわち、第1の実施形態によれば、従来の仮想化機構30及び従来のゲストOS31を変更する必要がない。
次に、本発明の第2の実施形態を説明する。
図5は、本発明の第2の実施形態による情報処理システムの構成を示す機能ブロック図である。
本発明の第2の実施形態による情報処理システムでは、第1の実施形態のようにゲストOS31上で性能監視エージェント32が稼動する代わりに、仮想化機構30上で性能監視エージェント32が稼動する。以下、第2の実施形態による情報処理システムの構成及び処理動作のうち、第1の実施形態によるものと異なる部分について説明し、第1の実施形態と同様の部分については説明を省略する。
ゲストOS31a及び31bは、それぞれ、補助ドライバ42a及び42bを含む。補助ドライバ42a及び42bは、性能監視エージェント32の処理動作を補助するプログラムであり、ゲストOS31a及び31bの外からの処理要求を受け、ゲストOS31a及び31b上で処理を実行し、処理結果を応答する。性能監視エージェント32がこの補助ドライバ42a及び42bに与える指示及び補助ドライバ42a及び42bによる性能監視エージェント32への応答は、仮想化機構30のメッセージ通信処理部34を用いて行われる。
性能監視エージェント32は、ゲストOS31a及び31b上ではなく仮想化機構30のいわゆる管理OS上で稼動する。
例えば、非特許文献「VMWare Infrastructure リソース管理ガイド」(http://www.vmware.com/ja/pdf/vi3_esx_resource_mgmt_ja.pdf)に、サービスコンソールが記載されている。性能監視エージェント32は、このようなサービスコンソールの上で稼動してもよい。
性能監視エージェント32は、監視情報収集部37と、監視情報管理部38と、監視情報記憶部40と、を含む。
ここで、性能監視エージェント32が監視情報記憶部40に監視情報を格納する処理動作の一例を説明する。
(1)監視情報収集部37は、監視情報提供部35から監視情報を定期的に収集する(ステップ500)(図示省略)。
(2)監視情報収集部37は、各ゲストOS31a及び31b上の補助ドライバ42a及び42bに対して、性能情報提供部36が保持するゲスト性能情報39を取得するよう要求するメッセージを送信する(ステップ501)(図示省略)。
(3)補助ドライバ42a及び42bは、要求メッセージを受け取り、性能情報提供部36からゲスト性能情報39を取得する。そして、補助ドライバ42a及び42bは、取得した情報を指定して、監視情報収集部37に応答メッセージを送る(ステップ504)(図示省略)。
(4)監視情報収集部37は、補助ドライバ42a及び42bが応答した性能情報を取得する(ステップ506)(図示省略)。
(5)監視情報管理部38は、監視情報収集部37が取得したこれらの性能情報を監視情報記憶部40に書き込む(ステップ508)(図示省略)。
(6)前回の情報取得時から一定時間経過した後、ステップ500に戻る。
以上に説明したような手法を用いることによって、本発明の第2の実施形態は、ゲストOS31及び仮想計算機43を監視することができ、効果的な対処決定をすることができる。また、各ゲストOS31a及び31b上でエージェントを動作させずに、仮想化機構30上で性能を一括して管理し、全てのゲストOS31a及び31bの性能情報と仮想計算機43の性能情報とを対応付けることができる。このため、全てのゲストOS31a及び31bに関してゲスト性能情報39と仮想計算機43の情報とを用いた性能解析を行うことができる。また、ゲストOS31ごとに仮想計算機43上の監視情報を重複して持たないため、保持するデータのサイズを節約することができる。
また、第1の実施形態と異なり、ゲストOS31a及び31bごとに性能監視エージェントをインストールする必要がなく、仮想化機構30上にのみインストールすればよいため、運用コストが少なくてすむ。さらに、ゲストOS31a及び31bのプラットフォームごとの性能監視エージェントプログラムを作成する必要がない点でプログラム開発面でも優れている。
さらに、監視情報収集部37が、監視情報提供部35から監視情報を収集する処理は、物理的なネットワーク26を介さず、監視対象計算機50のメモリ22内のコピー処理のみによって実現できるため、ネットワーク26の障害や遅延に影響されることなく、監視情報を収集することができる。
なお、第1の実施形態と、第2の実施形態とを組み合わせることもできる。
すなわち、各ゲストOS31a及び31b上で稼動し、個別に各ゲストOS上の性能情報を取得する性能監視エージェント32a及び32bと、仮想計算機43上で稼動して監視情報提供部35から監視情報を収集する性能監視エージェント32と、を備えるシステムが構成されてもよい。この場合、それぞれの監視情報記憶部40に収集した性能情報が記憶される。監視情報管理部38は、性能監視マネージャー48からの要求に応じて、記憶している監視情報を応答する。性能監視マネージャー48は、応答のあった情報を対応付け処理(図4C参照)し、運用管理端末52に対応付け後の監視情報を応答する。
次に、本発明の第3の実施形態を説明する。
図6は、本発明の第3の実施形態による情報処理システムの構成を示す機能ブロック図である。
本発明の第3の実施形態による情報処理システムは、第1の実施形態で示したように性能監視エージェント32を監視対象計算機50上で稼動させる代わりに、別の計算機上で稼動させる。
本発明の第3の実施形態による情報処理システムの構成について以下説明する。ただし、第1の実施形態による情報処理システムの構成と同じ部分については説明を省略する。
本発明の第3の実施形態による情報処理システムは、監視エージェント計算機60と、監視対象計算機50と、監視マネージャー計算機51と、運用管理端末52と、を備える計算機システムによって構成される。監視エージェント計算機60、監視対象計算機50、監視マネージャー計算機51及び運用管理端末52は、相互にネットワーク26を介して接続されている。図6に示した第3の実施形態は、監視エージェント計算機60と、監視マネージャー計算機51と、運用管理端末52とが相互にネットワーク接続される例を示している。しかし、これらはネットワーク接続されている必要はない。すなわち、監視エージェント計算機60、監視マネージャー48及び運用管理端末52の一部又は全部が同一計算機上に実現されてもよい。
監視エージェント計算機60は、性能監視エージェント32を備えている。
性能監視エージェント32は、監視情報収集部37と、監視情報管理部38と、監視情報記憶部42と、を含む。
監視情報記憶部42は、監視情報収集部37が収集した情報が格納される領域であり、監視エージェント計算機60上の外部記憶装置25の記憶領域に相当する。監視情報収集部37が収集した情報を、監視情報管理部38が監視情報記憶部42に格納する。
監視対象計算機50は、仮想化機構30を備える。仮想化機構30は、第1仮想計算機43aと、第2仮想計算機43bと、構築する。第1仮想計算機43a及び第2仮想計算機43bは、それぞれ、第1ゲストOS31a及び第2ゲストOS31bを稼動させる。
第1ゲストOS31aは、補助ドライバ42a及び性能情報提供部36aを含む。第2ゲストOS31bは、補助ドライバ42b及び性能情報提供部36bを含む。補助ドライバ42a及び42bは、性能監視エージェントの処理動作を補助するプログラムである。補助ドライバ42a及び42bは、ゲストOS31の外からの処理要求を受け、ゲストOS31上で処理を実行し、処理結果を応答する。
なお、監視エージェント計算機60も、監視対象計算機50、監視マネージャー計算機51及び運用管理端末52と同様、図2に示す計算機20のハードウェア構成によって実現することができる。性能監視エージェント32は、外部記憶装置25に記憶されるプログラムである。性能監視エージェント32がメモリ22に読み込まれ、CPU21によって実行されることによって、性能監視エージェント32が備える各部の処理が実現される。
本実施形態の監視情報収集部37が監視情報を収集する処理動作を以下に説明する。
(1)監視情報収集部37は、監視エージェント計算機60内の通信インターフェース24を経由し、ネットワーク26を介して、監視対象計算機50の監視情報提供部35から、ホスト性能情報30a、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cを取得する(ステップ301)(図示省略)。第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cは、第1仮想計算機43a及び第2仮想計算機43bに関する仮想計算機リソース割当情報と、仮想計算機構成情報と、仮想計算機性能情報と、を含む。
(2)ステップ301と同じタイミングで、監視情報収集部37は、ゲストOS31上の補助ドライバ42a及び42bに、ゲストOS31上の性能情報の取得要求を出す(ステップ302)(図示省略)。補助ドライバ42a及び42bは、要求された性能情報を性能情報提供部36a及び36bから取得して、監視情報収集部37に応答する。
(3)監視情報管理部38は、ステップ301で収集した前記監視情報(30a、30b及び30c)と、ゲスト性能情報とを監視情報記憶部40に記憶する(ステップ303)(図示省略)。
以上に説明した手法を用いることによって、本発明の第3の実施形態では、監視対象計算機50から物理的に独立した監視エージェント計算機60が仮想計算機を監視することができる。
第1の実施形態では、監視対象である監視対象計算機50、仮想化機構30又はゲストOS31のいずれかに障害が発生した場合、障害発生箇所において稼動していた性能監視エージェント32が障害発生前に監視情報記憶部40に格納した情報を参照できなくなる。第2の実施形態では、仮想化機構30に障害が発生した場合に、性能監視エージェント32が障害発生前に監視情報記憶部40に格納した情報を参照できなくなる。しかし、本発明の第3の実施形態によれば、監視エージェント計算機60が監視対象計算機50から物理的に独立している。このため、監視対象である監視対象計算機50、仮想化機構30又はゲストOS31に障害が発生しても、障害発生前に監視情報記憶部40に格納した情報を参照することができ、その情報を障害対処決定に利用することができる。
なお、第1の実施形態と、第3の実施形態とを組み合わせることもできる。
すなわち、各ゲストOS31a及び31b上で稼動し、個別に各ゲストOS31a及び31b上の性能情報を取得する性能監視エージェント32a及び32bと、監視エージェント計算機60上で稼動し、監視情報提供部35から監視情報を収集する性能監視エージェント32と、を備えるシステムが構成されてもよい。この構成では、それぞれの計算機上における監視情報記憶部40に、収集した性能情報を記憶する。監視情報管理部38は、性能監視マネージャー48からの要求に応じて、記憶されている監視情報を応答する。性能監視マネージャー48では、監視情報管理部47が、応答された情報に基づいて、ゲストOS31の監視情報と仮想計算機43の監視情報との対応付け処理、及び、仮想計算機43間又はゲストOS31間の監視情報を関連付ける処理を実行する。そして、性能監視マネージャー48は、対応付けられた監視情報を運用管理端末52に応答する。
次に、本発明の第4の実施形態を説明する。
図7は、本発明の第4の実施形態による情報処理システムの構成を示す機能ブロック図である。
図7に示す第4の実施形態では、図1に示した第1の実施形態と同様、各ゲストOS31上でそれぞれ性能監視エージェント32が稼動している。本実施形態では、複数の性能監視エージェント32のうち一つが、各性能監視エージェント32を代表する代表監視エージェントに指定される。図7の例では、第1性能監視エージェント32aが代表監視エージェントである。代表監視エージェントのみが、仮想化機構30から取得した監視情報を格納する。その結果、同一の仮想化機構30上の監視情報を各性能監視エージェント32が重複して保持することを防止することができる。
本発明の第4の実施形態による情報処理システムの構成について以下説明する。ただし、第1の実施形態による情報処理システムの構成と共通する部分については説明を省略し、差異点について説明する。
監視情報記憶部40a及び40bは、代表監視エージェント情報41a、41b、仮想計算機ゲストOS対応テーブル記憶領域(図示省略)、性能監視エージェントゲストOS対応テーブル記憶領域(図示省略)、閾値テーブル記憶領域(図示省略)及び監視間隔情報(図示省略)を含む。
代表監視エージェント情報41a、41bは、どの性能監視エージェント32が代表監視エージェントであるのかを判断するための情報である。例えば、代表監視エージェント情報41a、41bには、代表監視エージェントである性能監視エージェント32の識別子情報が記憶される。例えば、図7に示すように、第1性能監視エージェント32aが代表監視エージェントである場合、監視情報記憶部40a及び40bは、代表監視エージェント情報41a及び41bとして、第1性能監視エージェント32aの識別子「Agt1」を記憶する。
仮想計算機ゲストOS対応テーブル記憶領域には、ゲストOS31と仮想計算機43とを対応付けるための情報が記憶される。具体的には、例えば、仮想計算機ゲストOS対応テーブル記憶領域には、仮想計算機ゲストOS対応テーブル702が記憶される(図3A参照)。
性能監視エージェントゲストOS対応テーブル記憶領域には、ゲストOS31とそのゲストOS31上で稼動する性能監視エージェント32とを対応付けるための情報が記憶される。具体的には、例えば、性能監視エージェントゲストOS対応テーブル記憶領域には、性能監視エージェントゲストOS対応テーブル701が記憶される(図3B参照)。
閾値テーブル記憶領域には、仮想計算機の負荷状況を判定するための閾値に関する情報が記憶される。例えば、閾値テーブル記憶領域には、図8に示すような閾値テーブル703が記憶される。
図8は、本発明の第4の実施形態の閾値テーブル703の説明図である。
図示するように閾値テーブル703は、番号欄703a、仮想計算機名欄703b、リソース名欄703c及び判定条件欄703dを含む。
番号欄703aには、閾値テーブル703の各行(すなわち各レコード)を識別するための番号が記憶される。
仮想計算機名欄703bには、仮想計算機43に設定されている名称が記憶される。
リソース名欄703cには、仮想計算機43を構成する仮想的なリソースの識別子が記憶される。
判定条件欄703dには、監視情報名と、監視情報名に対応する監視情報の条件式が記憶されている。条件式は、前記監視情報が前記条件式を満たした場合に、仮想計算機の負荷が高いものと判断するために用いられる。
判定条件欄703dには、どのような条件が記憶されてもよい。典型的には、リソースに対して与えられた設定値、又は、リソースにおいて測定された性能値が、所定の閾値を超えたか否かを判定する条件式が、判定条件欄703dに記憶される。設定値又は性能値が所定の閾値を超えたか否かを判定する代わりに、設定値又は性能値が所定の閾値を下回ったか否か、所定の値と同一であるか否か、又は、所定の範囲内であるか否かが判定されてもよい。例えば、設定値又は性能値が低いほど仮想計算機の負荷が高いと判定される場合、設定値又は性能値が所定の閾値を下回ったか否かが判定されてもよい。閾値と比較される設定値又は性能値は、例えば、CPU割り当て率、CPU割り当て要求率、CPU使用率、メモリ割り当て率又はメモリ使用率等である。
図8の例では、番号欄703aに「1」が記憶されているレコードの仮想計算機名欄703b、リソース名欄703c及び判定条件欄703dに、それぞれ、「VM1」、「vCPU1」及び「CPU割り当て率>80%」が記憶されている。これは、「VM1」によって識別される仮想計算機43の、「vCPU1」によって識別されるリソース(例えば仮想CPU)に対する割り当て率が80%を超えている場合、そのリソースの負荷が高いと判定されることを意味する。
監視間隔情報には、性能監視エージェント32a及び32bが、監視情報提供部35と性能情報提供部36a及び36bから、性能情報及び監視情報を収集する時間間隔が記録される。監視情報収集部37a、37bは、監視間隔情報に記録された監視間隔で性能情報及び監視情報を収集する。
本実施形態による情報処理システムの第1仮想計算機43a及び第2仮想計算機43bは、第1仮想計算機43a及び第2仮想計算機間43bによって共有される共有記憶部56を有している。
例えば、第1仮想計算機43a及び第2仮想計算機43bが、ディスクを共有してもよい。このようなディスクの共有は、仮想ディスクデバイス(図示省略)を構成し、第1仮想計算機43aと、第2仮想計算機43bから仮想ディスクデバイスをマウントすることによって実現することができる。仮想ディスクデバイスは、例えば、外部記憶装置25の記憶領域の一部によって構成される仮想的な記憶装置である。
共有記憶部56は、監視情報テーブル記憶領域59a及び59bを備える。監視情報テーブル記憶領域59a及び59bは、仮想化機構30から取得された監視情報を記憶する領域である。監視情報は、性能監視エージェント32の監視情報収集部37a及び37bによって仮想化機構30から取得され、監視情報管理部38a及び38bによって監視情報テーブル記憶領域59a及び59bに格納される。監視情報テーブル記憶領域59aに情報を書き込む権限は、監視情報管理部38aのみに与えられる。監視情報テーブル記憶領域59bに情報を書き込む権限は、監視情報管理部38bのみに与えられる。監視情報テーブル記憶領域59a及び59bから情報を読み込む権限は、すべての監視情報管理部38に与えられる。
例えば、監視情報テーブル記憶領域59aは、第1性能監視エージェント32a用の領域である。第1性能監視エージェント32aは、監視情報テーブル記憶領域59aからの読み込みと、監視情報テーブル記憶領域59aへの書き込みを実行することができる。一方、第2性能監視エージェント32bは、監視情報テーブル記憶領域59aからの読み込みのみ実行できる。
監視情報テーブル記憶領域59bは、第2性能監視エージェント32b用の領域である。第2性能監視エージェント32bは、監視情報テーブル記憶領域59bからの読み込みと、監視情報テーブル記憶領域59bへの書き込みを実行することができる。一方、第1性能監視エージェント32aは、監視情報テーブル記憶領域59bからの読み込みのみ実行できる。
監視情報テーブル記憶領域59a及び59bの少なくとも一つには、例えば、図3Cに示すような監視情報テーブル300が記憶される。
共有記憶部56の参照先を示す情報、監視情報テーブル記憶領域59a及び59bの参照先を示す情報、及び、監視情報テーブル300の参照先を示す情報は、監視情報管理部38a及び38bによって記憶される。
なお、性能情報提供部36a及び36bから取得した性能情報は、共有記憶部56の監視情報テーブル記憶領域59a及び59bに記憶されてもよいし、監視情報記憶部40a及び40bに記憶されてもよい。
次に、本発明の第4の実施形態による情報処理システムの処理動作について説明する。
図9Aは、本発明の第4の実施形態による情報処理システムが性能情報を収集する処理、及び、収集した情報を共有記憶部56に記憶する処理を説明するフローチャートである。
(1)最初に、情報処理システムのオペレータは、初期設定を行う(ステップ901)。
初期設定として、情報処理システムのオペレータは、例えば、運用管理端末52を用い、性能監視マネージャー48を介して、性能監視エージェント32の監視情報管理部38を呼び出し、性能監視エージェント32の監視情報記憶部40に含まれる代表監視エージェント情報41として、代表監視エージェントの識別子情報を記憶させる。さらに、オペレータは、仮想計算機ゲストOS対応テーブル702を仮想計算機ゲストOS対応テーブル記憶領域に記憶させる。さらに、オペレータは、性能監視エージェントゲストOS対応テーブル701を性能監視エージェントゲストOS対応テーブル記憶領域に記憶させる。
なお、これらのテーブルは、運用管理端末52を介してオペレータによって入力されてもよいし、性能監視エージェント32の監視情報管理部38が、性能監視マネージャー48の監視情報管理部47を呼び出して同様のテーブルを取得してもよいし、テーブルに記述された内容の情報を管理する外部の構成管理サーバ(図示省略)を呼び出して、その構成管理サーバから取得した内容に基づいて自動的にテーブルを作成してもよい。
また、初期設定として、情報処理システムのオペレータは、例えば、運用管理端末52を用い、性能監視マネージャー48を介して、性能監視エージェント32の監視情報管理部38を呼び出し、性能監視エージェント32の監視情報記憶部40に、図8に示すような閾値テーブル703を記憶させる。
情報処理システムのオペレータは、閾値テーブル703に登録する適当な情報を、運用管理端末52の入力部53を介して入力することもできる。
(2)次に、情報処理システムのオペレータは、運用管理端末52を用い、性能監視マネージャー48を介して、性能監視エージェント32に対して、性能情報の監視開始要求メッセージを送信する(ステップ902)。
(3)監視開始要求メッセージを受信した性能監視エージェント32の監視情報収集部37は、監視情報を定期的に収集し、監視情報管理部38を呼び出し、共有記憶部56に収集した監視情報を記憶する(ステップ903からステップ908)。定期的に収集される監視情報は、例えば、仮想化機構30の監視情報提供部35から提供されるホスト性能情報30a、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30c、及び、ゲストOS31の性能情報提供部36から提供される各ゲストOS31の性能情報である。
なお、これらのステップの処理は、情報処理システムのオペレータが、運用管理端末52を用い、性能監視マネージャー48を介して、性能監視エージェント32に対して監視終了メッセージを送信し、当該メッセージを前記性能監視エージェントが受信するまで繰り返して実行される。
以下、これらのステップにおける処理について、詳細に説明する。なお、ここでは、監視情報提供部35から監視情報を収集し、記憶する処理について説明する。
(4)まず、監視情報収集部37aは、前回監視情報を取得した時刻から、設定された監視間隔時間だけ待つ(ステップ903)。その後、監視情報収集部37aは、監視情報提供部35からホスト性能情報30a、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cを取得する(ステップ904)。第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cは、第1仮想計算機43a及び第2仮想計算機43bに関する仮想計算機リソース割当情報、仮想計算機構成情報及び仮想計算機性能情報を含む。なお、このステップにおいて、監視対象計算機50上で稼動する全ての仮想計算機43に関する情報が取得される。
(5)次に、監視情報管理部38は、代表監視エージェント情報41を参照して代表監視エージェントを特定する(ステップ905)。そして、監視情報管理部38は、その監視情報管理部38が属する性能監視エージェント32が代表監視エージェントであるか否かを判定する(ステップ906)。
(6)以下、例として、第1性能監視エージェント32aが代表監視エージェントである場合について説明する。この場合、ステップ906において、監視情報管理部38aは、監視情報管理部38aが属する第1性能監視エージェント32aが代表監視エージェントであると判定する。この場合、監視情報管理部38aは、取得したホスト性能情報30a、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cを、これらの情報を取得した時刻と関連付けて、共有記憶部56の第1性能監視エージェント32a用の記憶領域(すなわち、監視情報テーブル記憶領域59a)に記憶する(ステップ907)。
(7)一方、監視情報管理部38bは、ステップ906において、監視情報管理部38bが属する第2性能監視エージェント32bが代表監視エージェントではないと判定する。この場合、第2性能監視エージェント32bの監視情報管理部38bは、代表監視エージェント情報41bを参照して、代表監視エージェントである第1性能監視エージェント32aの識別子を取得する。そして、監視情報管理部38bは、取得した識別子に基づいて、ステップ904で取得した情報のうち、代表監視エージェントの性能を示す情報を特定する。そして、監視情報管理部38bは、特定された情報に基づいて、代表監視エージェントが稼動する第1仮想計算機43aの負荷が高いか否かを判定する(ステップ908)。代表監視エージェントの負荷が高いか否か(すなわち、代表監視エージェントが稼動する仮想計算機43の負荷が高いか否か)の判定は、後に、図9Cで示すフローチャートを参照して説明する。
(8)ステップ908において、第1仮想計算機43aの負荷が高いと判定された場合、第1仮想計算機43a又はそれに関連する部分に障害が発生していると考えられる。この場合、第2性能監視エージェント32bの監視情報管理部38bは、取得したホスト性能情報30a、第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cを、これらの情報を取得した時刻と関連付けて、共有記憶部56の第2性能監視エージェント32b用の記憶領域(すなわち、監視情報テーブル記憶領域59b)に記憶する(ステップ907)。そして、処理はステップ903に戻る。
(9)ステップ908において、第1仮想計算機43aの負荷が高くないと判定された場合、第1仮想計算機43a及びそれに関連する部分に障害が発生していないと考えられる。この場合、第2性能監視エージェント32bの監視情報管理部38bは、取得した情報を共有記憶部56に記憶せず、ステップ903に戻る。
なお、本フローチャートにおいて、性能情報提供部36a及び36bから取得した情報を共有記憶部56に記憶する場合、ステップ904において、性能情報提供部36a及び36bから性能情報が取得され、その性能情報が、ステップ907において、共有記憶部56の各性能監視エージェント32用の記憶領域に記憶される。
図9Bは、本発明の第4の実施形態による性能監視エージェント32が監視情報収集部37から収集し記憶した監視情報を読み出す処理、及び、監視情報を運用管理端末52に表示する処理を示すフローチャートである。
(1)情報処理システムのオペレータは、性能監視エージェント32の監視情報管理部38に監視情報要求メッセージを送信することを運用管理端末52に指示する。この指示は、入力部53を用いて運用管理端末52に入力される。運用管理端末52は、オペレータの指示に従って、性能監視マネージャー48を介して、性能監視エージェント32の監視情報管理部38に監視情報要求メッセージを送信する(ステップ910)。
なお、監視情報要求メッセージは、取得監視情報テーブル(図示省略)を含む。取得監視情報テーブルには、オペレータが取得を要求する監視情報を指定する情報が記憶される。
例えば、取得監視情報テーブルは、時刻欄、仮想計算機名欄、リソース名欄及び性能情報名欄を含む。監視情報テーブル300と同様に、時刻欄には時刻が、仮想計算機名欄には仮想計算機名が、リソース名欄にはリソース名が、監視情報名欄には監視情報名が記憶される。これらの欄の値によって、オペレータが取得を要求する監視情報が指定される。監視情報テーブル300と同様、これらの欄の一組が一つのレコードに相当する。
(2)性能監視エージェント32の監視情報管理部38は、性能情報要求メッセージを運用管理端末52から受信する。性能監視エージェント32a及び32bの監視情報管理部38a及び38bは、受信した性能情報要求メッセージから、取得監視情報テーブルを抽出して、抽出した取得監視情報テーブルを変数Xとして取得する(ステップ911)。
(3)性能監視エージェント32の監視情報管理部38は、変数Xのうち最初の要素を変数X1として取得する(ステップ912)。ここで、変数Xの一つの要素は、変数Xとして取得された取得監視情報テーブルの一つのレコードに相当する。
(4)監視情報管理部38a及び38bは、共有記憶部56を呼び出し、監視情報テーブル記憶領域59の中から一つを選択し、選択された監視情報テーブル記憶領域59に記憶されている監視情報テーブル300を変数Zとして取得する(ステップ913)。
なお、ステップ913では、一つの監視対象計算機50上の仮想計算機上で稼動する性能監視エージェント32によって記憶された監視情報テーブル記憶領域59の中から一つが選択される。
(6)そして、性能監視エージェント32の監視情報管理部38は、変数Zとして取得された監視情報テーブル300を検索し、監視情報テーブル300の時刻欄300a、仮想計算機名欄300b、リソース名欄300c及び監視情報名欄300dが、それぞれ変数X1の時刻、仮想計算機名、リソース名及び監視情報名と一致するレコードがあるか否かを判定する(ステップ914)。一致するレコードがあれば、性能監視エージェントの監視情報管理部38は、そのレコードを変数Y1として取得する。
すなわち、例えば、第1性能監視エージェント32aの監視情報管理部38aは、共有記憶部56を呼び出し、監視情報テーブル記憶領域59a及び59bから、順次、監視情報テーブル300を読み出す。そして、監視情報管理部38aは、読み出した監視情報テーブル300を検索し、変数X1と一致するレコードを取得する。ここで、変数X1と一致するレコードを発見したとき、監視情報管理部38aは、変数Y1に関する検索を終了してもよいし、全ての監視情報テーブル300を検索してもよい。
監視情報管理部38aは、全ての監視情報テーブル300を検索した結果、変数X1と一致するレコードを重複して発見する場合がある。例えば、代表でない性能監視エージェント32が稼動する仮想計算機43が複数存在する場合において、代表監視エージェントが稼動する仮想計算機の43の負荷が高いと判定されると、複数の性能監視エージェント32が、仮想化機構30から取得した同一の監視情報を共有記憶部56に記憶する。この場合、変数X1と一致する複数のレコードが発見される。その場合、監視情報管理部38aは、発見された複数のレコードのうち一つのみを取得し、残りを破棄してもよい。
代表監視エージェント(例えば、第1性能監視エージェント32a)が収集した監視情報テーブル300のみならず、代表監視エージェントでない性能監視エージェント(例えば、第2性能監視エージェント32b)が収集した監視情報テーブル300をも検索対象とすることによって、代表監視エージェントが取得に失敗した監視情報も取得することができる。
(7)ステップ914において、変数X1と一致するレコードが発見された場合、監視情報管理部38は、変数Y1を応答性能情報テーブルYの要素として追加する(ステップ916)。
(8)次に、監視情報管理部38は、変数Xに変数X1の次の要素があるか否かを判定する(ステップ917)。変数Xに変数X1の次の要素がある場合、監視情報管理部38は、変数Xから変数X1の次の要素を、新たな変数X1として取得する(ステップ912)。以後、監視情報管理部38は、新たな変数X1についてステップ913以降の処理を実行する。
(9)一方、監視情報管理部38は、変数Xに変数X1の次の要素がない場合、性能監視マネージャー48を介して、取得した変数Yの内容を運用管理端末52に返信する(ステップ918)。
なお、変数Yには、監視情報テーブル300のレコードのうち、取得監視情報テーブルによって特定された監視情報の値を含むレコードが格納されている。例えば、変数Yには、代表監視エージェントが監視情報テーブル300に格納した監視情報に関する行と、代表監視エージェントが監視情報テーブル300に格納できなかった監視情報であって、代表監視エージェントではない性能監視エージェント32が格納した監視情報に関する行が含まれることもある。
(10)ステップ914において、変数X1と一致するレコードが発見されない場合、ステップ913における次の検索対象となる新たな監視情報テーブル記憶領域59があるか否かを判定する(ステップ915)。次の検索対象となる新たな監視情報テーブル記憶領域59がある場合、処理はステップ913に戻る。次の検索対象となる新たな監視情報テーブル記憶領域59がない場合、処理はステップ917に進む。
図9Cは、本発明の第4の実施形態において、代表監視エージェントが稼動する仮想計算機43の負荷が高いか否かを判定するために実行される処理を示すフローチャートである。
例として、図9Cは、代表監視エージェントでない性能監視エージェント32aの監視情報管理部38bが、代表監視エージェントである性能監視エージェント32aの稼動する仮想計算機43aの負荷が高いか否かを判定する処理を示す。
(1)監視情報管理部38bは、監視情報記憶部40bを呼び出し、代表監視エージェント32が稼動する仮想計算機43の名前を変数Iとして取得する(ステップ921)。
具体的には、監視情報管理部38bは、代表監視エージェント情報41bを読み出し、性能監視エージェントゲストOS対応テーブル701及び仮想計算機ゲストOS対応テーブル702から、仮想計算機名を取得する。
(2)次に、監視情報管理部38bは、閾値テーブル703を検索し、仮想計算機名欄703bが変数Iと一致するレコードを変数Jとして取得する(ステップ922)。
(3)次に、監視情報管理部38bは、監視情報テーブル300を検索し、仮想計算機名欄300bが変数Iと一致し、かつ、リソース名欄300cが変数Jのリソース名欄703cと一致するレコードを、変数Kとして取得する(ステップ923)。
(4)次に、監視情報管理部38bは、変数Jの監視情報名欄300d及び監視情報値欄300eが、変数Kの判定条件欄703dに記憶された条件を満たすか否かを判定する(ステップ924)。
(5)ステップ924の判定の結果、変数Kの条件を満たす変数Jがある場合、監視情報管理部38bは、代表監視エージェントが稼動する仮想計算機43の負荷が高いと判定し、処理を終了する(ステップ925)。
(6)ステップ924の判定の結果、変数Kの条件を満たす変数Jがない場合、監視情報管理部38bは、ステップ923に該当するレコードがさらにあるか否かを判定する(ステップ926)。
(7)ステップ926の判定の結果、該当するレコードがあった場合、監視情報管理部38bは、そのレコードを新たな変数Kとして取得する(ステップ927)。そして、新たな変数Kについて、ステップ924の判定が実行される。閾値テーブル703において、一つのリソースに複数の判定条件が設定されている場合がある。この場合、ステップ924、926及び927のループを実行することによって、それらの複数の判定条件のうち少なくとも一つが満たされる場合に、仮想計算機43の負荷が高いと判定される。
(8)ステップ926の判定の結果、該当するレコードがない場合、監視情報管理部38bは、ステップ922に該当するレコードがさらにあるか否かを判定する(ステップ928)。
(9)ステップ928の判定の結果、該当するレコードがある場合、監視情報管理部38bは、そのレコードを新たな変数Jとして取得する(ステップ929)。そして、新たな変数Jについて、ステップ923以降の処理が実行される。閾値テーブル703において、一つの仮想計算機43の複数のリソースに判定条件が設定されている場合がある。この場合、ステップ923から929のループを実行することによって、それらの複数のリソースのうち少なくとも一つの判定条件が満たされる場合に、仮想計算機43の負荷が高いと判定される。
(10)ステップ928の判定の結果、該当するレコードがない場合、監視情報管理部38bは、代表監視エージェントが稼動する仮想計算機43の負荷は高くないと判定し、処理を終了する(ステップ930)。
図9Dは、本発明の第4の実施形態において、オペレータが性能情報の監視間隔を変更した場合の処理を説明するフローチャートである。
ここでは、監視情報提供部35が監視情報を収集する間隔を変更する処理について説明する。監視間隔情報は、監視情報提供部35から監視情報を収集する間隔を示す情報を含む。
(1)オペレータが運用管理端末52の入力部53を操作して、いずれかの性能監視エージェントによる性能情報の監視間隔を変更する操作を行うと、運用管理端末52は、性能監視マネージャー48に対して、変更の対象である性能監視エージェント32と、新たな監視間隔とを指定する監視間隔変更要求メッセージを送信する(ステップ931)。
(2)次に、性能監視マネージャー48の監視間隔管理部46は、監視間隔変更要求メッセージを受信する。そして、監視間隔管理部46は、監視間隔変更要求メッセージによって指定される新たな監視間隔を、変数X1として取得する。(ステップ932)。さらに、監視間隔管理部46は、監視間隔変更要求メッセージによって指定される性能監視エージェント32を、変数X2として取得する。
(3)次に、性能監視マネージャー48の監視間隔管理部46は、記憶部49を呼び出し、監視間隔管理テーブル(図示省略)を読み出す。
監視間隔管理テーブルは、性能監視エージェント欄(図示省略)及び監視間隔欄(図示省略)を含む。性能監視エージェント欄には、性能監視エージェント32の識別子が記憶される。監視間隔欄には、性能監視エージェント欄の識別子によって識別される性能監視エージェント32が性能情報を取得する時間間隔を示す情報が記憶される。
監視間隔管理部46は、監視間隔管理テーブルから、性能監視エージェント欄が変数X2の内容と一致するレコードを、変数Aとして取得する。次に、監視間隔管理部46は、変数Aの監視間隔欄に変数X1の内容を記憶する(ステップ933)。
(4)次に、監視間隔管理部46は、変数X1の内容と、監視間隔管理テーブルの各レコードに記憶された監視間隔情報とに基づいて、代表監視エージェントの新たな監視間隔を決定し、決定した監視間隔を変数Yとして取得する(ステップ934)。
ここで、変数Yは、代表監視エージェントの情報取得タイミングが、性能監視エージェント32a及び32bの情報取得タイミングを包含するように決定される。
例えば、監視間隔管理部46は、監視間隔管理テーブルの各レコードに記憶されている監視間隔欄の値を読み出し、それらの値の最大公約数を変数Yとする。すなわち、監視間隔管理テーブルから、性能監視エージェント欄に性能監視エージェント32a及び32bの識別子が記憶されているレコードを読み出し、それぞれのレコードの監視間隔欄に記憶されている内容の最大公約数を求める。例えば、「30分」と「20分」が記憶されていた場合、それらの最大公約数である「10分」が代表監視エージェントの監視間隔となる。
また、例えば、性能監視エージェントの32a及び32bの監視間隔の双方を変数Yとして決定することもできる。すなわち、性能監視エージェント32aの監視間隔が30分で、性能監視エージェント32bの監視間隔が20分と設定されていた場合、代表監視エージェントの監視間隔は30分と20分の双方となる。この場合、代表監視エージェントは、30分ごとに性能情報を取得し、さらに、20分ごとにも性能情報を取得する。
(5)次に、性能監視マネージャー48の監視間隔管理部46は、性能監視エージェント32a及び32bの監視情報収集部37a及び37bに対し、変数Yの内容を指定する監視間隔変更メッセージを送信する(ステップ935)。
監視情報収集部37a及び37bは、監視間隔変更メッセージを受信する。そして、監視情報収集部37a及び37bは、監視間隔変更メッセージによって指定される変数Yから、監視間隔情報を抽出し、抽出した監視間隔情報を、監視情報記憶部40a及び40bに記憶する。
以降、性能監視エージェント32a及び32bの監視情報収集部37a及び37bは、監視情報記憶部40a及び40bを呼び出し、監視間隔情報として記憶された監視間隔に基づいて監視情報を収集する。
一又は一以上のゲストOS31上にそれぞれ性能監視エージェント32を稼動させる場合において、各性能監視エージェント32がそれぞれ仮想化機構30上の監視情報を監視情報記憶部40に格納すると、監視対象計算機50が、同じ監視情報を重複して保持することになる。その結果、監視対象計算機50が備える記憶領域(例えば、メモリ22又は外部記憶装置25)が浪費される。しかし、本発明の第4の実施形態によれば、複数の性能監視エージェント32を代表する一つの性能監視エージェント32のみが性能情報を共有記憶部56に格納することで、性能監視エージェントが格納するデータ量を削減することができる。
また、代表監視エージェントが稼動する仮想計算機43の負荷が高いとき、仮想化機構30上の監視情報を取得し、それを共有記憶部56に格納することができない場合がある。しかし、本発明の第4の実施形態によれば、代表監視エージェントが稼動する仮想計算機43の負荷が高い時に、代表監視エージェントではない性能監視エージェント32が監視情報を共有記憶部56に記憶することで、仮想化機構30上の監視情報の収集漏れの発生を防止することができる。
性能監視マネージャー48が代表監視エージェントからハートビート信号を受け取ることによって、又は、性能監視マネージャー48が代表監視エージェントの生死を定期的に確認することによって、代表監視エージェントの監視情報取得漏れを検知し、代表監視エージェントを交代させることも考えられる。しかし、その場合、代表監視エージェントが監視情報を収集できない状況になってから、性能監視マネージャー48がその状況を検知するまで時間がかかるため、その間は監視情報を収集することができないという問題がある。本発明の第4の実施形態によれば、代表監視エージェントが稼動する仮想計算機の負荷が高い時に、性能監視マネージャー48の処理判断を待つことなく、各性能監視エージェント32が監視情報を共有記憶部56に格納する。このため、代表監視エージェントによる監視情報の収集漏れを少なくすることができる。
また、本発明の第4の実施形態によれば、仮想計算機の高負荷などのために代表監視エージェントが取得できなかった情報を他の性能監視エージェント32が収集していれば、その情報によって、代表監視エージェントが取得した情報を補完して、運用管理端末52に表示することができる。
次に、本発明の第5の実施形態を説明する。
本発明の第5の実施形態による情報処理システムの機能ブロック図は、第4の実施形態と同様である(図7参照)。第5の実施形態では、第4の実施形態と同様の情報処理システムにおいて、代表監視エージェントの負荷が継続して高い場合に、代表監視エージェントを交代させる処理が実行される。
本発明の第5の実施形態による情報処理システムの構成について、図7を参照して説明する。ただし、第4の実施形態による情報処理システムの構成と同じ部分については説明を省略し、差異点について説明する。
監視情報管理部38a及び38bは、第4の実施形態のそれらが備える機能に加えて、代表監視エージェントが稼動する仮想計算機43の負荷が継続して高いことを検知し、代表監視エージェントの交代候補を性能監視マネージャー48に通知する機能を有する。
性能監視エージェント32の監視情報記憶部40a及び40bは、負荷判定履歴テーブル記憶領域(図示省略)及び交代条件テーブル記憶領域(図示省略)を含む。
負荷判定履歴テーブル記憶領域には、代表監視エージェントが稼動する仮想計算機43の負荷が高いか否かを判定した結果を示す情報が記憶される。
負荷判定履歴テーブル記憶領域には、例えば、図10Aに示す負荷判定履歴テーブル2000が記憶されている。
図10Aは、本発明の第5の実施形態の負荷判定履歴テーブル2000の説明図である。
負荷判定履歴テーブル2000は、時刻欄2000aと、負荷判定結果欄2000bと、を含む。
時刻欄2000aには、負荷判定をした時刻が記憶されている。
負荷判定結果欄2000bは、図8に示す閾値テーブル703の番号欄703aに記憶された各番号に対応する欄(2000c、2000d、...)を含む。それぞれの欄には、代表監視エージェントの負荷が高いと判定された場合、「Y」が記憶され、負荷が高くないと判定された場合、「N」が記憶される。ただし、負荷が高いか否かを判定し、その判定の結果を記憶できるかぎり、上記の方法に限定されず、いかなる方法によって判定及びその結果の記憶が実行されてもよい。
交代条件テーブル記憶領域には、代表監視エージェントを交代させる条件が記憶されている。交代させる条件は、例えば、代表監視エージェントが稼動する仮想計算機43の負荷が継続して高いことである。例えば、仮想計算機43の負荷が、閾値テーブル703に記憶された閾値をある頻度(10回中7回)で超えた場合、継続して負荷が高いと判定される。
例えば、交代条件テーブル記憶領域には、図10Bに示すような交代条件テーブル2001が記憶されている。
図10Bは、本発明の第5の実施形態の交代条件テーブル2001の説明図である。
交代条件テーブル2001は、交代条件欄2001aを含む。
交代条件欄2001aには、代表監視エージェントを交代させるための条件が記憶されている。例えば、交代条件欄2001aには、図8に示す閾値テーブル703の番号欄703aに対応する番号と、判定条件欄703dの判定条件を満たす頻度が記憶されている。例えば、交代条件欄2001aに、「(番号=2)&&(条件=7回中5回閾値超過した場合)」と記憶されている場合、仮想計算機名「VM2」及びリソース名「vCPU1」によって識別されるリソースの監視情報のうち、最近7回に取得された、監視情報名が「CPU割当要求率」である監視情報が参照される。そして、それらの7回の監視情報値のうち、いずれか5回の監視情報値が「5%」を超えていた場合、継続して負荷が高いと判定される。
継続して負荷が高いと判断する条件は、上記のような条件に限定されない。例えば、仮想計算機43の負荷が、指定した回数、連続して閾値を超過した場合に、継続して負荷が高いと判定されてもよい。あるいは、所定の時間、負荷が高いと判定された場合に、継続して負荷が高いと判定されてもよい。
性能監視マネージャー48は、エージェント管理部58を備えている。
エージェント管理部58は、性能監視マネージャー48の管理下にある性能監視エージェント32a及び32bの状態を管理する処理を実行する。例えば、性能監視エージェント32の負荷が高い場合、エージェント管理部58は、代表監視エージェントの交代処理を実行する。
次に、本発明の第5の実施形態による情報処理システムにおいて実行される処理について説明する。
図11Aは、本発明の第5の実施形態の情報処理システムにおいて実行される処理の全体を説明するフローチャートである。
以下、図11Aの処理が開始された時点で第1仮想計算機43aの第1性能監視エージェント32aが代表監視エージェントである場合を例として説明する。すなわち、図11Aの処理が開始される前の時点において、第1性能監視エージェント32aは、定期的に仮想化機構30の監視情報提供部35から監視情報を取得し、その監視情報を共有記憶部56に記憶する。一方、代表監視エージェントでない第2性能監視エージェント32bは、第1仮想計算機43aの負荷が高いと判定された場合のみ、仮想化機構30の監視情報提供部35から監視情報を取得し、その監視情報を共有記憶部56に記憶する。
(1)まず、初期設定が実行される(ステップ1271)。
例えば、オペレータは、運用管理端末52の入力部53から、交代条件テーブル2001の内容、及び、閾値テーブル703の内容を入力する。運用管理端末52の通信処理部55は、入力対象の交代条件テーブル2001及び閾値テーブル703を指定し、入力された内容を含むメッセージを送信する。
性能監視エージェント32a及び32bの監視情報記憶部40a及び40bは、性能監視マネージャー48を介して、運用管理端末52から送信されたメッセージを受け取り、監視情報記憶部40a及び40bの交代条件テーブル記憶領域及び閾値判定テーブル記憶領域に、メッセージで指定された交代条件テーブル2001の内容、及び、閾値テーブル703の内容をそれぞれ記憶する。
なお、この時点では、負荷判定履歴テーブル記憶領域に記憶された負荷判定履歴テーブル2000には何も記憶されていない。
(2)次に、第2性能監視エージェント32bの監視情報収集部37bは、代表監視エージェント情報41bに基づいて代表監視エージェントを決定する。そして、監視情報収集部37bは、監視情報提供部35から代表監視エージェントが稼動する仮想計算機43(すなわち第1仮想計算機43b)の監視情報を定期的に収集する(ステップ1272)。
(3)次に、第2性能監視エージェント32bの監視情報管理部38bは、収集した監視情報に基づいて、第1仮想計算機43bの負荷が高いか否かを判定し、判定した結果を負荷判定履歴テーブル2000に記憶する(ステップ1273)。
なお、負荷が高いか否かの判定については、例えば、図8に示した閾値テーブル703に基づいて、図9Cに示す処理によって判定される。
例えば、監視情報管理部38bは、図8の閾値テーブル703のレコードを一つずつ呼び出し、第1仮想計算機43bの負荷が判定条件703dを満足するか否かを判定し、その判定の結果を、新たに追加した負荷判定履歴テーブル2000のレコードに記憶する。第1仮想計算機43bの負荷が判定条件を満足する場合、監視情報管理部38bは、その判定条件の記憶された閾値テーブル703のレコードの番号欄703aに対応する負荷判定履歴テーブル2000の負荷判定結果欄2000bに「Y」を記憶する。一方、判定条件が満足されなかった場合、監視情報管理部38bは、負荷判定結果欄2000bに「N」を記憶する。そして、監視情報管理部38bは、時刻欄2000aに負荷判定をした時刻を記憶する。
(4)次に、第2性能監視エージェント32bの監視情報管理部38bは、負荷判定履歴テーブル2000を読み出し、代表監視エージェントが稼動する仮想計算機43の負荷が継続して高いか否かを判定する(ステップ1274)。代表監視エージェントが稼動する仮想計算機43の負荷が継続して高いか否かを判定する処理については、図11Bで説明する。
(5)ステップ1274において、代表監視エージェントの負荷(すなわち、代表監視エージェントが稼動する仮想計算機43の負荷)が継続して高いと判定された場合、監視情報管理部38bは、代表監視エージェント交代要求メッセージを性能監視マネージャー48に送信する(ステップ1275)。代表監視エージェント交代要求メッセージは、代表監視エージェント候補リスト(図示省略)を含んでもよい。代表監視エージェント候補リストとは、これから代表監視エージェントとして選択される性能監視エージェント32の候補のリストである。代表監視エージェント候補リストは、現在の代表監視エージェントによって代表されている性能監視エージェント32のうち、少なくとも一つを識別する情報を含む。
(6)次に、ステップ1275の交代要求メッセージを受けた性能監視マネージャー48のエージェント管理部58は、性能監視エージェント32a及び32bの中から一つを新たな代表監視エージェントとして選択する(ステップ1276)。
ここで、例えば、エージェント管理部58は、新たな代表監視エージェントを、代表監視エージェント交代要求メッセージに含まれる性能監視エージェント32の候補リストから選択することもできる。この処理の一例を図11Cで説明する。
新たな代表監視エージェントの選択方法は、図11Cに示す処理に限定されない。例えば、負荷の高い代表監視エージェントとなっている性能監視エージェント32以外の性能監視エージェント32からランダムに代表監視エージェントを選択することもできる。
ここで、新たな代表監視エージェントを決定する際に、エージェント管理部58が、性能監視エージェント32に対して、その性能監視エージェント32が代表監視エージェントになれるか否かを問い合わせる処理をしてもよい。
(7)エージェント管理部58は、第1性能監視エージェント32aによって代表されている全ての性能監視エージェント32(図7の例では、第2性能監視エージェント32b)に対して、代表監視エージェント交代メッセージを送信する(ステップ1277)。代表監視エージェント交代メッセージは、新たに代表監視エージェントとして選択された性能監視エージェントを識別する情報を含む。
(8)性能監視エージェント32a及び32bの監視情報管理部38a及び38bは、代表監視エージェント交代メッセージを受信する。そして、監視情報管理部38a及び38bは、代表監視エージェント交代メッセージから新たな代表監視エージェントを識別する情報を抽出し、代表監視エージェント情報41a及び41bの内容を抽出された情報に書き換える(ステップ1278)。書き換え後、処理はステップ1272に戻る。
(9)ステップ1274において、代表監視エージェントの負荷が継続して高いと判定されなかった場合、処理はステップ1272に戻る。
ステップ1278が実行された結果、第2性能監視エージェント32bが新たな代表監視エージェントとなる。一方、第1性能監視エージェント32aは代表監視エージェントでなくなる。すなわち、ステップ1278が実行された後、第2性能監視エージェント32bは、定期的に仮想化機構30の監視情報提供部35から監視情報を取得し、その監視情報を共有記憶部56に記憶する。一方、代表監視エージェントでない第1性能監視エージェント32aは、第2仮想計算機43bの負荷が高いと判定された場合のみ、仮想化機構30の監視情報提供部35から監視情報を取得し、その監視情報を共有記憶部56に記憶する。
図11Bは、本発明の第5の実施形態において、代表監視エージェントでない第2性能監視エージェント32bの監視情報管理部38bが、代表監視エージェントが稼動する仮想計算機43aの負荷が継続して高いか否かを判定する処理を示すフローチャートである。
(1)代表監視エージェントでない第2性能監視エージェント32bの監視情報管理部38bは、交代条件テーブル2001から新たなレコードを、変数U1として取得する(ステップ1300)。
(2)次に、監視情報管理部38bは、変数U1の交代条件欄2001aの番号として記憶された情報を、変数B1として取得する(ステップ1301)。
(3)次に、監視情報管理部38bは、変数U1の交代条件欄2001aの条件のうち、頻度の分母となっている値を変数B2として取得し、分子となっている値を変数B3として取得する(ステップ1302)。
(4)次に、監視情報管理部38bは、負荷判定履歴テーブル2000の時刻欄2000aに基づいてレコードをソート(並べ替え)する。例えば、監視情報管理部38bは、時刻欄2000aに記憶された時刻が降順となるように、負荷判定履歴テーブル2000のレコードをソートする。そして、監視情報管理部38bは、時刻欄2000aに記憶された時刻が降順となるように、変数B2に記憶された個数のレコードを指定する(ステップ1303)。
(5)次に、監視情報管理部38bは、ステップ1303で指定されたレコードのうち一つのレコードを変数A1として取得する(ステップ1304)。
(6)次に、監視情報管理部38bは、変数A1の負荷判定結果欄2000bのうち、変数B1と一致する番号の欄に「Y」が記憶されている場合、変数Tに1を加える(ステップ1305)。
(7)次に、監視情報管理部38bは、ステップ1303で指定されたレコードに変数A1の次の要素(すなわち、まだ変数A1として取得されていないレコード)があるか否かを判定する(ステップ1306)。ステップ1306の判定の結果、次の要素がある場合、処理はステップ1304に戻る。
(8)ステップ1306の判定の結果、次の要素がない場合、監視情報管理部38bは、変数Tと変数B3の内容を比較して、変数Tが大きいか否かを判定する(ステップ1307)。ここでは、負荷が閾値を超える頻度が、交代条件テーブル2001に設定された頻度を超過したか否かが判定される。
(9)ステップ1307の判定の結果、変数Tが変数B3より大きい場合、監視情報管理部38bは、継続して負荷が高いと判定する(ステップ1308)。
(10)ステップ1307の判定の結果、変数Tが変数B3より大きくない場合、監視情報管理部38bは、ステップ1300で指定したレコードに変数U1の次の要素があるか否か(すなわち、ステップ1300で指定したレコードのうち、まだ変数U1として取得されていないレコードがあるか否か)を判定する(ステップ1309)。
(11)ステップ1309の判定の結果、次の要素がある場合、処理はステップ1300に戻る。
(12)ステップ1309の判定の結果、次の要素がない場合、監視情報管理部38bは、継続して負荷が高くないと判定する(ステップ1310)。
図11Cは、本発明の第5の実施形態の性能監視マネージャー48が新たな代表監視エージェントを決定する処理を示すフローチャートである。
なお、ここでは、第1性能監視エージェント32aを現在の代表監視エージェントとし、第2性能監視エージェント32bを現在代表監視エージェントでないエージェントであるものとする。
(1)まず、性能監視マネージャー48のエージェント管理部58は、代表監視エージェント候補リストを含む代表監視エージェント交代要求メッセージを第2性能監視エージェント32bから送受信部57を介して受信する(ステップ1200)。
(2)次に、性能監視マネージャー48のエージェント管理部58は、受信した代表監視エージェント交代要求メッセージから代表監視エージェント候補リストを抽出して、抽出した性能監視エージェントリストを変数Iとして取得する(ステップ1201)。
(3)次に、エージェント管理部58は、変数Iから要素を一つ取り出し、取り出した要素を変数Jとして格納する(ステップ1202)。
ここで、例えば、変数Jは、一つの性能監視エージェント識別子を含む。
(4)次に、エージェント管理部58は、変数Jによって識別される性能監視エージェント32に対して、代表監視エージェント依頼メッセージを送信する(ステップ1204)。ここで、代表監視エージェント依頼メッセージは、変数Jによって識別される性能監視エージェント32が、代表監視エージェントになれるか否かを確認するメッセージである。以下、変数Jによって識別される性能監視エージェント32が、性能監視エージェント32bである場合を例として説明する。
代表監視エージェント依頼メッセージを受信した性能監視エージェント32bの監視情報管理部38bは、性能監視エージェント32bが代表監視エージェントになることができるか否かを判定する。この判定は、例えば、第2仮想計算機43bの現在の性能に基づいて実行されてもよい。例えば、第2仮想計算機43bの現在の負荷が所定の閾値より高くない場合、性能監視エージェント32bが代表監視エージェントになることができると判定されてもよい。負荷が高いか否かの判定は、監視情報記憶部40bを呼び出し、図8に示すような閾値テーブル703の判定条件を満たすか否かを判定することによって実行されてもよい。
性能監視エージェント32bは、代表監視エージェントになることができるか否かを判定した結果を、代表監視エージェント依頼メッセージに対する応答メッセージに含めて、性能監視マネージャー48に送信する。応答メッセージは、例えば、代表監視エージェントになることができる場合には「YES」を示す情報を含み、代表監視エージェントになることができない場合には「NO」を示す情報を含む。
(5)性能監視マネージャー48は、変数Jによって識別される性能監視エージェントからステップ1204の応答メッセージを受信する(ステップ1206)。
(6)性能監視マネージャー48のエージェント管理部58は、受信した応答メッセージの内容を解析して、内容がYESか否かを判定する(ステップ1208)。
(7)ステップ1208の判定の結果、YESだった場合、エージェント管理部58は、性能監視マネージャー48の管理下にある性能監視エージェント32に対して変数J(すなわち、第2性能監視エージェント32bの識別子)を含む代表監視エージェント交代メッセージを送信し(ステップ1210)、処理を終了する。
この場合、代表監視エージェントを、変数Jによって識別される性能監視エージェントに交代させたことになる。
(8)ステップ1204の判定の結果、NOだった場合、変数Jによって識別される性能監視エージェントを新たな代表監視エージェントとすることはできない。この場合、エージェント管理部58は、性能監視エージェントリストに次の要素があるか否か(すなわち、まだ変数Jとして処理されていない要素があるか否か)を判定する(ステップ1212)。
(9)ステップ1212の判定の結果、次の要素がある場合、エージェント管理部58は、次の要素を新たな変数Jとして取り出して、ステップ1202に戻る。
(10)ステップ1212の判定の結果、次の要素がない場合、いずれの性能監視エージェント32も新たな代表監視エージェントとなることができない。この場合、性能監視マネージャー48は、管理下にある性能監視エージェント32に対して、代表監視エージェントの交代ができないことを示すメッセージを送信し(ステップ1214)、処理を終了する。
なお、本発明の第5の実施形態では、監視対象計算機50、監視マネージャー計算機51及び運用管理端末52が、ネットワークで接続された独立の計算機である場合を例として示した。しかし、第5の実施形態は、この構成に限定されない。すなわち、例えば、運用管理端末52は、監視マネージャー計算機51と同一の計算機であってもよいし、監視対象計算機50と同一の計算機であってもよいし、監視対象計算機50内に構成される仮想計算機43の一つであってもよい。また、監視マネージャー計算機51は、監視対象計算機50と同一の計算機であってもよいし、監視対象計算機50内に構成される仮想計算機43の一つであってもよい。
本発明の第5の実施形態によれば、仮想計算機43の負荷が高いために代表監視エージェントが継続して仮想化機構30の監視情報を取得できず、その結果、共有記憶部56に監視情報を格納できなかった場合に、代表監視エージェントを交代させることができる。
第4の実施形態では、各性能監視エージェント32は、代表監視エージェントが稼動する仮想計算機43の負荷が高いと判定した場合に、共有記憶部56にそれぞれ監視情報を格納する。そうすると、代表監視エージェントが稼動する仮想計算機43の負荷が継続して高い場合、各性能監視エージェント32がそれぞれ監視情報を記憶することになるため、重複したデータが格納される可能性が高い。第5の実施形態によれば、仮想計算機の負荷が高くなった代表監視エージェントを交代させることによって、重複するデータ量をより削減することが可能である。
次に、本発明の第6の実施形態を説明する。
図12は、本発明の第6の実施形態による情報処理システムの構成を示す機能ブロック図である。
ただし、第6の実施形態による情報処理システムの構成が第1の実施形態によるものと共通する部分については説明を省略し、相違点について主に説明する。
仮想化機構30は、メッセージ通信処理部34及び監視情報提供部35を含む。仮想化機構30上では第1仮想計算機43a及び第2仮想計算機43bが稼動している。
第1仮想計算機43a上では、第1ゲストOS31aが稼動し、第2仮想計算機43b上では、第2ゲストOS31bが稼動している。
第1ゲストOS31a上では、第1性能監視エージェント32aが稼動する。
第1性能監視エージェント32aは、第2仮想計算機43bの監視情報(すなわち第2仮想計算機監視情報30c)を監視し、第2ゲストOSの起動失敗を検知するプログラムである。第1性能監視エージェント32aは、監視情報収集部37a及び監視情報管理部38aを含む。
監視情報管理部38aは、監視情報収集部37aが収集した監視情報の内容を解析し、第2仮想計算機43bの負荷パターンを判定する。例えば、監視情報管理部38aが、第2ゲストOS31b起動時の通常の負荷パターン情報を記憶しており、前記監視情報から取得した負荷パターンが、記憶していた負荷パターン情報の条件と合わない場合、起動失敗したと判定することもできる。
第2ゲストOS31b上では、第2性能監視エージェント32bが稼動している。第2ゲストOS31bは、まだ起動していないものとする。
第2性能監視エージェント32bは、第2ゲストOS31b上で稼動する性能監視エージェントであり、起動通知部44を含む。
起動通知部44は、性能監視マネージャー48に第2性能監視エージェント32bが起動したことを通知する処理を実行する。例えば、第2性能監視エージェント32bが起動する処理の最後に、起動通知部44が性能監視マネージャー48に起動通知を送信するように構成されてもよい。オペレータは、あらかじめ、起動通知の送信先を決定し、その送信先を性能監視エージェント32に設定しておくことができる。具体的には、オペレータは、運用管理端末52の入力部53を用いて起動通知の送信先を識別する情報を入力する。入力された情報は、性能監視マネージャー48を介して、性能監視エージェント32に設定される。
監視情報提供部35は、第1仮想計算機43a及び第2仮想計算機43bに係る仮想計算機構成情報を備えている。仮想計算機構成情報は仮想計算機ごとに記憶される第1仮想計算機監視情報30b及び第2仮想計算機監視情報30cに含まれる。
第1仮想計算機監視情報30bに含まれる仮想計算機構成情報は、例えば、第1仮想計算機43aの仮想的な電源状態を保持している。同様に、第2仮想計算機監視情報30cに含まれる仮想計算機構成情報は、例えば、第2仮想計算機43bの仮想的な電源状態を保持している。仮想的な電源状態とは、例えば、仮想計算機43が起動状態、停止状態又はサスペンド状態のいずれの状態であるかを示す情報である。
監視対象計算機50とネットワーク26を介して接続されている監視マネージャー計算機51上では、性能監視マネージャー48が稼動している。
性能監視マネージャー48は、ゲストOS状態管理部45及び記憶部49を含む。
ゲストOS状態管理部45は、ゲストOS31の状態を管理するプログラムモジュールである。
記憶部49は、仮想計算機ゲストOS対応テーブル記憶領域(図示省略)、性能監視エージェントゲストOS対応テーブル記憶領域(図示省略)及びゲストOS状態管理テーブル記憶領域(図示省略)を含む。これらは、例えば、監視マネージャー計算機51を実現する計算機20のメモリ22又は外部記憶装置25の記憶領域である。
なお、ゲストOS状態管理テーブル記憶領域には、ゲストOS状態管理部45が管理するゲストOS31a及び31bに関する情報を含むゲストOS状態管理テーブル(図示省略)が記憶されている。
例えば、ゲストOS状態管理テーブルは、ホスト名欄(図示省略)及び状態欄(図示省略)を含む。
ホスト名欄には、ゲストOS31の識別子としてホスト名が記憶される。
状態欄には、ホスト名欄に記憶したゲストOS31の状態が記憶される。状態とは、例えば、「起動状態」、「起動中」、「停止状態」、「停止中」、「サスペンド状態」、「サスペンド中」、といった状態である。また、起動失敗した場合には、「起動失敗」が記憶される。
図13A及び図13Bは、本発明の第6の実施形態の第1性能監視エージェント32aが第2ゲストOS31bの起動失敗を監視する処理を示すシーケンス図である。次にこれらについて説明する。
図13Aは、第2ゲストOS31bの起動が成功した場合のシーケンス図であり、図13Bは、第2ゲストOS31bの起動が失敗した場合のシーケンス図である。
(1)第1性能監視エージェント32a内の監視情報収集部37aは、監視情報提供部35から構成情報(具体的には、第2仮想計算機43bの電源状態)を定期的に収集する。監視情報管理部38は、収集した情報に基づいて、第2仮想計算機43bが起動したか否かを判定する(ステップ1401)。
例えば、第2仮想計算機43bの電源状態が停止状態から起動状態に変化した場合、第1性能監視エージェント32aの監視情報管理部38は、第2仮想計算機43bが起動したと判定することができる。一方、第2仮想計算機の電源状態が停止状態のままであった場合、第1性能監視エージェント32aの監視情報管理部38は、第2仮想計算機43bが起動していないと判定することができる。なお、電源状態の変化は、例えば、監視情報収集部37aが収集した構成情報に含まれる電源状態情報と、監視情報記憶部40aに記憶されている1回前の収集における構成情報に含まれる電源状態情報と、を比較することによって判定することができる。
また、監視情報管理部38が、仮想計算機43bの電源状態について、停止状態から起動状態への変化を検出する代わりに、サスペンド状態から起動状態への変化を検出した場合、サスペンドからの回復処理失敗を検知することができる。
(2)ステップ1401において、監視中の第2仮想計算機43bが起動したと判定された場合、第1性能監視エージェント32aの監視情報管理部38は、第2仮想計算機43bが起動したことを性能監視マネージャー48に対して通知する。具体的には、監視情報管理部38は、起動を検出した仮想計算機43(すなわち第2仮想計算機43b)に関する情報を含む仮想計算機起動検知メッセージを性能監視マネージャー48に送信する(ステップ1402)。起動を検出した仮想計算機43に関する情報は、例えば、起動を検出した仮想計算機43の識別子を含む。
(3)次に、性能監視マネージャー48のゲストOS状態管理部45は、仮想計算機起動検知メッセージを受信すると、起動が検出された仮想計算機43(すなわち第2仮想計算機43b)の識別子を変数Iとして記憶する。
(4)次に、ゲストOS状態管理部45は、変数Iに対応するゲストOS31の起動状態の管理情報を変更する。
具体的には、ゲストOS状態管理部45は、記憶部49を呼び出し、仮想計算機ゲストOS対応テーブル702及びゲストOS状態管理テーブルを読み出す。そして、ゲストOS状態管理部45は、仮想計算機ゲストOS対応テーブル702を検索し、仮想計算機名欄702aが変数Iと一致するレコードのホスト名欄702bの値を変数Jとする。さらに、ゲストOS状態管理部45は、ゲストOS状態管理テーブルを検索し、ホスト名欄が変数Jと一致するレコードの状態欄に「起動中」と記憶する。
(5)次に、ゲストOS状態管理部45は、第1性能監視エージェント32aの監視情報管理部38aに対して、第2ゲストOS31bの起動失敗検知要求メッセージを送信する(ステップ1403)。
起動失敗検知要求メッセージは、起動失敗を検知する対象である仮想計算機43(すなわち第2仮想計算機43b)を指定する情報を含む。起動失敗検知要求メッセージは、指定した仮想計算機43が起動失敗したことを検知する処理を、メッセージを受信した性能監視エージェント32に対して要求するメッセージである。
(6)第1性能監視エージェント32aの監視情報管理部38aは、起動失敗検知要求メッセージを受信する。監視情報管理部38aは、起動失敗検知要求メッセージから、起動失敗を検知する対象の仮想計算機43を指定する情報を抽出し、その情報を変数Kとして記憶する。なお、起動失敗を検知する対象の仮想計算機43を指定する情報とは、具体的には、例えば起動失敗を検知する対象の仮想計算機43の識別子である。以降、変数Kで第2仮想計算機43bが指定されていたと仮定して説明する。
(7)第1性能監視エージェント32aは、第2仮想計算機43bの監視情報を定期的に監視して、第2仮想計算機の負荷が高いか否かを判定する(ステップ1404)。
すなわち、第1性能監視エージェント32aの監視情報収集部37aは、監視情報提供部35から、第2仮想計算機43bに関する監視情報(すなわち第2仮想計算機監視情報30c)を定期的に収集する。また、監視情報管理部38aは、監視情報収集部37aが収集した監視情報に基づいて、ゲストOS31の起動が失敗したか否かを判定する。
例えば、収集された第2仮想計算機監視情報30cが、第2ゲストOS31bが正常に起動した時に収集された監視情報と異なるパターンを示した場合、第2ゲストOS31bの起動が失敗したと判定される。具体的には、例えば、第2仮想計算機43bの負荷が高いまま、定常状態になった場合、あるいは、起動処理開始直後に第2仮想計算機43bの負荷が低いままとなった場合等、収集された監視情報が、第2ゲストOS31bの正常な起動時に示さないような挙動を示した場合である。あるいは、一般にOS起動時にはI/O処理が頻繁に発生するが、起動処理直後にI/O処理がほとんど発生しなかった場合にも、ゲストOS31が起動に失敗したものと判定することができる。
(8)第2性能監視エージェント32bが起動した後、第2性能監視エージェント32bの起動通知部44は、性能監視マネージャー48のゲストOS状態管理部45に、起動通知メッセージを送信する(ステップ1405)。
起動通知メッセージは、第2性能監視エージェント32bが起動したことを伝えるためのメッセージである。本発明の第6の実施形態では、この起動通知メッセージを送信したことをもって、ゲストOSが起動終了したものとみなす。
(9)第2性能監視エージェント32bの起動通知部44から起動通知メッセージを受信した性能監視マネージャー48のゲストOS状態管理部45は、記憶部49を呼び出し、性能監視エージェントゲストOS対応テーブル701及びゲストOS状態管理テーブルを読み出す。
そして、ゲストOS状態管理部45は、ゲストOS状態管理テーブルを検索し、第2仮想計算機43bに対応する第2性能監視エージェント32bの識別子がホスト名欄に記憶されているレコードの状態欄に「起動状態」と記憶する。
さらに、ゲストOS状態管理部45は、第1性能監視エージェント32aの監視情報管理部38aに対して、起動失敗検知終了メッセージを送信する(ステップ1406)。
起動失敗検知終了メッセージは、ゲストOS起動失敗の監視を終了するよう要求するメッセージである。起動失敗検知終了メッセージは、起動失敗検知処理を停止する仮想計算機(すなわち第2仮想計算機32b)を指定する情報を含む。
(10)第1性能監視エージェント32aの監視情報管理部38aは、起動失敗検知終了メッセージを受信する。受信した起動失敗検知終了メッセージから、起動失敗検知処理を停止する仮想計算機43を指定する情報(具体的には、例えば第2仮想計算機43bの識別子)を抽出し、その情報を変数Kとして記憶する。
そして、監視情報管理部38aは、変数Kに対応する第2ゲストOS31bの起動失敗を検知する監視処理を終了する。また、監視情報収集部37aは、起動失敗検知処理のための収集処理を終了する。
続いて、ゲストOS31の起動が失敗したと判定された場合の処理について図13Bを参照して説明する。図13Bにおいて、ステップ1401からステップ1404までの処理は、図13Aと同じである。
(11)ステップ1404において、ゲストOS31の起動が失敗したと判定された場合、第1性能監視エージェント32aの監視情報管理部38aは、性能監視マネージャー48に対して、起動が失敗した仮想計算機43(すなわち第2仮想計算機43b)を指定する情報を含む起動失敗通知メッセージを送信する(ステップ1407)。
(12)起動失敗通知メッセージを受信した性能監視マネージャー48のゲストOS状態管理部45は、起動失敗通知メッセージから、起動失敗した仮想計算機43を指定する情報(具体的には、例えば第2仮想計算機43bの識別子)を抽出し、その情報を変数Lとして記憶する。以下、変数Lとして記憶された仮想計算機43が、第2仮想計算機43bであると仮定する。
(13)次に、ゲストOS状態管理部45は、記憶部49を呼び出し、ゲストOS状態管理テーブルを読み出す。そして、ゲストOS状態管理部45は、ゲストOS状態管理テーブルを検索し、第2仮想計算機43bに対応する第2性能監視エージェント32bの識別子がホスト名欄に記憶されているレコードの状態欄に「起動失敗」と記憶する。
(14)次に、ゲストOS状態管理部45は、第1性能監視エージェント32aに対して、起動失敗検知終了メッセージを送信する(ステップ1406)。
本発明の第6の実施形態は、上記の実施形態に限定されない。
すなわち、上記の実施形態では、仮想計算機を第1仮想計算機43a及び第2仮想計算機43bと記載したが、一又は三以上の仮想計算機43が、同一仮想化機構30上に構築されていてもよい。仮想計算機43上では、それぞれゲストOS31が稼動する。
なお、性能監視エージェント32は、本発明の第1の実施形態から第3の実施形態に記載したように、いずれの場所において稼動してもよい。すなわち、性能監視エージェント32は、各ゲストOS31上で稼動してもよいし、仮想化機構30上(ホスト計算機上)で稼動してもよい。あるいは、仮想化機構30が稼動する監視対象計算機50とは物理的に独立した計算機上で稼動してもよい。
同様に、起動失敗を検知する性能監視エージェント32は、本発明の第1の実施形態から第3の実施形態に記載したように、いずれの場所において稼動してもよい。さらに、オペレータは、運用管理端末52を用いて、性能監視マネージャー48を経由して、起動失敗検知処理を実行する性能監視エージェント32をあらかじめ指定してもよい。
ただし、性能監視エージェント32が、仮想化機構30が稼動する監視対象計算機50とは物理的に独立した計算機上で稼動する場合であっても、起動失敗を検知する性能監視エージェント32は、監視情報提供部35から監視情報を取得する必要がある。ゲストOS31の起動失敗を検知する性能監視エージェント32と、性能監視マネージャー48とが、同一計算機上で稼働する場合、これらは同一のアプリケーションプログラムであってもよい。
さらに、上記の実施形態では、ステップ1402及びステップ1403が実行されるが、これらの処理は実行されなくてもよい。すなわち、第1性能監視エージェント32aが、性能監視マネージャー48から起動失敗検知要求メッセージを受信することなく、ステップ1401で検知された仮想計算機43について、ステップ1404の処理を開始してもよい。また、ステップ1402とステップ1403の処理が実行される場合であっても、第1性能監視エージェント32aは、ステップ1403における起動失敗検知要求メッセージを受信する前にステップ1404を実行してもよい。
また、性能監視エージェント32が、運用管理端末52の出力部にエージェントの起動失敗を出力することできる。その場合には、以下のような処理が実行される。
(1)オペレータが運用管理端末52の入力部53を介して、起動失敗を検知したいゲストOS31を指定する情報を含むエージェント状態取得要求メッセージを送信する。
(2)エージェント状態取得要求メッセージを受信した性能監視マネージャー48のゲストOS状態管理部45は、受信したメッセージから、検知したいゲストOS31を指定する情報を抽出し、その情報を変数Iとする。
(3)ゲストOS状態管理部45は、変数Iに対応する性能監視エージェント32(すなわち、変数Iによって指定されるゲストOS31上で稼動する性能監視エージェント32)の識別子を変数Jとして取得する。次に、ゲストOS状態管理部45は、記憶部49を呼び出し、ゲストOS状態管理テーブルを読み出す。ゲストOS状態管理部45は、ゲストOS状態管理テーブルを検索し、ホスト名欄が変数Jとなっているレコードの状態欄に記憶されている内容を変数Kとして取得する。
(4)次に、ゲストOS状態管理部45は、変数Kの内容を、検知したいゲストOS31の状態として指定し、指定された状態を示す情報を含むエージェント状態取得応答メッセージを運用管理端末52に送信する。
(5)運用管理端末52の通信処理部55は、エージェント状態取得応答メッセージを受信すると、エージェント状態取得応答メッセージで指定されている内容を抽出し、出力部54を介して出力する。
前述したような本発明の第6の実施形態によれば、第2ゲストOS31b上で第2性能監視エージェント32bが起動していない状況でも、仮想化機構30から取得した性能情報を用いることで、第2ゲストOS31bの起動が失敗したことを検知することができる。
また、一般的にOSの起動失敗は、pingコマンドを複数回実行した後、所定の時間待ち、その間ping応答がないこと確認することによって検知する。しかし、本発明の第6の実施形態によれば、所定の時間待つことなく(すなわち、起動失敗の発生とほぼ同時に)、ゲストOS31の起動の失敗を発見することができる。その結果、ゲストOS31の起動失敗を早期に検出することが可能となる。
特に、従来は、業務システムサービスを開始する前にOSを起動し、業務システムを構築していた。しかし、近年、待機系から現用系への切替え処理(コールドスタンバイなど)、又は、スケールアウト処理を用いて、業務システムサービス開始後にOSを起動するケースが増えてきた。このようなケースでは、いち早くOSの起動失敗を検知する必要があり、本実施形態によるOS起動失敗検出方法は非常に有効である。
さらに、本発明の第6の実施形態によれば、特殊なハードウェア構成を必要とせず、ソフトウェア処理のみでOSの起動失敗を検知することができるため、容易にかつ低コストで実装可能である。
特許請求の範囲に記載していない本発明の観点の代表的なものとして、次のものが挙げられる。
(1)計算機システムを制御する方法であって、
前記計算機システムは、プロセッサと、前記プロセッサに接続される記憶装置と、を備える計算機を含み、
前記プロセッサは、前記計算機の前記プロセッサを含む資源を論理的に分割し、前記分割された資源の各々を、互いに独立した第1仮想計算機及び第2仮想計算機として動作させる仮想化プログラムを実行し、
前記第1仮想計算機は、第1ゲストオペレーティングシステムを実行し、
前記第2仮想計算機は、第2ゲストオペレーティングシステムを実行し、
前記記憶装置は、前記第1仮想計算機の識別情報及び前記第2仮想計算機の識別情報と、前記第1ゲストオペレーティングシステムの識別情報及び前記第2ゲストオペレーティングシステムの識別情報と、をそれぞれ対応付ける、仮想計算機ゲストオペレーティングシステム対応情報を保持し、
前記方法は、
前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報を、前記仮想化プログラムから取得する第1手順と、
前記第1仮想計算機の性能を示す情報を、前記第1ゲストオペレーティングシステムから取得する第2手順と、
前記第2仮想計算機の性能を示す情報を、前記第2ゲストオペレーティングシステムから取得する第3手順と、
前記割り当てられた資源に関する情報、前記割り当てられた資源に関する情報を取得した時刻を示す情報、前記性能を示す情報、及び、前記性能を示す情報を取得した時刻を示す情報を前記記憶装置に格納する第4手順と、
前記仮想計算機ゲストオペレーティングシステム対応情報に基づいて、前記第1仮想計算機の性能を示す情報及び前記第2仮想計算機の性能を示す情報を、それぞれ、前記第1仮想計算機に割り当てられた前記資源に関する情報及び前記第2仮想計算機に割り当てられた前記資源に関する情報と対応付ける第9手順と、
前記第1仮想計算機の性能を示す情報及び前記第2仮想計算機の性能を示す情報、並びに、前記第1仮想計算機に割り当てられた前記資源に関する情報及び前記第2仮想計算機に割り当てられた前記資源に関する情報に基づいて、前記資源の実際の性能を算出する第10手順と、
前記時刻を示す情報と、前記時刻において取得された前記割り当てられた資源に関する情報と、前記時刻において取得された前記性能を示す情報と、を出力する第5手順と、を含むことを特徴とする方法。
(2)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記第2ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機のみが前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納することによって実行されることを特徴とする(1)に記載の方法。
(3)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記第2ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機の負荷が所定の条件を満たす場合のみ、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納することによって実行されることを特徴とする(1)に記載の方法。
(4)前記第4手順は、さらに、
前記第1仮想計算機の負荷が前記所定の条件を満たす状態が所定の期間継続したと判定された場合、前記第2仮想計算機の負荷が所定の条件を満たす場合のみ、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納する手順を含むことを特徴とする(3)に記載の方法。
(5)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、前記第1仮想計算機及び前記第2仮想計算機の少なくとも一方が前記第1エージェントプログラム及び前記第2エージェントプログラムの少なくとも一方を実行することによって実行され、
前記方法は、さらに、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第2仮想計算機の起動を検出する第6手順と、
前記第2仮想計算機が起動した後、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第2仮想計算機への前記資源の割り当て率を監視する第7手順と、
前記第2仮想計算機への前記資源の割り当て率が所定の条件を満たす場合、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第2ゲストオペレーティングシステムの起動が失敗したことを示す通知を送信する第8手順と、を含むことを特徴とする(1)に記載の方法。
(6)プロセッサと、前記プロセッサに接続される記憶装置と、を備える計算機であって、
前記プロセッサは、前記計算機の前記プロセッサを含む資源を論理的に分割し、前記分割された資源の各々を、互いに独立した第1仮想計算機及び第2仮想計算機として動作させる仮想化プログラムを実行し、
前記第1仮想計算機は、第1ゲストオペレーティングシステムを実行し、
前記第2仮想計算機は、第2ゲストオペレーティングシステムを実行し、
前記記憶装置は、前記第1仮想計算機の識別情報及び前記第2仮想計算機の識別情報と、前記第1ゲストオペレーティングシステムの識別情報及び前記第2ゲストオペレーティングシステムの識別情報と、をそれぞれ対応付ける、仮想計算機ゲストオペレーティングシステム対応情報を保持し、
前記プロセッサは、
前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報を、前記仮想化プログラムから取得する第1手順と、
前記第1仮想計算機の性能を示す情報を、前記第1ゲストオペレーティングシステムから取得する第2手順と、
前記第2仮想計算機の性能を示す情報を、前記第2ゲストオペレーティングシステムから取得する第3手順と、
前記割り当てられた資源に関する情報、前記割り当てられた資源に関する情報を取得した時刻を示す情報、前記性能を示す情報、及び、前記性能を示す情報を取得した時刻を示す情報を前記記憶装置に格納する第4手順と、
前記仮想計算機ゲストオペレーティングシステム対応情報に基づいて、前記第1仮想計算機の性能を示す情報及び前記第2仮想計算機の性能を示す情報を、それぞれ、前記第1仮想計算機に割り当てられた前記資源に関する情報及び前記第2仮想計算機に割り当てられた前記資源に関する情報と対応付ける第9手順と、
前記第1仮想計算機の性能を示す情報及び前記第2仮想計算機の性能を示す情報、並びに、前記第1仮想計算機に割り当てられた前記資源に関する情報及び前記第2仮想計算機に割り当てられた前記資源に関する情報に基づいて、前記資源の実際の性能を算出する第10手順と、
前記時刻を示す情報と、前記時刻において取得された前記割り当てられた資源に関する情報と、前記時刻において取得された前記性能を示す情報と、を出力する第5手順と、を実行することを特徴とする計算機。
(7)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記第2ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機のみが前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納することによって実行されることを特徴とする(6)に記載の計算機。
(8)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記第2ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納し、
前記第1仮想計算機の負荷が所定の条件を満たす場合のみ、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって、前記第2仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納することによって実行されることを特徴とする(6)に記載の計算機。
(9)前記第4手順は、さらに、
前記第1仮想計算機の負荷が前記所定の条件を満たす状態が所定の期間継続したと判定された場合、前記第2仮想計算機の負荷が所定の条件を満たす場合のみ、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納する手順を含むことを特徴とする(8)に記載の計算機。
(10)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第2仮想計算機の性能を示す情報は、前記第2仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記第1仮想計算機は、前記第1ゲストオペレーティングシステム上で第1エージェントプログラムを実行し、
前記第2仮想計算機は、前記第2ゲストオペレーティングシステム上で第2エージェントプログラムを実行し、
前記第1手順は、前記第1仮想計算機及び前記第2仮想計算機が前記第1エージェントプログラム及び前記第2エージェントプログラムを実行することによって実行され、
前記第2手順は、前記第1仮想計算機が前記第1エージェントプログラムを実行することによって実行され、
前記第3手順は、前記第2仮想計算機が前記第2エージェントプログラムを実行することによって実行され、
前記第4手順は、前記第1仮想計算機及び前記第2仮想計算機の少なくとも一方が前記第1エージェントプログラム及び前記第2エージェントプログラムの少なくとも一方を実行することによって実行され、
前記第1仮想計算機は、さらに、
前記第1エージェントプログラムを実行することによって、前記第2仮想計算機の起動を検出する第6手順と、
前記第2仮想計算機が起動した後、前記第1エージェントプログラムを実行することによって、前記第2仮想計算機への前記資源の割り当て率を監視する第7手順と、
前記第2仮想計算機への前記資源の割り当て率が所定の条件を満たす場合、前記第1エージェントプログラムを実行することによって、前記第2ゲストオペレーティングシステムの起動が失敗したことを示す通知を送信する第8手順と、を実行することを特徴とする(6)に記載の計算機。
(11)計算機を制御するプログラムであって、
前記計算機は、プロセッサと、前記プロセッサに接続される記憶装置と、を備え、
前記プロセッサは、前記計算機の前記プロセッサを含む資源を論理的に分割し、前記分割された資源の各々を、互いに独立した第1仮想計算機及び第2仮想計算機として動作させる仮想化プログラムを実行し、
前記第1仮想計算機は、第1ゲストオペレーティングシステムを実行し、
前記第2仮想計算機は、第2ゲストオペレーティングシステムを実行し、
前記記憶装置は、前記第1仮想計算機の識別情報及び前記第2仮想計算機の識別情報と、前記第1ゲストオペレーティングシステムの識別情報及び前記第2ゲストオペレーティングシステムの識別情報と、をそれぞれ対応付ける、仮想計算機ゲストオペレーティングシステム対応情報を保持し、
前記プログラムは、
前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報を、前記仮想化プログラムから取得する第1手順と、
前記第1仮想計算機の性能を示す情報を、前記第1ゲストオペレーティングシステムから取得する第2手順と、
前記割り当てられた資源に関する情報、前記割り当てられた資源に関する情報を取得した時刻を示す情報、前記性能を示す情報、及び、前記性能を示す情報を取得した時刻を示す情報を前記記憶装置に格納する第3手順と、
前記仮想計算機ゲストオペレーティングシステム対応情報に基づいて、前記第1仮想計算機の性能を示す情報を、前記第1仮想計算機に割り当てられた前記資源に関する情報と対応付ける第9手順と、
前記第1仮想計算機の性能を示す情報及び前記第1仮想計算機に割り当てられた前記資源に関する情報に基づいて、前記資源の実際の性能を算出する第10手順と、
前記時刻を示す情報と、前記時刻において取得された前記割り当てられた資源に関する情報と、前記時刻において取得された前記性能を示す情報と、を出力する第4手順と、を前記プロセッサに実行させることを特徴とするプログラム。
(12)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記プログラムは、前記第1オペレーティングシステム上で前記第1仮想計算機によって実行され、
前記第3手順は、さらに、
前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納する手順と、
前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納する手順と、を含むことを特徴とする(11)に記載のプログラム。
(13)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記プログラムは、前記第1オペレーティングシステム上で前記第1仮想計算機によって実行され、
前記第3手順は、さらに、
前記第1仮想計算機が前記第1ゲストオペレーティングシステムから取得した情報を前記記憶装置に格納する手順と、
前記第2仮想計算機の負荷が所定の条件を満たす場合のみ、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納する手順と、を含むことを特徴とする(11)に記載のプログラム。
(14)前記第3手順は、さらに、
前記第1仮想計算機の負荷が前記所定の条件を満たす状態が所定の期間継続したと判定された場合、前記第2仮想計算機の負荷が所定の条件を満たす場合のみ、前記第1仮想計算機が前記仮想化プログラムから取得した情報を前記記憶装置に格納する手順を含むことを特徴とする(13)に記載のプログラム。
(15)前記仮想化プログラムによって前記第1仮想計算機及び前記第2仮想計算機に割り当てられた前記資源に関する情報は、前記第1仮想計算機及び前記第2仮想計算機への前記資源の割り当て率を示す情報であり、
前記第1仮想計算機の性能を示す情報は、前記第1仮想計算機に割り当てられた資源の使用率を示す情報であり、
前記プログラムは、前記第1オペレーティングシステム上で前記第1仮想計算機によって実行され、
前記プログラムは、さらに、
前記第2仮想計算機の起動を検出する第5手順と、
前記第2仮想計算機が起動した後、前記第2仮想計算機への前記資源の割り当て率を監視する第6手順と、
前記第2仮想計算機への前記資源の割り当て率が所定の条件を満たす場合、前記第2ゲストオペレーティングシステムの起動が失敗したことを示す通知を送信する第7手順と、を前記プロセッサに実行させることを特徴とする(11)に記載のプログラム。
本願で開示する代表的な発明は、計算機と、ネットワークを介して前記計算機に接続される監視計算機と、を備える計算機システムであって、前記計算機は、第1プロセッサと、前記第1プロセッサに接続される第1記憶装置と、前記第1プロセッサ及び前記ネットワークに接続される第1インターフェースと、を備え、前記監視計算機は、第2プロセッサと、前記第2プロセッサに接続される第2記憶装置と、前記第2プロセッサ及び前記ネットワークに接続される第2インターフェースと、を備え、前記第1プロセッサは、前記計算機の前記第1プロセッサを含む資源を論理的に分割し、前記分割された資源の各々を、互いに独立した第1仮想計算機及び第2仮想計算機として動作させる仮想化プログラムを実行し、前記第1仮想計算機は、第1ゲストオペレーティングシステムを実行し、前記第2仮想計算機は、第2ゲストオペレーティングシステムを実行し、前記第2記憶装置は、前記第1仮想計算機の識別情報及び前記第2仮想計算機の識別情報と、前記第1ゲストオペレーティングシステムの識別情報及び前記第2ゲストオペレーティングシステムの識別情報と、をそれぞれ対応付ける、仮想計算機ゲストオペレーティングシステム対応情報を保持し、前記第2プロセッサは、前記仮想化プログラムによって前記第1仮想計算機に割り当てられた前記資源に関する第1の情報及び前記第2仮想計算機に割り当てられた前記資源に関する第2の情報を、前記仮想化プログラムから取得する第1手順と、前記第1ゲストオペレーティングシステムが利用する資源に関する第3の情報を、前記第1ゲストオペレーティングシステムから取得する第2手順と、前記第2ゲストオペレーティングシステムが利用する資源に関する第4の情報を、前記第2ゲストオペレーティングシステムから取得する第3手順と、前記第1の情報及び前記第2の情報、前記第1の情報及び前記第2の情報を取得した時刻を示す情報、前記第3の情報及び前記第4の情報、並びに、前記第3の情報及び前記第4の情報を取得した時刻を示す情報を前記第2記憶装置に格納する第4手順と、前記仮想計算機ゲストオペレーティングシステム対応情報に基づいて、前記第3の情報及び前記第4の情報を、それぞれ、前記第1の情報及び前記第2の情報と対応付ける第9手順と、前記第3の情報及び前記第4の情報、並びに、前記第1の情報及び前記第2の情報に基づいて、前記資源の実際の性能を算出する第10手順と、を実行し、前記第9手順は、前記第1仮想計算機に割り当てられた前記資源及び前記第2仮想計算機に割り当てられた前記資源が仮想ネットワークインターフェースカードである場合、前記各資源に関連付けられたメディアアクセスコントロールアドレスに基づいて、前記第3の情報及び前記第4の情報を、それぞれ、前記第1の情報及び前記第2の情報と対応付ける手順であることを特徴とする。