(57)【要約】  ２段階のレベルのＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を実行する計算機は、物理プロセッサ上で動作し、第１レベルＶＭを動作させる論理プロセッサを生成するホストＶＭモニタと、前記論理プロセッサ上で動作し、前記第１レベルＶＭ上に生成される複数の第２レベルＶＭをそれぞれ動作させる複数の仮想プロセッサを生成するゲストＶＭモニタと、を有している。前記ホストＶＭモニタは、第２レベルＶＭのそれぞれに固有であり前記第２レベルＶＭの実行の開始から終了までの間前記ホストＶＭモニタが取得可能な制御情報と、当該第２レベルＶＭを特定する第２レベルＶＭ識別子とを対応付ける管理情報を備え、前記管理情報において、取得した第２レベルＶＭの制御情報に対応する第２レベルＶＭ識別子に基づき第２レベルＶＭを特定し、当該第２レベルＶＭの負荷に関する情報を取得する。
2015083282.tif 000002
【特許請求の範囲】
【請求項１】
２段階のレベルのＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を実行する計算機であって、
物理プロセッサ上で動作し、第１レベルＶＭを動作させる論理プロセッサを生成するホストＶＭモニタと、
前記論理プロセッサ上で動作し、前記第１レベルＶＭ上に生成される複数の第２レベルＶＭをそれぞれ動作させる複数の仮想プロセッサを生成するゲストＶＭモニタと、を有し、
前記ホストＶＭモニタは、
第２レベルＶＭのそれぞれに固有であり前記第２レベルＶＭの実行の開始から終了までの間前記ホストＶＭモニタが取得可能な制御情報と、当該第２レベルＶＭを特定する第２レベルＶＭ識別子とを対応付ける管理情報を備え、前記管理情報において、取得した第２レベルＶＭの制御情報に対応する第２レベルＶＭ識別子に基づき第２レベルＶＭを特定し、当該第２レベルＶＭの負荷に関する情報を取得する、
計算機。
【請求項２】
前記ホストＶＭモニタは、第２レベルＶＭの実行が開始または終了されるとき、前記管理情報に基づき、いずれの第２レベルＶＭの実行が開始または終了されるのかを特定し、当該第２レベルＶＭの実行時間を管理する、請求項１に記載の計算機。
【請求項３】
前記ホストＶＭモニタが、前記第１レベルＶＭを特定する第１レベルＶＭ識別子と、前記制御情報と、を前記管理情報に予め記録し、
前記第２レベルＶＭが、前記ホストＶＭモニタに、前記第１レベルＶＭ識別子と前記制御情報が予め記録された前記管理情報へ前記第２レベルＶＭ識別子を記録させる、
請求項１に記載の計算機。
【請求項４】
前記第２レベルＶＭは、前記物理プロセッサのレジスタに当該第２レベルＶＭの第２レベルＶＭ識別子を格納し、前記ホストＶＭモニタに、前記レジスタから前記第２レベルＶＭ識別子を読み込ませ、前記制御情報に前記第２レベルＶＭ識別子を対応づけて前記管理情報へ記録させる、
請求項３に記載の計算機。
【請求項５】
前記第２レベルＶＭには、前記ホストＶＭモニタに情報を伝えるためのエージェントが組み込まれており、
前記エージェントは、
ＭＯＶ命令を発することにより、前記第２レベルＶＭ識別子を前記レジスタに格納し、
ＣＰＵＩＤ命令を発することにより、前記ホストＶＭモニタに前記レジスタから前記第２レベル識別子を読み込ませる、
請求項４に記載の計算機。
【請求項６】
前記制御情報は、前記物理プロセッサが実行する処理の動作主体を示す、前記ホストＶＭモニタが取得可能に前記物理プロセッサに保持された情報であり、
前記ホストＶＭモニタは、処理実行中の第２レベルＶＭのエージェントから前記ＣＰＵＩＤ命令を受けると、前記レジスタから前記第２レベルＶＭ識別子を読み込み、前記制御情報を取得し、前記第２レベルＶＭ識別子を前記制御情報に対応付けて前記管理情報に記録する、
請求項５に記載の計算機。
【請求項７】
前記ホストＶＭモニタは、更に第１レベルＶＭの負荷を管理し、前記第１レベルＶＭおよび前記第２レベルＶＭの各々の負荷に基づいて、前記第１レベルＶＭおよび前記第２レベルＶＭへの前記論理プロセッサおよび前記仮想プロセッサの割り当てを設定する、
請求項１に記載の計算機。
【請求項８】
前記ホストＶＭモニタは、一定時間毎に、前記第１レベルＶＭおよび前記第２レベルＶＭの各々の実行時間の累積値を算出し、前記累積値の各々を所定の閾値と比較し、比較結果に基づいて、前記第１レベルＶＭまたは前記第２レベルＶＭへの前記論理プロセッサまたは前記仮想プロセッサの割り当てを設定する、
請求項７に記載の計算機。
【請求項９】
前記ホストＶＭモニタは、前記物理計算機を管理する管理計算機に実施を要求することにより、前記第１レベルＶＭまたは前記第２レベルＶＭへの前記論理プロセッサまたは前記仮想プロセッサの割り当てを設定する、
請求項７に記載の計算機。
【請求項１０】
２つのレベルのＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を実行する計算機における負荷測定方法であって、
ホストＶＭモニタが、物理プロセッサ上で動作し、第１レベルＶＭを動作させる論理プロセッサを生成し、
ゲストＶＭモニタが、前記論理プロセッサ上で動作し、前記第１レベルＶＭ上に生成される複数の第２レベルＶＭをそれぞれ動作させる複数の仮想プロセッサを生成し、
前記ホストＶＭモニタが、
第２レベルＶＭのそれぞれに固有であり前記第２レベルＶＭの実行の開始から終了までの間前記ホストＶＭモニタが取得可能な制御情報と、当該第２レベルＶＭを特定する第２レベルＶＭ識別子とを対応付ける管理情報を保持し、
前記管理情報において、取得した第２レベルＶＭの制御情報に対応する第２レベルＶＭ識別子に基づき第２レベルＶＭを特定し、当該第２レベルＶＭの負荷に関する情報を取得する、
負荷測定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第１レベルＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）上で第２レベルＶＭを実行する仮想計算機システムでのプロセッサ性能測定に関する。
【背景技術】
【０００２】
一般に、サーバ台数の増加と共に運用に関する複雑さが増加しており、運用コストが問題化している。運用コストを低減する技術として、複数サーバを１台にまとめるサーバ統合が注目を集めている。サーバ統合を実現する技術として、１つのコンピュータを任意の割合で論理的に分割する仮想計算機技術が知られている。仮想計算機技術では、例えば、ハイパバイザなどのファームウェア（またはミドルウェア）が、物理計算機を複数の論理区画（ＬＰＡＲ：Ｌｏｇｉｃａｌ  ＰＡＲｔｉｔｉｏｎ）に分割し、各ＬＰＡＲに対して計算機資源（典型的には、プロセッサ、メモリ、Ｉ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス）を割り当て、各ＬＰＡＲ上でそれぞれＯＳ（Ｏｐｅｒａｔｉｎｇ  Ｓｙｓｔｅｍ）を動作させる。あるいは、１つのサーバ上で１つのホストＯＳ（物理計算機を直接使用するＯＳ）が実行され、このホストＯＳ上で稼動するハイパバイザが、上記と同様の分割処理を行って、複数のゲストＯＳ（ホストＯＳ上で稼動するＯＳ）を稼動させる。仮想計算機技術は、複数のサーバで稼動していたＯＳ、及び、そのＯＳ上で稼動するソフトウェアを、１台のサーバで稼動させるサーバ統合を実現している。【０００３】
また、仮想計算機技術は、一般には、汎用機（Ｍａｉｎｆｒａｍｅ）等の大型計算機で用いられてきた技術であったが、近年のマイクロプロセッサの性能向上に伴い、ローエンドサーバでも普及しつつある。仮想計算機技術を採用したサーバ等の計算機は、ゲスト（ゲストＯＳ及び、ゲストＯＳ上で稼動するソフトウェアの総称）を稼動させる複数の仮想計算機（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と、仮想計算機の制御を行う仮想計算機モニタ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ、以下「ＶＭＭ」とする）とを有する。【０００４】
ＶＭＭを支援する機能を提供及び拡充するプロセッサが知られている。そのようなプロセッサとして、例えば、ｘ８６プロセッサがある。ローエンドサーバで採用されるプロセッサの中でも特にｘ８６プロセッサはＶＭＭを支援する機能を提供及び拡充しており、このｘ８６プロセッサを搭載するｘ８６サーバは仮想計算機の性能を改善している。【０００５】
例えば、ｘ８６プロセッサは、ゲストの動作を開始する機能と、ゲストの動作を監視して特定のイベントが発生した場合にゲストの動作を中断してＶＭＭを呼ぶアシスト機能とを有する。アシスト機能は、例えば、Ｉｎｔｅｌ社のプロセッサではＶＴ（Ｖｉｒｔｕａｌｉｚａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）と呼ばれ、ＡＭＤ社のプロセッサではＳＶＭ（Ｓｅｃｕｒｅ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）と呼ばれる。また、ゲスト動作の開始は、「ＶＭＥＮＴＲＹ」と呼ばれ、ゲスト動作の中断は、「ＶＭＥＸＩＴ」と呼ばれる。アシスト機能は、ゲスト状態の退避及び回復に使用する領域を、指定することができる。ゲスト状態の退避及び回復に使用する領域は、Ｉｎｔｅｌ社のプロセッサでは、ＶＭＣＳ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌ  Ｓｔｒｕｃｔｕｒｅ）と呼ばれるデータ構造に含まれ、プロセッサ内のＶＭＣＳポインタから参照される。同様に、ＡＭＤ社のプロセッサでは、ＶＭＣＢ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）と呼ばれるデータ構造に含まれ、プロセッサ内のＶＭＣＢポインタから参照される。【０００６】
特許文献１には、複数のＶＭＭ（ホストＶＭＭ、ゲストＶＭＭ）を備え、ホストＶＭＭにより管理される複数の仮想計算機（ＶＭ）のうちの１つの上で、更にＶＭを管理するゲストＶＭＭを動作させる仮想化システム（以下、「２レベル仮想計算機システム」と呼ぶ）が開示されている。ｘ８６プロセッサは、２レベル仮想計算機システムには対応していない。特許文献１では、２レベル仮想計算機システムを構築するためには、ホストＶＭＭが前述のアシスト機能をエミュレーションしてゲストＶＭＭを動作させる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００９−３７４９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
仮想計算機システムでは、一般に、プロセッサの性能情報として、ＶＭＭの物理プロセッサ実行時間と各ＶＭの物理プロセッサ実行時間が採取される。しかし、これらのＶＭＭは、２レベル仮想計算機システムを考慮してプロセッサの実行時間の採取を行っていない。つまり、２レベル仮想計算機システムでは、ホストＶＭＭとゲストＶＭＭが、それぞれ、プロセッサの実行時間を採取する。それゆえ、ホストＶＭＭは、ゲストＶＭＭの管理下にある複数のＶＭのそれぞれ（以下「第２レベルＶＭ」と呼ぶ）について実行時間を採取することはできない。【０００９】
つまり、特許文献１に開示される２レベル仮想計算機システムでは、各第２レベルＶＭの物理プロセッサに対する負荷あるいは影響を把握するための情報を取得することはできない。
【課題を解決するための手段】
【００１０】
本発明の一態様による計算機は、２段階のレベルのＶＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ）を実行する計算機であって、物理プロセッサ上で動作し、第１レベルＶＭを動作させる論理プロセッサを生成するホストＶＭモニタと、前記論理プロセッサ上で動作し、前記第１レベルＶＭ上に生成される複数の第２レベルＶＭをそれぞれ動作させる複数の仮想プロセッサを生成するゲストＶＭモニタと、を有し、前記ホストＶＭモニタは、第２レベルＶＭのそれぞれに固有であり前記第２レベルＶＭの実行の開始から終了までの間前記ホストＶＭモニタが取得可能な制御情報と、当該第２レベルＶＭを特定する第２レベルＶＭ識別子とを対応付ける管理情報を備え、前記管理情報において、取得した第２レベルＶＭの制御情報に対応する第２レベルＶＭ識別子に基づき第２レベルＶＭを特定し、当該第２レベルＶＭの負荷に関する情報を取得するものである。
【発明の効果】
【００１１】
本発明によれば、各第２レベルＶＭの物理プロセッサに対する負荷を把握するための情報を取得することができる。
【図面の簡単な説明】
【００１２】
【図１】実施例１に係る計算機システムのブロック図である。
【図２】ＶＭ管理テーブル１４０の一例を示す図である。
【図３】ＶＭ管理テーブルが生成される処理を示すフローチャートである。
【図４】図３の処理で作成されるＶＭ管理テーブルの一例を示す図である。
【図５】ＶＭ管理テーブル１４０に第２レベルＶＭ識別子を格納する様子を説明するための図である。
【図６】ＶＭ管理テーブル１４０に第２レベルＶＭ識別子１１０２を記録する処理を示すフローチャートである。
【図７】ＶＭのＣＰＵ使用率を採取する様子を説明するための図である。
【図８】性能情報テーブル１５０の一例を示す図である。
【図９】ＶＭＥＸＩＴが発生時の性能情報テーブルを更新する処理を示すフローチャートである。ＶＭＥＸＩＴが発生時の性能情報テーブルを更新する処理を示すフローチャートである。
【図１０】ＶＭＥＮＴＲＹが発生時の性能情報テーブルを更新する処理を示すフローチャートである。
【図１１】物理ＣＰＵ１１を使用するＶＭ等の遷移の様子を示す図である。
【図１２】物理ＣＰＵ１１の使用状況を示すグラフの一例である。
【図１３】図１２にグラフ１３０３として示した第１レベルＶＭ２２の物理ＣＰＵ使用率の詳細を示した図である。
【図１４】図１２に示した第１レベルＶＭの物理ＣＰＵ使用率と、図１３に第２レベルＶＭの物理ＣＰＵ使用率との関係を示す図である。
【図１５】実施例２においてホストＶＭＭ１０が第１レベルＶＭ２２、２４、２６または第２レベルＶＭ２２１、２２２への論理ＣＰＵまたは仮想ＣＰＵの割り当てを設定する処理を示すフローチャートである。
【図１６】実施例２における性能情報テーブル１５０の第１例を示す図である。
【図１７】実施例２における性能情報テーブル１５０の第２例を示す図である。実施例２における性能情報テーブル１５０の第２例を示す図である。
【図１８】実施例２における性能情報テーブル１５０の第３例を示す図である。
【発明を実施するための形態】
【００１３】
本発明の実施例について図面を参照して説明する。
【００１４】
以下の説明では、「×××テーブル」の表現にて情報を説明することがあるが、情報は、どのようなデータ構造で表現されていてもよい。すなわち、情報がデータ構造に依存しないことを示すために、「×××テーブル」を「×××情報」と呼ぶことができる。
【００１５】
また、以下の説明では、「プログラム」を主語として処理を説明する場合があるが、プログラムは、プロセッサ（例えばＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ））によって実行されることで、定められた処理を、適宜に記憶デバイス（例えばメモリ）及び／又は通信インタフェースデバイス（例えば通信ポート）を用いながら行うため、処理の主語がプロセッサとされてもよい。プログラムを主語として説明された処理は、プロセッサ或いはそのプロセッサを有するシステムが行う処理としてもよい。また、プロセッサは、ＣＰＵそれ自体であってもよいし、プロセッサが行う処理の一部又は全部を行うハードウェア回路を含んでもよい。プログラムは、プログラムソースからインストールされてもよい。プログラムソースは、例えば、プログラム配布サーバ又は記憶メディアであってもよい。プログラム配布サーバは、管理用計算機であってもよい。
【実施例１】
【００１６】
本実施例では、第１レベルＶＭと第２レベルＶＭとで２段階の入れ子構造に構築されたＶＭの各第１レベルＶＭおよび各第２レベルＶＭと、ホストＶＭＭと、ゲストＶＭＭのそれぞれによる物理プロセッサの使用時間を測定する例を示す。ここで、第１レベルＶＭと第２レベルＶＭはともに物理計算機３００上で動作する仮想計算機であり、第２レベルＶＭが第１レベルＶＭ上で動作するという入れ子構造をなす。【００１７】
図１は、実施例１に係る計算機システムのブロック図である。【００１８】
計算機システムは、物理計算機３００と、管理計算機３０１とを有する。【００１９】
物理計算機３００は、２レベル仮想計算機システムの一例である。物理計算機３００は、仮想化支援機能を備えて演算処理を実行する物理ＣＰＵ１の他に、データやプログラムを格納するメモリ（不図示）と、物理計算機３００の外部の装置とデータの送受信を行うためのＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）デバイス（不図示）とを有し、物理ＣＰＵ１１がメモリ及びＩ／Ｏデバイスに接続された構成である。Ｉ／Ｏデバイスは、例えば、ネットワークインターフェースやホストバスアダプタ等である。物理ＣＰＵ１１は、複数のプロセッサで構成されてもよいし、複数の演算コアを備えたプロセッサで構成されてもよい。【００２０】
本実施例における上記「仮想化支援機能」は、ゲストの動作を開始する機能と、ゲストの動作を監視して特定のイベントが発生した場合にゲストの動作を中断してＶＭＭ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）を呼び出すアシスト機能とを含む。【００２１】
物理計算機は、物理ＣＰＵ１１を備え、物理ＣＰＵ１１はレジスタ１６０とＶＭＣＳポインタ１７０を有する。仮想計算機システムは、仮想計算機（ＶＭ）を提供する第１の仮想マシンモニタ（ホストＶＭＭ１０）と、第１の仮想マシンモニタ上で動作する仮想計算機（第１レベルＶＭ２２、２４、２６）と、仮想計算機上で動作する第２の仮想マシンモニタ（ゲストＶＭＭ２０）と、第２の仮想マシンモニタ上で動作する仮想計算機（第２レベルＶＭ２２１、２２２）と、を有する。【００２２】
物理計算機３００でホストＶＭＭ１０が実行される。ホストＶＭＭ１０は、複数の第１レベルＶＭ２２、２４、２６を稼動させるため、物理計算機３００の物理資源を仮想化した仮想資源に変換し、各第１レベルＶＭ２２、２４、２６へ仮想資源を割り当てる。本実施例におけるホストＶＭＭ１０は、仮想化機構の一例としてハイパバイザである。【００２３】
ここで物理ＣＰＵの資源を物理的な構成に依存せずに論理的に分割し、それぞれを論理ＣＰＵとする。論理ＣＰＵは、ホストＶＭＭにより作成され、ホストＶＭＭの制御により動的に物理ＣＰＵが割り当てられる。そして論理ＣＰＵは物理ＣＰＵをエミュレーションする。仮想ＣＰＵは、ゲストＶＭＭによって作成され、ゲストＶＭＭの制御により動的に論理ＣＰＵが割り当てられる。そして仮想ＣＰＵは第２レベルＶＭに割り当てられ、論理ＣＰＵをエミュレートする。【００２４】
物理ＣＰＵ１１をエミュレーションしている論理ＣＰＵ２１、２３、２５をホストＶＭＭ１０が使用し、第１レベルＶＭ２２、２４、２６およびゲストＶＭＭ２０を稼動する。また、論理ＣＰＵ２１をエミュレーションしている仮想ＣＰＵ２７１、２７２をゲストＶＭＭ２０が使用し、第２レベルＶＭ２２１、２２２を稼動する。【００２５】
ホストＶＭＭ１０は、第２レベルＶＭ２２１、２２２を識別するためのＶＭ管理テーブル１４０と、ＶＭおよびＶＭＭの物理ＣＰＵの使用時間を記録するための性能情報テーブル１５０と、を有する。【００２６】
ゲストＶＭＭ２０は、第２レベルＶＭ２２１、２２２のＶＭＣＳポインタの切り替えを行うスケジューラ２８１と、ゲストＶＭＭ２０が管理する第２レベルＶＭに対応したゲストＶＭＣＳ２０１とを有する。第２レベルＶＭ２２１、２２２上ではゲストＯＳ２６１、２６２が稼動し、ゲストＯＳ２６１、２６２上では複数のアプリケーションを稼動させることができる。Ａｇｅｎｔ２３１、２３２は、そのアプリケーションの一例である。【００２７】
本実施例のホストＶＭＭ１０は、一例として物理ＣＰＵ１１で実行されるプログラムであるが、他の例としてホストＶＭＭ１０の機能の一部又は全部がハードウェア回路で実現されてよい。【００２８】
なお、物理計算機３００の物理資源（例えば、物理ＣＰＵ１１、物理メモリ及び物理Ｉ／Ｏデバイス）に基づく仮想資源（例えば、仮想ＣＰＵ、仮想メモリ及び仮想Ｉ／Ｏデバイス）を各第１レベルＶＭに割り当てる技術は既知であるため、ここでは詳述しない。また、第１レベルＶＭの数は、本実施例（図１参照）ではでは３個であるが、１個でも２個でも４個以上でもよい。【００２９】
第１レベルＶＭでは、ゲストＯＳあるいはゲストＶＭＭが稼動する。【００３０】
図１における第１レベルＶＭ２４、２６はゲストＯＳが稼動する例を示している。第１レベルＶＭ２４、２６上でゲストＯＳ２６３、２６４がそれぞれ稼動している。ゲストＯＳ２６３、２６４上ではアプリケーションプログラムが実行される。【００３１】
図１における第１レベルＶＭ２２はゲストＶＭＭが稼動する例を示している。第１レベルＶＭ２２上でゲストＶＭＭ２０が稼動し、そのゲストＶＭＭ２０上で複数の第２レベルＶＭ２２１、２２２が実行される。第２レベルＶＭ２２１、２２２上では、ゲストＯＳ２６１、２６２がそれぞれ稼働し、ゲストＯＳ２６１、２６２のそれぞれ上でアプリケーションが実行される。この場合の第１レベルＶＭ２２において、ゲストＯＳの数とゲストＶＭＭの数はそれぞれ２個以上でもよい。また、第２レベルＶＭにおいて、ゲストＯＳの数は、２以上でもよい。また、第２レベルＶＭにおいて実行されるアプリケーションの数は、１個でもそれ以上でもよい。【００３２】
ホストＶＭＭ１０は、第１レベルＶＭ２２、２４、および２６を作成し、管理する。また、ホストＶＭＭ１０は、第１レベルＶＭ２２上の第２レベルＶＭ２２１、２２２にそれぞれ対応するシャドウＶＭＣＳ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌ  Ｓｔｒｕｃｔｕｒｅ）１１１、１１２と、第１レベルＶＭ２４、２６のそれぞれに対応するホストＶＭＣＳ１１３、１１４とを作成し、管理する。【００３３】
また、ゲストＶＭＭ２０は、第２レベルＶＭ２２１、２２２と、その第２レベルＶＭ２２１、２２２にそれぞれに対応したゲストＶＭＣＳ２０１、２０２を作成し、管理する。【００３４】
理する。これにより第２レベルＶＭ２２１、２２２を動作させることができる。このゲストＶＭＭ２０は、例えば、仮想的なハイパバイザである。【００３５】
ここでＶＭＣＳは、ＶＭの制御情報の一例である。ＶＭＣＳは、仮想ＣＰＵあるいは論理ＣＰＵの状態を保存するデータの集合であり、所定のデータ構造を有し、仮想ＣＰＵおよび論理ＣＰＵ毎に存在する。例えば、物理計算機のひとつの状態遷移であるＶＭＥＸＩＴの発生原因および発生時のレジスタ値を退避する領域を含む。ＶＭＭがＶＭＣＳを生成し、そのＶＭＣＳに基づいてＶＭを起動したり、終了したりといった処理を行う。ここでのＶＭＣＳは、Ｉｎｔｅｌ社のプロセッサに関するデータ構造であり、ＡＭＤ社のプロセッサであれば、このＶＭＣＳに相当するものはＶＭＣＢ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｃｏｎｔｒｏｌ  Ｂｌｏｃｋ）と呼ばれる。【００３６】
ホストＶＭＣＳは、ホストＶＭＭが管理するＶＭＣＳであり、ホストＶＭＭが第１レベルＶＭを起動するためのＶＭＣＳである。ゲストＶＭＣＳは、ゲストＶＭが管理するＶＭＣＳであり、ゲストＶＭが第２レベルＶＭを起動するためのＶＭＣＳであり、その設定内容はそのままシャドウＶＭＣＳに反映される。シャドウＶＭＣＳは、ホストＶＭが管理するＶＭＣＳであり、第２レベルＶＭが稼働中に使用するＶＭＣＳである。シャドウＶＭＣＳには、ゲストＶＭＭが管理しているゲストＶＭＣＳの設定内容がそのまま反映される。物理ＣＰＵは、このシャドウＶＭＣＳの設定内容を見ることで、第２レベルＶＭの状態を知ることができる。【００３７】
ホストＶＭＭ１０は、物理ＣＰＵ１１について、ホストＶＭＭ１０の実行時間（性能情報）と、各第１レベルＶＭ２２、２４、２６の実行時間と、各第２レベルＶＭ２２１、２２２の実行時間とを採取し、採取されたそれぞれの実行時間を性能情報テーブル１５０に記録する。このホストＶＭＭ１０が第２レベルＶＭ２２１、２２２の実行時間を採取するための構成および処理については後述する。【００３８】
性能情報テーブル１５０は、ホストＶＭＭ１０により採取された実行時間が記録されるテーブルである。物理ＣＰＵ１１が複数ある場合、性能情報テーブル１５０は物理ＣＰＵ１１毎に存在してよい。ホストＶＭＭ１０は、管理計算機３０１からのリクエストに応答して、性能情報テーブル１５０に記録された情報を管理計算機３０１に出力してよい。【００３９】
物理計算機３００には、Ｉ／Ｏデバイスによりネットワーク（例えばインターネット）を経由して管理計算機３０１が接続されている。管理計算機３０１は、一例として、物理計算機３００と通信するためのインタフェースデバイスであるＩ／Ｏデバイスと、メモリと、それらに接続されたプロセッサとを有した計算機である。その計算機がサーバ管理ソフトウェア３０２を実行することにより管理計算機３０１が実現される。【００４０】
管理計算機３０１のプロセッサは、ホストＶＭＭ１０から、性能情報テーブル１５０に記録された情報を周期的に取得し、取得した情報を性能情報３０３としてメモリに記録する。また、管理計算機３０１は、取得した性能情報３０３に基づく情報を表示してよい。例えば、管理計算機３０１は、表示デバイスを有しており、その表示デバイスに、性能情報３０３に基づく情報を表示してよい。あるいは、例えば、管理計算機３０１は、表示デバイスを有する遠隔の計算機である表示用計算機（不図示）に、性能情報３０３に基づく表示用の情報を送信し、表示用計算機に表示させてもよい。【００４１】
次に、ホストＶＭＭ１０が第２レベルＶＭ２２１、２２２の実行時間を採取するための構成および処理の概要について説明する。【００４２】
図１を見て分かるように、物理計算機３００は、物理ＣＰＵ１１上で動作して第１レベルＶＭ２２、２４、２６を動作させる論理ＣＰＵ２１、２３、２５を生成するホストＶＭＭ１０と、論理ＣＰＵ２１上で動作して第１レベルＶＭ２２上に生成される複数の第２レベルＶＭ２２１、２２２をそれぞれ動作させる複数の仮想ＣＰＵ２７１、２７２を生成するゲストＶＭモニタと、を有している。【００４３】
ホストＶＭＭ１０は、第２レベルＶＭ２２１、２２２のそれぞれに固有でありその第２レベルＶＭ２２１、２２２の実行の開始から終了までホストＶＭＭ１０が取得可能な制御情報（ＶＭＣＳポインタ）と、その第２レベルＶＭ２２１、２２２を特定する第２レベルＶＭ識別子とを対応付ける管理情報（ＶＭ管理テーブル１４０）を予め保持している。ＶＭＣＳポインタは、物理ＣＰＵ上のＶＭＣＳの先頭アドレスを指し示すレジスタであり、その領域は固定的である。その領域に、ホストＶＭＭ１０から取得可能にリアルタイムの情報が保持される。ＶＭＣＳポインタの値は、スケジューラ１３０によって設定され、変更される。このＶＭＣＳポインタから、物理ＣＰＵ１１が実行している処理の動作主体を知ることができる。ＶＭ管理テーブル１４０の生成方法については後述する。【００４４】
そして、ホストＶＭＭ１０は、ＶＭ管理テーブル１４０において、取得した第２レベルＶＭ２２１、２２２のＶＭＣＳポインタに対応する第２レベルＶＭ識別子によって第２レベルＶＭ２２１、２２２を特定し、その第２レベルＶＭ２２１、２２２の負荷に関する情報を取得する。これによれば、各第２レベルＶＭの物理ＣＰＵ１１に対する負荷あるいは影響を把握するための情報を取得することができる。【００４５】
また、ホストＶＭＭ１０は、第２レベルＶＭ２２１、２２２の実行が開始または終了されるとき、ＶＭ管理テーブル１４０に基づき、いずれの第２レベルＶＭの実行が開始または終了されるのかを特定し、その第２レベルＶＭの実行時間を管理する。これによれば、ホストＶＭモニタは、各第２レベルＶＭが物理ＣＰＵ１１を使用している時間（実行時間）を把握することが可能となる。なお、ゲストＶＭＭ２０が第２レベルＶＭの実行時間を採取することも可能であるが、そのようにして採取される実行時間は、物理ＣＰＵの実行時間ではなく、物理ＣＰＵに基づく仮想資源である仮想ＣＰＵの実行時間であるため、物理ＣＰＵの実行時間を正確に示していない。この点、本実施例では、正確な物理ＣＰＵ１１の実行時間を採取することができる。【００４６】
その際、ホストＶＭＭ１０が、第１レベルＶＭ２２、２４、２６を特定する第１レベルＶＭ識別子と、ＶＭＣＳポインタと、をＶＭ管理テーブル１４０に予め記録し、第２レベルＶＭ２２１、２２２が、ホストＶＭＭ１０に、第１レベルＶＭ識別子とＶＭＣＳポインタが予め記録されたＶＭ管理テーブル１４０へ第２レベルＶＭ識別子を記録させる。このようにして、ＶＭ管理テーブル１４０が生成される。【００４７】
その際、第２レベルＶＭ２２１（または２２２）は、物理ＣＰＵ１１のレジスタ１６０にその第２レベルＶＭ２２１（または２２２）の第２レベルＶＭ識別子を格納した後、ホストＶＭＭ１０に、レジスタ１６０から第２レベルＶＭ識別子を読み込ませ、ＶＭＣＳポインタに第２レベルＶＭ識別子を対応づけてＶＭ管理テーブル１４０へ記録させる。【００４８】
より具体的には、第２レベルＶＭ２２１（または２２２）には、ホストＶＭＭ１０に情報を伝えるためのエージェント（Ａｇｅｎｔ２３１（または２３２））が組み込まれている。Ａｇｅｎｔ２３１（または２３２）は、ＭＯＶ命令を発することにより、第２レベルＶＭ識別子をレジスタ１６０に格納し、ＣＰＵＩＤ命令を発することにより、ホストＶＭＭ１０にレジスタ１６０から第２レベル識別子を読み込ませる。ＭＯＶ命令は、メモリ上のデータをレジスタに格納するための命令であり、ＯＳ上のプリケーションから実行することができる命令である。ＣＰＵＩＤ命令は、ＣＰＵの性能あるいはサポートする機能を確認するための命令であり、ユーザ権限でＯＳ上のアプリケーションが実行できるハードウェア制御の命令である。ＣＰＵＩＤ命令はＣＰＵＩＤエミュレータ１２０により、エミュレーションされる。ＣＰＵＩＤ命令によりレジスタ値を読み込むことができる。【００４９】
これによれば、ＭＯＶ命令およびＣＰＵＩＤ命令を実行可能なＡｇｅｎｔ２３１（または２３２）を第２レベルＶＭ２２１（または２２２）に組み込むことにより、第２レベルＶＭの実行時間を管理することが可能となる。【００５０】
ホストＶＭＭ１０は、処理実行中の第２レベルＶＭ２２１（または２２２）のＡｇｅｎｔ２３１（または２３２）からＣＰＵＩＤ命令を受けると、レジスタ１６０から第２レベルＶＭ識別子を読み込み、ＶＭＣＳポインタを取得し、第２レベルＶＭ識別子をＶＭＣＳポインタに対応付けてＶＭ管理テーブル１４０に記録する。【００５１】
図２は、ＶＭ管理テーブル１４０の一例を示す図である。【００５２】
ＶＭ管理テーブル１４０は、ＶＭを識別するための情報を格納するテーブルであり、第１レベルＶＭ、第２レベルＶＭ、ホストＶＭＭ、およびゲストＶＭＭのそれぞれを識別する情報が格納される。【００５３】
このＶＭ管理テーブル１４０はホストＶＭＭ１０が作成する。ＶＭ管理テーブル１４０には、各ＶＭについて、第１レベルＶＭを識別するための情報である第１レベルＶＭ識別子１１０１および第２レベルＶＭを識別するための情報である第２レベルＶＭ識別子１１０２と、それに対応するＶＭＣＳポインタ１１０３が設定される。【００５４】
ホストＶＭＭ１０は、Ａｇｅｎｔ２３１、２３２から与えられる情報から、第１レベルＶＭ２２、第２レベルＶＭ２２１、２２２およびゲストＶＭＭ２０のそれぞれを識別し、ＶＭ管理テーブル１４０に記録する。【００５５】
第１レベルＶＭについては、ＶＭＣＳおよび第１レベルＶＭを共にホストＶＭＭ１０が管理している。そのため、どのＶＭＣＳによって第１レベルＶＭが稼動しているか認識することは容易であり、ホストＶＭＭ１０はそのＶＭＣＳポインタと第１レベルＶＭ識別子１１０１を容易にＶＭ管理テーブル１４０に記録することができる。【００５６】
しかし、第２レベルＶＭについては、物理ＣＰＵ１１は、シャドウＶＭＣＳ１１１，１１２というゲストＶＭＭ２０が作成および管理するゲストＶＭＣＳ２０１，２０２の複製を参照し、第２レベルＶＭ２２１，２２２を実行する。【００５７】
複製元であるＶＭＣＳ（ゲストＶＭＣＳ２０１，２０２）および第２レベルＶＭ２２１，２２２はゲストＶＭＭ２０が作成および管理しており、そのゲストＶＭＣＳ２０１、２０２がシャドウＶＭＣＳ１１１、１１２に反映され、ホストＶＭＭ１０はシャドウＶＭＣＳ１１１，１１２のゲスト状態エリアをＶＭＣＳポインタ１７０に設定することで第２レベルＶＭ２２１，２２２を起動しているのみである。【００５８】
そのため、ホストＶＭＭ１０は、物理ＣＰＵ１１が実行しているのが、ゲストＶＭＭ２０が作成したいずれかの第２レベルＶＭであることは把握できるが、そのうちのどの第２レベルＶＭが実行されているのかまでは把握できない。つまり、物理ＣＰＵ１１およびホストＶＭＭ１０の動作上、実行中の第２レベルＶＭのＶＭＣＳポインタがリアルタイムでＶＭＣＳポインタ１７０に設定されてはいるが、ホストＶＭＭ１０は、ＶＭＣＳポインタ１７０にどの第２レベルＶＭのＶＭＣＳポインタが入っているのか認識して処理を実行しているのではない。【００５９】
更に、一般に、ホストＶＭＭ１０から第２レベルＶＭ２２１，２２２に対して、必要な情報を要求する命令等のインターフェースが存在しない。そこで本実施例では、第２レベルＶＭ２２１、２２２にＡｇｅｎｔ２３１、２３２を設け、Ａｇｅｎｔ２３１，２３２からホストＶＭＭ１０へ、第２レベルＶＭ識別子３１１，３１２を伝えるインターフェースを設けている。【００６０】
本実施例では、ホストＶＭＭ１０は、第２レベルＶＭを実行中にＶＭＣＳポインタ１７０に設定されているＶＭＣＳポインタの値と、実行中の第２レベルＶＭ内のＡｇｅｎｔから得た第２レベルＶＭ識別子とを対応付けて、図２に示すようにＶＭ管理テーブル１４０に記録する。【００６１】
図２の例では、第１レベルＶＭ２２の第１レベルＶＭ識別子の値が“０”であり、第１レベルＶＭ２４の第１レベルＶＭ識別子の値が“１”であり、第１レベルＶＭ２６の第１レベルＶＭ識別子の値が“２”である。また、第２レベルＶＭ２２１の第２レベルＶＭ識別子の値が“０”であり、第２レベルＶＭ２２２の第２レベルＶＭ識別子の値が“１”である。また、第１レベルＶＭ２２においては、第２レベルＶＭ２２１のＶＭＣＳポインタの値が“０ｘＡＡＡＡＡＡＡＡ”であり、第２レベルＶＭ２２２のＶＭＣＳポインタの値が“０ｘＢＢＢＢＢＢＢＢ”であり、ゲストＶＭＭ２０のＶＭＣＳポインタの値が“０ｘＣＣＣＣＣＣＣＣ”である。また、第１レベルＶＭ２４のＶＭＣＳポインタの値が“０ｘＤＤＤＤＤＤＤＤ”であり、第１レベルＶＭ２６のＶＭＣＳポインタの値が“０ｘＥＥＥＥＥＥＥＥ”である。【００６２】
図２に示すようなＶＭ管理テーブル１４０を記録しておくことにより、そのＶＭ管理テーブル１４０を参照して、ＶＭＣＳポインタ１７０に設定されている値を第２レベルＶＭ識別子に変換することが可能となる。この第２レベル識別子は、ホストＶＭＭ１０および管理計算機３０１が第２レベルＶＭの識別に利用することができる情報である。このようにして、どの第２レベルＶＭが物理ＣＰＵ１１を使用しているかまで、ホストＶＭＭ１０、更には管理計算機３０１が把握できるようになっている。【００６３】
図３は、ＶＭ管理テーブルが生成される処理を示すフローチャートである。図４は、図３の処理で作成されるＶＭ管理テーブルの一例を示す図である。ＶＭ管理テーブル１４０は、第２レベルＶＭ２２１、２２２が稼働し、Ａｇｅｎｔ２３１、２３２が起動する前に生成される。【００６４】
ステップＳ２００１で、ホストＶＭＭ１０は、空のＶＭ管理テーブル１４０を作成し、ステップＳ２００２で、ＶＭ管理テーブル１４０にホストＶＭＭの行を生成する。【００６５】
ステップＳ２００３で、ホストＶＭＭ１０は、ＶＭＣＳを作成し、ステップＳ２００４で、それに対応する第１レベルＶＭ識別子とＶＭＣＳポインタをＶＭ管理テーブル１４０に記憶する。【００６６】
図４に示すように、第１レベルＶＭ識別子１１１１とＶＭＣＳポインタ１１１３だけが設定される。具体的には、第１レベルＶＭ識別子１１１１の欄には、上から、“０”“０”“０”“１”“２”という値が設定され、ＶＭＣＳポインタ１１１３の欄には、上から“０ｘＡＡＡＡＡＡＡＡ”“０ｘＢＢＢＢＢＢＢＢ”“０ｘＣＣＣＣＣＣＣＣ”“０ｘＤＤＤＤＤＤＤＤ”“０ｘＥＥＥＥＥＥＥＥ”という値が設定される。【００６７】
つぎにステップＳ２００５で、ホストＶＭＭ１０は、作成したＶＭＣＳが第１レベルＶＭのＶＭＣＳであるか否か判定する。その判定で、その作成したＶＭＣＳが第１レベルＶＭのＶＭＣＳでなく、シャドウＶＭＣＳであった場合、それは第２レベルＶＭが存在することを意味するため、ＶＭ管理テーブル１４０の第２レベルＶＭ識別子の欄を一旦クリアする。クリアは例えば２進数のオール１を書き込むことが考えられる。図４の例では、２行目が第２レベルＶＭ２２１を示し、３行目が第２レベルＶＭ２２２を示すので、２行目および３行目の第２レベルＶＭ識別子１１１２の欄をクリアする。【００６８】
以上のように、ホストＶＭＭ１０は、自身が作成し、管理する第１レベルＶＭについては、各第１レベルＶＭとＶＭＣＳポインタとを容易に対応付けることができる。図３に示したフローチャートの処理によって、図４に示したＶＭ管理テーブル１４０までは容易に完成することができる。図４を参照すると、図２の完成形のうち、第１レベルＶＭについては第１レベルＶＭ識別子１１１１とＶＭＣＳポインタ１１１３という必要な全ての情報が格納されている。一方、第１レベルＶＭ上に第２レベルＶＭがあり、ゲストＶＭＭがゲストＶＭＣＳを生成し、その複製がシャドウＶＭＣＳに存在する場合、すなわち、第２レベルＶＭの場合には、ホストＶＭＭ１０は第１レベルＶＭ識別子のように容易に第２レベルＶＭ識別子１１１２を知ることができないので、図３の処理を終えた段階では、第１レベルＶＭ識別子１１１１とシャドウＶＭＣＳのＶＭＣＳポインタ１１１３だけは格納されているが、第２レベルＶＭ識別子１１１２は未だ格納されていない。【００６９】
図５は、ＶＭ管理テーブル１４０に第２レベルＶＭ識別子を格納する様子を説明するための図である。図６は、ＶＭ管理テーブル１４０に第２レベルＶＭ識別子１１０２を記録する処理を示すフローチャートである。第２レベルＶＭ２２１，２２２のゲストＯＳ２６１，２６２にＡｇｅｎｔ２３１，２３２が稼動し、ＶＭ管理テーブル１４０に第２レベルＶＭ識別子１１０２を記録する。【００７０】
ステップＳ２０１１で、第２レベルＶＭ２２１，２２２上のゲストＯＳ２６１，２６２でＡｇｅｎｔ２３１，２３２を稼動させる。ステップＳ２０１２で、Ａｇｅｎｔ２３１，２３２は起動が完了するとき、各第２レベルＶＭを識別する情報である第２レベルＶＭ識別子３１１，３１２を記憶素子に格納する命令を実行する。第２レベルＶＭ識別子は、ゲストＯＳ上で稼動するアプリケーションが取得できる値でありかつユニークな値である。【００７１】
第２レベルＶＭ識別子は、ホストＶＭＭ１０が第２レベルＶＭ２２１、２２２を識別するのに使用するため、ホストＶＭＭ１０が管理する第２レベルＶＭで重複しないことが必須である。第２レベルＶＭ識別子３１１、３１２は、一例として示したＶＭのＭＡＣアドレスの他、ゲストＯＳが持つＩＰアドレスであってもよい。第２レベルＶＭ識別子を記録する記憶素子は、例えば物理ＣＰＵ１１のレジスタ１６０でよい。第２レベルＶＭ識別子を記憶素子に格納する命令は、例えば、ＭＯＶ命令２４１である。【００７２】
ステップＳ２０１３でＡｇｅｎｔ２３１、２３２は、ホストＶＭＭ１０に対してユーザ権限で仮想化例外を発生させる命令（例えばＣＰＵＩＤ命令２５１）を実行する。次のステップＳ２０１４で、この命令を受けたホストＶＭＭ１０のＣＰＵＩＤエミュレータは、それを契機に物理ＣＰＵ１１のレジスタ１６０の値を読みこむ。【００７３】
ステップＳ２０１５で、ホストＶＭＭ１０のＣＰＵＩＤエミュレータ１２０は、ＶＭＣＳポインタ１７０を読み出すことで、稼動しているＶＭのＶＭＣＳポインタを認識できるので、レジスタ１６０に格納されている第２レベルＶＭ識別子３１１と、ステップＳ２０１２、Ｓ２０１３で命令を実行したＡｇｅｎｔ２３１が稼動している第２レベルＶＭ２２１のＶＭＣＳポインタ１７０とを対応付け、ＶＭ管理テーブル１４０へと記録する。【００７４】
以上、図６のフローチャート示されている処理によって、ホストＶＭＭ１０は、図２に示したようなＶＭ管理テーブル１４０を完成させることができる。【００７５】
次に、第２レベルＶＭの物理ＣＰＵ使用率を測定するための方法について説明する。【００７６】
図７は、ＶＭのＣＰＵ使用率を採取する様子を説明するための図である。図８は、性能情報テーブル１５０の一例を示す図である。【００７７】
図８を参照すると、性能情報テーブル１５０には、第１レベルＶＭ識別子１２０１と第２レベルＶＭ識別子１２０２とで示されるＶＭによる、物理ＣＰＵ累積使用時間１２０３と実行再開時刻１２０４が記録されている。【００７８】
物理ＣＰＵ累積使用時間１２０３は、所定の一定時間における各ＶＭ等（第１レベルＶＭ２４，２６、第２レベルＶＭ２２１，２２２、ホストＶＭＭ１０、ゲストＶＭＭ２０）の物理ＣＰＵ１１の使用時間の累積を示している。所定の一定時間は任意に設定でき、特に限定されない。一定時間の間、物理ＣＰＵ１１の使用時間を積算し、その一定時間が経過すると、その累積値によって性能情報テーブル１５０の物理ＣＰＵ累積使用時間１２０３を更新し、その累積値を初期化する。【００７９】
実行再開時刻１２０４は、第１レベルＶＭ２４，２６、第２レベルＶＭ２２１，２２２、ホストＶＭＭ１０、ゲストＶＭＭ２０が物理ＣＰＵの使用を再開した時刻を示している。それらが物理ＣＰＵの使用を終了したときに使用時間を計算するのに使用される。【００８０】
図９は、ＶＭＥＸＩＴが発生時の性能情報テーブルを更新する処理を示すフローチャートである。【００８１】
ホストＶＭＭ１０のＣＰＵＩＤエミュレータ１２０は、ステップＳ２０２１でＶＭＥＸＩＴが発生したのを契機として、ステップＳ２０２２で、ホストＶＭＭ１０の実行再開時刻を現在時刻で更新する。あるＶＭでＶＭＥＸＩＴが発生すると、そのＶＭが物理ＣＰＵ１１を使用している状態から、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態となるからである。【００８２】
また、ステップＳ２０２３で、ホストＶＭＭ１０のＣＰＵＩＤエミュレータ１２０は、ＶＭ管理テーブル１４０を参照し、そのＶＭのＶＭＣＳポインタ１７０に対応する第１レベルＶＭ識別子１２０１および第２レベルＶＭ識別子１２０２を割り出す。これによりＶＭＥＸＩＴが発生したＶＭが特定される。【００８３】
ステップＳ２０２４で、ホストＶＭＭ１０のＣＰＵＩＤエミュレータ１２０は、割り出した第１レベルＶＭ識別子１２０１および第２レベルＶＭ識別子１２０２に対応したＶＭの性能情報テーブルの物理ＣＰＵ累積使用時間１２０３に、現在時刻から実行再開時刻１２０４を引いた時間値を加算する。【００８４】
図１０は、ＶＭＥＮＴＲＹが発生時の性能情報テーブルを更新する処理を示すフローチャートである。性能情報テーブルの更新は、ＶＭＥＮＴＲＹの発生直前に行われる。図７を参照しながら説明する。【００８５】
図７の例では、ＶＭＥＮＴＲＹが発生する直前に、ゲストＶＭＭ２０は、第２レベルＶＭ２２２を起動するために、ゲストＶＭＣＳ２０２の先頭アドレスを論理ＣＰＵ２１のＶＭＣＳポインタ２１２に設定するためのＶＭＰＴＲＬＤ命令２９１を実行する。ＶＭＰＴＲＬＤ命令２９１は、仮想計算機を起動するために、ＶＭＣＳポインタにより、どのＶＭＣＳを使用するのかを設定する命令である。【００８６】
ステップＳ２０３１で、ホストＶＭＭ１０のスケジューラ１３０が、ＶＭＰＴＲＬＤ命令２９１を受信する。これを契機として、ステップＳ２０３２で、ＣＰＵＩＤエミュレータ１２０は、性能情報テーブル１５０のホストＶＭＭ欄の物理ＣＰＵ累積使用時間１２０３に、現在時刻から実行再開時刻１２０４を引いた時間値を加算する。【００８７】
スケジューラ１３０は、ＶＭＰＴＲＬＤ命令１３１によって、ＶＭＣＳポインタ１７０をシャドウＶＭＣＳ１１１の設定をシャドウＶＭＣＳ１１２へロードし、設定する。ステップＳ２０３３で、ＣＰＵＩＤエミュレータ１２０は、この設定の実行を契機として、設定したＶＭＣＳポインタ１７０に対応した第１レベルＶＭ識別子１２０１および第２レベルＶＭ識別子１２０２をＶＭ管理テーブル１４０から取得する。ステップＳ２０３４で、ＣＰＵＩＤエミュレータ１２０は、取得した第１レベルＶＭ識別子１２０１および第２レベルＶＭ識別子１２０２に対応するＶＭの性能情報テーブル１５０上の実行再開時刻１２０４を現在時刻に更新する。その後にステップＳ２０３５で、ＶＭＥＮＴＲＹが発生し、ＶＭＣＳポインタ１７０によって先頭アドレスが示されたＶＭ２２２が起動する。【００８８】
図１１は、物理ＣＰＵ１１を使用するＶＭ等の遷移の様子を示す図である。本実施例ではホストＶＭＭ１０、第１レベルＶＭ２２，２４，２６、ゲストＶＭＭ２０、第２レベルＶＭ２２１，２２２が物理ＣＰＵ１１を使用しうる。【００８９】
時刻Ｔ１にＶＭＥＮＴＲＹが発生し、それを契機として、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態から、第１レベルＶＭ２４，２６が物理ＣＰＵ１１を使用している状態に遷移する。【００９０】
Ｔ２にＶＭＥＸＩＴが発生し、それを契機として、第１レベルＶＭ２４，２６が物理ＣＰＵ１１を使用している状態から、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態に遷移する。【００９１】
Ｔ３には、ホストＶＭＭ１０のゲストＶＭＭ２０に対するＶＭＥＮＴＲＹが発生し、それを契機として、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態から、ゲストＶＭＭ２０が物理ＣＰＵ１１を使用している状態に遷移する。【００９２】
Ｔ４には、ゲストＶＭＭ２０の第２レベルＶＭ２２１，２２２に対するＶＭＥＮＴＲＹが発生し、それを契機として、ホストＶＭＭ１０がエミュレーションしたＶＭＥＸＩＴが発生する。そのＶＭＥＸＩＴの発生を契機として、ゲストＶＭＭ２０が物理ＣＰＵ１１を使用している状態から、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態へ遷移する。【００９３】
Ｔ５には、ホストＶＭ１０の第２レベルＶＭ２２１，２２２に対するＶＭＥＮＴＲＹが発生し、それを契機として、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態から、第２レベルＶＭ２２１，２２２が物理ＣＰＵ１１を使用している状態へと遷移する。【００９４】
Ｔ６には、第２レベルＶＭ２２１，２２２のホストＶＭ１０に対するＶＭＥＸＩＴが発生し、それを契機として、第２レベルＶＭ２２１，２２２が物理ＣＰＵ１１を使用している状態から、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している状態へと遷移する。【００９５】
以上、図１１に示したように物理ＣＰＵ１１の使用状況が遷移する。このホストＶＭＭ１０へのＶＭＥＸＩＴを、あるいはホストＶＭＭ１０からのＶＭＥＮＴＲＹによる物理ＣＰＵ１１の使用状況の遷移を契機として性能情報テーブルが更新される。【００９６】
図１１では、時刻Ｔ２から時刻Ｔ３までの時間、および時刻Ｔ４から時刻Ｔ５までの時間が、ホストＶＭＭ１０が物理ＣＰＵ１１を使用している時間である。時刻Ｔ１から時刻Ｔ２までの時間が、第１レベルＶＭ２４，２６が物理ＣＰＵ１１を使用している時間である。時刻Ｔ３から時刻Ｔ４までの時間が、ゲストＶＭＭ２０が物理ＣＰＵ１１を使用している時間である。時刻Ｔ５から時刻Ｔ６までの時間が、第２レベルＶＭ２２１，２２２が物理ＣＰＵを使用している時間である。【００９７】
本実施例によれば、管理計算機３０１で稼動するサーバ管理ソフトウェア３０２は、ホストＶＭＭ１０から性能情報テーブル１５０の情報を採取し、性能情報３０３として記録する。この性能情報３０３から、第１レベルＶＭ２４，２６、第２レベルＶＭ２２１，２２２、ゲストＶＭＭ２０、ホストＶＭＭ１０の物理ＣＰＵ使用率を得ることができる。【００９８】
これらのホストＶＭＭ１０から採取した性能情報３０３を用いて、第１レベルＶＭ２４，２６および第２レベルＶＭ２２１，２２２の双方を含む物理ＣＰＵ１１の性能情報をグラフ化し、表示することにより、サーバ管理者は仮想計算機システムのホストＶＭＭ１０、第１レベルＶＭ２４，２６、ゲストＶＭＭ２０、第２レベルＶＭ２２１，２２２のそれぞれの物理ＣＰＵ使用率を視覚的に認識することができる。【００９９】
図１２は、物理ＣＰＵ１１の使用状況を示すグラフの一例である。図１２には、ホストＶＭＭ１０から採取した性能情報３０３を元に、ホストＶＭＭ１０、第１レベルＶＭ２４，２６による物理ＣＰＵ１１の使用時間の割合（物理ＣＰＵ使用率）が時系列に示されている。物理ＣＰＵ使用率は、性能情報３０３から得られるＶＭおよびＶＭＭの物理ＣＰＵ累積使用時間が、単位時間あたりの物理ＣＰＵ使用時間の全体のうち、どの程度を占有しているかを示す。【０１００】
グラフ１３０５は物理計算機に搭載している物理ＣＰＵ１１の使用率が１００％であることを示す。グラフ１３０１は、第１レベルＶＭ２６の物理ＣＰＵ使用率、グラフ１３０２は、第１レベルＶＭ２４の物理ＣＰＵ使用率、グラフ１３０３は第１レベルＶＭ２２の物理ＣＰＵ使用率、グラフ１３０４はホストＶＭＭ１０の物理ＣＰＵ使用率を示している。【０１０１】
図１３は、図１２にグラフ１３０３として示した第１レベルＶＭ２２の物理ＣＰＵ使用率の詳細を示した図である。図１４は、図１２に示した第１レベルＶＭの物理ＣＰＵ使用率と、図１３に第２レベルＶＭの物理ＣＰＵ使用率との関係を示す図である。【０１０２】
グラフ１４０１は、図１３では、第１レベルＶＭ２２が物理ＣＰＵ１１を使用している時間を１００％としていることを示している。第２レベルＶＭ２２１，２２２とゲストＶＭＭ２０の物理ＣＰＵ１１の使用時間を合計すると、第１レベルＶＭ２２の物理ＣＰＵ使用時間となる。【０１０３】
グラフ１４０２は、第２レベルＶＭ２２２の物理ＣＰＵ使用率を、グラフ１４０３は第２レベルＶＭ２２１の物理ＣＰＵ使用率を、グラフ１４０４はゲストＶＭＭ２０の物理ＣＰＵ使用率を示している。【０１０４】
以上のように、管理計算機３０１のサーバ管理ソフトウェア３０２がホストＶＭＭ１０から採取した性能情報３０３よって、図１２、図１３に示したようなグラフを生成し、表示することにより、サーバ管理者は、ホストＶＭＭ１０、第１レベルＶＭ２２，２４，２６、ゲストＶＭＭ２０、第２レベルＶＭ２２１，２２２のそれぞれの物理ＣＰＵ使用率を視覚的に把握することができる。【０１０５】
以上説明したように、第１レベルＶＭのＶＭＥＸＩＴあるいはＶＭＥＮＴＲＹの際には、ホストＶＭＭ１０が当該第１レベルＶＭの実行あるいは中断を直接管理するため、ホストＶＭＭ１０は第１レベルＶＭ識別子を特定することができる。それ故、ＶＭＥＸＩＴが発生した際に、当該第１レベルＶＭ識別子に基づいて、ＶＭＥＮＴＲＹからＶＭＥＸＩＴまでの時間を、図８に示した物理ＣＰＵ累積使用時間１２０３に累積することができる。【０１０６】
一方、第２レベルＶＭのＶＭＥＸＩＴあるいはＶＭＥＮＴＲＹの際には、ゲストＶＭＭ２０が当該第２レベルＶＭの実行あるいは中断を直接管理するため、ホストＶＭＭ１０は、ＶＭＣＳポインタ１７０を見ることで実行中の第２レベルＶＭのＶＭＣＳポインタの値を特定することはできても、その第２レベルＶＭ識別子を特定することはできない。そこで本実施例では、ＶＭＣＳポインタ１７０から得たＶＭＣＳポインタの値と、ＶＭ管理テーブル１４０とに基づいて、対応する第２レベルＶＭ識別子を特定し、当該第２レベルＶＭ識別子に基づいて、ＶＭＥＮＴＲＹからＶＭＥＸＩＴまでの時間を図８の物理ＣＰＵ累積使用時間１２０３に累積することを可能にしている。【０１０７】
つまり、本実施例によれば、管理計算機３０１からも識別可能な第２レベルＶＭ識別子を第２レベルＶＭ２２１、２２２上で稼動するＡｇｅｎｔ２３１、２３２からホストＶＭＭ１０に通知し、ホストＶＭＭ１０が、当該第２レベルＶＭ識別子に対応付けて、第２レベルＶＭ毎の物理ＣＰＵ１１の使用時間を管理できるゆえ、ホストＶＭＭ１０は、管理計算機３０１に対して、管理計算機３０１が認識できる第２レベルＶＭ識別子に対応付けて当該第２レベルＶＭの物理ＣＰＵ１１の使用時間を通知することができる。また、本実施例では、ゲストＶＭＭ２０の管理下にある複数の第２レベルＶＭ２２１、２２２のそれぞれについて物理ＣＰＵ１１の使用時間を管理することができる。
【実施例２】
【０１０８】
実施例２の計算機システムの基本的な構成は図１に示した実施例１のものと同様である。また、実施例２の計算機システムは基本的に実施例１のシステムが備えている全ての機能を備え、更に実施例２に特有の機能を備えている。そのため、実施例２では物理計算機３００および管理計算機３０１の動作が実施例１のものと一部異なっている。実施例２の説明では実施例１との共通部分に関しては、その説明を省略する。【０１０９】
実施例１では、ホストＶＭＭ１０、ゲストＶＭＭ２０、第１レベルＶＭ２２、２４、２６、および第２レベルＶＭ２２１、２２２について性能情報テーブル１５０に記載される性能情報（物理ＣＰＵ使用率）を測定し、その性能情報に基づく情報を表示する例を示した。実施例２では、更に、測定した性能情報テーブル１５０の性能情報に基づいて、第１レベルＶＭ２２、２４、２６および第２レベルＶＭ２２１、２２２に対する論理ＣＰＵあるいは仮想ＣＰＵの割り当てを変更する。【０１１０】
ホストＶＭＭ１０は、第１レベルＶＭ２２、２４、２６および第２レベルＶＭ２２１、２２２の負荷（実行時間）を管理し、第１レベルＶＭ２２、２４、２６および第２レベルＶＭ２２１、２２２の各々の実行時間に基づいて、第１レベルＶＭ２２、２４、２６または第２レベルＶＭ２２１、２２２への論理ＣＰＵまたは仮想ＣＰＵの割り当てを設定する。これによれば、ホストＶＭＭ１０が各ＶＭの実行時間に応じて論理ＣＰＵおよび仮想ＣＰＵの割り当てを適切に調整することができる。具体例として、ホストＶＭＭ１０は、一定時間毎に、第１レベルＶＭ２２、２４、２６および第２レベルＶＭ２２１、２２２の各々の実行時間の累積値を算出し、その累積値の各々を所定の閾値と比較し、比較結果に基づいて、第１レベルＶＭ２２、２４、２６または第２レベルＶＭ２２１、２２２への論理ＣＰＵまたは仮想ＣＰＵの割り当てを設定する。また一例として、ホストＶＭＭ１０は、物理計算機３００を管理する管理計算機３０１に、第１レベルＶＭ２２、２４，２６または第２レベルＶＭ２２１、２２２への論理ＣＰＵおよび仮想ＣＰＵの割り当てを設定することを要求し、管理計算機３０１が、それを設定することにする。【０１１１】
図１５は、実施例２においてホストＶＭＭ１０が第１レベルＶＭ２２、２４、２６または第２レベルＶＭ２２１、２２２への論理ＣＰＵまたは仮想ＣＰＵの割り当てを設定する処理を示すフローチャートである。図１６〜１８は、実施例２における性能情報テーブル１５０の例を示す表である。【０１１２】
図１６〜１８を参照すると、実施例２の性能情報テーブル１５０には、図８に示した実施例１における性能情報テーブル１５０と同様の第１レベルＶＭ識別子、第２レベルＶＭ識別子、物理ＣＰＵ累積使用時間、実行再開時刻に加え、閾値が格納されている。この閾値は、物理ＣＰＵ累積使用時間（以下単に「物理ＣＰＵ使用時間」ともいう）に対する閾値である。あるＶＭの物理ＣＰＵ累積使用時間が閾値を超えていたら、そのＶＭはＣＰＵの割り当てが不足していることを表す。【０１１３】
なお、閾値は、所定の時間間隔で計測される物理ＣＰＵ累積使用時間と比較し、ＣＰＵの割り当ての不足を判定するための閾値である。この閾値は仮想計算機全体に対して共通に設定しても、もしくは各ＶＭに対してそれぞれ設定しても良い。【０１１４】
図１５を参照すると、まずステップＳ２０４１にて、ホストＶＭＭ１０は、特定の第２レベルＶＭの物理ＣＰＵ使用時間が閾値を超えていることを発見すると、ステップＳ２０４２にて、当該第２レベルＶＭが稼働している第１レベルＶＭ内の他の第２レベルＶＭについて物理ＣＰＵ使用時間を調査する。また、ホストＶＭＭ１０は、当該第２レベルＶＭが稼働している第１レベルＶＭの物理ＣＰＵ使用時間が閾値を超えているか否か判定する。【０１１５】
その第１レベルＶＭの物理ＣＰＵ使用時間が閾値を超えていなければ、ステップＳ２０４８にて、ホストＶＭＭ１０は、管理計算機３０１のサーバ管理ソフトウェア３０２に第２レベルＶＭに割り当てる仮想ＣＰＵの数を変更することを要求する。具体的には、物理ＣＰＵ使用時間が閾値を超過した第２レベルＶＭに対する仮想ＣＰＵの割り当てを増加すればよい。【０１１６】
また、ステップＳ２０４３にて、その第１レベルＶＭの物理ＣＰＵ使用時間が閾値を超過していれば、ステップＳ２０４４にて、ホストＶＭＭ１０は、全ての第１レベルＶＭの物理ＣＰＵ使用時間を調査する。そして次に、ステップＳ２０４５にて、ホストＶＭＭ１０は、物理ＣＰＵ使用時間が閾値を超過していない第１レベルＶＭがあるか否か判定する。【０１１７】
物理ＣＰＵ使用時間が閾値を超過していない第１レベルＶＭがあれば、ステップＳ２０４７にて、ホストＶＭＭ１０は、第１レベルＶＭに割り当てる論理ＣＰＵ数を変更する、あるいは管理計算機３０１のサーバ管理ソフトウェア３０２にその変更を要求する。具体的には、物理ＣＰＵ使用時間が閾値を超過していない第１レベルＶＭから、物理ＣＰＵ使用時間が閾値を超過した第１レベルＶＭへ論理ＣＰＵの割り当てを移動させる。一方、物理ＣＰＵ使用時間が閾値を超過していない第１レベルＶＭがない場合、ホストＶＭＭ１０は、ステップＳ２０４６にて、物理計算機３００に搭載される物理ＣＰＵの個数を増加することを要求する旨を管理計算機３０１のサーバ管理ソフトウェア３０２に通知する。【０１１８】
以上のように、実施例２では、ホストＶＭＭ１０は、割り当てられた物理ＣＰＵの負荷が高くなっているＶＭから、負荷が低いＶＭへと、論理ＣＰＵあるいは仮想ＣＰＵ変更する、もしくは管理計算機３０１のサーバ管理ソフトウェア３０２に対して変更を要求する。負荷が高くなっているＶＭに割り当てる仮想ＣＰＵあるいは論理ＣＰＵを増やすことによって、そのＶＭが使用できる物理ＣＰＵが増える。例えば、割り当てる物理ＣＰＵ数を増やす前は、１つの論理ＣＰＵあるいは仮想ＣＰＵが行っていた処理を、２つの論理ＣＰＵあるいは仮想ＣＰＵで行えばよいので負荷が軽減される。【０１１９】
以下、いくつかの動作例について説明する。【０１２０】
図１６は、実施例２における性能情報テーブル１５０の第１例を示す図である。実施例２では、性能情報テーブル１５０の各行に、その物理ＣＰＵ累積使用時間１５０３についての閾値１５０５が設定されている。【０１２１】
性能情報テーブル１５０が図１６に示す状態にある場合のホストＶＭＭ１０の動作について説明する。【０１２２】
ステップＳ２０４１にて、図１６に示されている行１５０６の第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）の物理ＣＰＵ累積使用時間１５０３が６００秒であり、閾値１５０５の５００秒を超過していることが検出されたとする。【０１２３】
このとき、ホストＶＭＭ１０は、ステップＳ２０４２で、図１６の行１５０９に示されている第１レベルＶＭ（第１レベルＶＭ識別子＝０）上で稼動する各第２レベルＶＭ（第２レベルＶＭ識別子＝１、２）の物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超過しているか否か調査する。調査対象は、行１５０７の第２レベルＶＭ（第２レベルＶＭ識別子＝１）と、行１５０８の第２レベルＶＭ（第２レベルＶＭ識別子＝２）である。【０１２４】
続いてステップＳ２０４３にて、ホストＶＭＭ１０は、ステップＳ２０４１で物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超過していた第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）が稼働している第１レベルＶＭ（第１レベルＶＭ識別子＝０）の物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超過しているか否か判定する。ここでは、当該第１レベルＶＭ（第１レベルＶＭ識別子＝０）上で稼働している第２レベルＶＭおよびゲストＶＭＭのなかに、物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超過していないものがあるか否かで判定する。図１６の例では、当該第１レベルＶＭ（第１レベルＶＭ識別子＝０）上で稼動する第２レベルＶＭ(第２レベルＶＭ識別子＝０、１、２)およびゲストＶＭＭ(第２レベルＶＭ識別子＝-)のなかに物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超過していないものがあるか否か調べると、ひとつの第２レベルＶＭ（第２レベルＶＭ識別子＝１）とゲストＶＭＭ（第２レベルＶＭ識別子＝−）のＣＰＵ累積使用時間１５０３が閾値１５０５を超えていない。【０１２５】
そこで、ホストＶＭＭ１０は、ステップＳ２０４８に進み、管理計算機３０１のサーバ管理ソフトウェア３０２に、仮想ＣＰＵの割り当ての変更を要求する。具体的には、物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超えていない図１６の行１５０７の第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝２）への仮想ＣＰＵの割り当てを削減し、その分を、物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超えている図１６の行１５０６の第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）に割り当てるよう要求すればよい。【０１２６】
図１７は、実施例２における性能情報テーブル１５０の第２例を示す図である。【０１２７】
ここでは、図１６の例と同様に、ステップＳ２０４１にて、行１５０６の第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）の物理ＣＰＵ累積使用時間１５１５が６００秒であり、閾値１５１７の５００秒を超過していることが検出されたとする。しかし、第２例では、図１７に示したように、ステップＳ２０４３にて、当該第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）が稼働する第１レベルＶＭ（第１レベルＶＭ識別子＝０）上で稼動する第２レベルＶＭ(第２レベルＶＭ識別子＝０、１、２)およびゲストＶＭＭ(第２レベルＶＭ識別子＝-)の全てにおいて物理ＣＰＵ累積使用時間が閾値を超えている。そのため、ステップＳ２０４４を経てステップＳ２０４５に進む。【０１２８】
ステップＳ２０４５では、ホストＶＭＭ１０は、物理ＣＰＵ累積使用時間が閾値を超えていない第１レベルＶＭがあるか否か判定する。このステップＳ２０４５にて、本第２例では、ホストＶＭＭ１０は、図１７の行１５２２の第１レベルＶＭ（第１レベルＶＭ識別子＝１）の物理ＣＰＵ累積使用時間１５１５が閾値１５１７を超過していない。そこで、ホストＶＭＭ１０は、ステップＳ２０４７に進み、行１５２２に示す第１レベルＶＭ（第１レベルＶＭ識別子＝１）から、物理ＣＰＵ累積使用時間が閾値を超えている第１レベルＶＭ（第１レベルＶＭ識別子＝０）に、論理ＣＰＵの割り当てを変更する。あるいは、ホストＶＭＭ１０から管理計算機３０１のサーバ管理ソフトウェア３０２に、当該論理ＣＰＵの割り当ての変更を要求する。【０１２９】
図１８は、実施例２における性能情報テーブル１５０の第３例を示す図である。【０１３０】
ここでは、図１６の例と同様に、ステップＳ２０４１にて、行１５０６の第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）の物理ＣＰＵ累積使用時間１５０３が６００秒であり、閾値１５０５の５００秒を超過していることが検出されたとする。また、図１８に示すように、図１７の第２例と同様、ステップＳ２０４３にて、当該第２レベルＶＭ（第１レベルＶＭ識別子＝０、第２レベルＶＭ識別子＝０）が稼働する第１レベルＶＭ（第１レベルＶＭ識別子＝０）上で稼動する第２レベルＶＭ(第２レベルＶＭ識別子＝０、１、２)およびゲストＶＭＭ(第２レベルＶＭ識別子＝-)の全てにおいて物理ＣＰＵ累積使用時間１５０３が閾値１５０５を超えている。そのため、ステップＳ２０４４を経てステップＳ２０４５に進む。【０１３１】
しかし、第３例では、図１８に示すように、ステップＳ２０４５にて、全ての第１レベルＶＭの物理ＣＰＵ累積使用時間１５２７が閾値１５２９を超過している。【０１３２】
そこで、ホストＶＭＭ１０は、ステップＳ２０４６に進み、物理計算機３００に搭載される物理ＣＰＵの個数を増加することを要求する旨を管理計算機３０１のサーバ管理ソフトウェア３０２に通知する。管理計算機３０１は、物理計算機３００の物理ＣＰＵの増設の要求を表示する。サーバ管理者は管理計算機３０１の表示をみて物理ＣＰＵを増設する。【０１３３】
その後、ステップＳ２０４７にて、ホストＶＭＭ１０は各第１レベルＶＭに割り当てる各論理ＣＰＵ数を変更する、もしくはホストＶＭＭ１０からサーバ管理ソフトウェア３０２に各第１レベルＶＭに割り当てる論理ＣＰＵ数の変更を要求する。さらにステップＳ２０４８にて、ホストＶＭＭ１０は、サーバ管理ソフトウェア３０２に各第２レベルＶＭに割り当てる仮想ＣＰＵ数の変更を要求する。【０１３４】
上述した本発明の実施例は、本発明の説明のための例示であり、本発明の範囲をそれらの実施例にのみ限定する趣旨ではない。当業者は、本発明の要旨を逸脱することなしに、他の様々な態様で本発明を実施することができる。
【符号の説明】
【０１３５】
１…物理ＣＰＵ、１０…ホストＶＭＭ、１１…物理ＣＰＵ、１１０１…第１レベルＶＭ識別子、１１０２…第２レベルＶＭ識別子、１１０３…ＶＭＣＳポインタ、１１１…シャドウＶＭＣＳ、１１１１…第１レベルＶＭ識別子、１１１２…第２レベルＶＭ識別子、１１１３…ＶＭＣＳポインタ、１１２…シャドウＶＭＣＳ、１１３…ホストＶＭＣＳ、１２０…ＣＰＵＩＤエミュレータ、１２０１…第１レベルＶＭ識別子、１２０２…第２レベルＶＭ識別子、１２０３…物理ＣＰＵ累積使用時間、１２０４…実行再開時刻、１３０…スケジューラ、１３１…ＶＭＰＴＲＬＤ命令、１４０…ＶＭ管理テーブル、１５０…性能情報テーブル、１５０３…物理ＣＰＵ累積使用時間、１５０５…閾値、１５１５…物理ＣＰＵ累積使用時間、１５１７…閾値、１５２７…物理ＣＰＵ累積使用時間、１５２９…閾値、１６０…レジスタ、１７０…ＶＭＣＳポインタ、２０…ゲストＶＭＭ、２０１…ゲストＶＭＣＳ、２０２…ゲストＶＭＣＳ、２１…論理ＣＰＵ、２１２…ＶＭＣＳポインタ、２２…第１レベルＶＭ、２２１…第２レベルＶＭ、２２２…第２レベルＶＭ、２３１…Ａｇｅｎｔ、２４…第１レベルＶＭ、２４１…ＭＯＶ命令、２５１…ＣＰＵＩＤ命令、２６…第１レベルＶＭ、２６１…ゲストＯＳ、２６３…ゲストＯＳ、２７１…仮想ＣＰＵ、２７２…仮想ＣＰＵ、２８１…スケジューラ、２９１…ＶＭＰＴＲＬＤ命令、３００…物理計算機、３０１…管理計算機、３０２…サーバ管理ソフトウェア、３０３…性能情報、３１１…第２レベルＶＭ識別子、７０…ＶＭＣＳポインタ
【図１】
2015083282.tif 000003
【図２】
2015083282.tif 000004
【図３】
2015083282.tif 000005
【図４】
2015083282.tif 000006
【図５】
2015083282.tif 000007
【図６】
2015083282.tif 000008
【図７】
2015083282.tif 000009
【図８】
2015083282.tif 000010
【図９】
2015083282.tif 000011
【図１０】
2015083282.tif 000012
【図１１】
2015083282.tif 000013
【図１２】
2015083282.tif 000014
【図１３】
2015083282.tif 000015
【図１４】
2015083282.tif 000016
【図１５】
2015083282.tif 000017
【図１６】
2015083282.tif 000018
【図１７】
2015083282.tif 000019
【図１８】
2015083282.tif 000020
【国際調査報告】
2015083282.tif 000021
2015083282.tif 000022
2015083282.tif 000023