(57)【特許請求の範囲】
【請求項１】
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムであって、
前記ハイパーバイザは、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求める手段と、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなす手段と、
を含むことを特徴とする仮想計算機システム。
【請求項２】
前記遅延時間の総和を求める手段は、
前記アフィニティ情報を取得する手段と、前記通信量を取得する手段と、前記アフィニティ情報と前記通信量との積により前記遅延時間の総和を算出する手段とを有することを特徴とする請求項１記載の仮想計算機システム。
【請求項３】
前記アフィニティ情報を取得する手段は、
前記物理リソースに対して、前記アフィニティ情報のポーリングを行って、その情報内容に変更があった場合に、前記アフィニティ情報の更新をなすようにしたことを特徴とする請求項２記載の仮想計算機システム。
【請求項４】
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムにおける物理リソース再構成方法であって、
前記ハイパーバイザにおいて、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求めるステップと、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなすステップと、
を含むことを特徴とする物理リソース再構成方法。
【請求項５】
前記遅延時間の総和を求めるステップは、
前記アフィニティ情報を取得するステップと、前記通信量を取得するステップと、前記アフィニティ情報と前記通信量との積により前記遅延時間の総和を算出するステップとを有することを特徴とする請求項４記載の物理リソース再構成方法。
【請求項６】
前記アフィニティ情報を取得するステップは、
前記物理リソースに対して、前記アフィニティ情報のポーリングを行って、その情報内容に変更があった場合に、前記アフィニティ情報の更新をなすようにしたことを特徴とする請求項５記載の物理リソース再構成方法。
【請求項７】
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムにおける物理リソース再構成方法をコンピュータに実行させるためのプログラムであって、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求める処理と、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなす処理と、
を含むことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は仮想計算機システム及びその物理リソース再構成方法並びにプログラムに関し、特にノード内とノード間とにおいてメモリアクセス時間が相違し複数のノード上でプロセスを実行する仮想プロセッサをハイパーバイザが制御する仮想計算機システム及びその物理リソース再構成方法に関するものである。
【背景技術】
【０００２】
ＮＵＭＡ（Non Uniform Memory Access ：非均一メモリアクセス）型マルチプロセッサシステム（特許文献１参照）は、アクセスするメモリの領域によってプロセッサ−メモリ間のレイテンシや帯域幅が異なるという特徴を持つ共有メモリ型マルチプロセッサシステムの一種である。一般的なＮＵＭＡアーキテクチャの実装には、例えば、複数のＵＭＡ（Uniform Memory Access ：均一メモリアクセス）構成のグループ（以下、ノードと呼ぶ）間を全結合した形（図２参照）や、ノード間をポイントトゥーポイント接続した形などがある。
【０００３】
いずれも、ローカルメモリ（プロセッサが属するノードのメモリ）へのアクセスと、リモートメモリ（外のノードのメモリ）へのアクセスとの速度には差がある（このアクセス速度の差のことを、以下では「ノード間の距離」または「ノード間のアフィニティ（Affinity：親和性）」と表現する）。
【０００４】
この特性のために、ＮＵＭＡアーキテクチャのシステムで良い性能を得るには、メモリアクセスをできるだけ局所化することが有効である。そのため、ＯＳではＳＬＩＴ（System Locality Information Table)やＳＲＡＴ（Static Resource Affinity Table）などと呼ばれる物理リソース間（ＣＰＵ／メモリ／ＩＯ）のアフィニティを記憶した表（以下、アフィニティテーブルと呼ぶ）を用いて、ノード間を極力またがないようなメモリ領域の割り当てを行うメモリ管理方法や、プロセスやスレッドが動作するプロセッサをできるだけ移動させないスケジューラなどの仕組みが実現されている。
【０００５】
この仕組みはあくまでＯＳの起動時にアフィニティ情報を読み込んで利用するという静的な運用ができるだけであって、動的にアフィニティテーブルを更新してシステムの動的な変更に対応する技術はまだ存在しない。
【０００６】
一方、仮想計算機システムには、リソースを有効に活用するために仮想マシンの負荷の変動に対応してシステムを停止することなく、ゲストＯＳのＨｏｔｐｌｕｇ機能を利用して動的にリソースの割り当て配分を変えるという仕組みを備えたものが存在する。しかしながら、このような技術においてＮＵＭＡアーキテクチャ特有のアフィニティ情報を考慮に入れてリソースの配置を最適化することにより性能を引き出せるような構成にする技術はまだ存在しない。
【０００７】
なお、関連する技術として特許文献２，３がある。
【特許文献１】特公表２００４−５３０１９６号公報
【特許文献２】特開２００２−２０２９５９号公報
【特許文献３】特開２００３−１５７１７７号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
従来の仮想計算機システムでは、仮想リソースに対して物理リソースの割り当てを行う際にアフィニティを考慮に入れていない。そのために、リソースがＮＵＭＡ型システムの性能を引き出せない構成で割り当てられる可能性がある。また、リソースがリモートノードへのメモリアクセスが頻発してしまうような割り当てがなされている場合、リソースの割り当てを見直して、できるだけローカルノードへのアクセスで済むように再構成しなおす仕組みが考えられる。
【０００９】
しかし、従来は、仮想マシンにおけるメモリアクセスの性能またはその指標となる量（以下、メモリアクセスの性能と表現する）を定量的に計る方法がないために、どの仮想マシンを再構成したら効率がよいのかを正確に判断することができない。
【００１０】
また、再構成する仮想マシンを決定したとしても、それに割り当てるための効率の良い構成を決定することが困難である。なぜならば、仮想マシンに割り当てる物理リソースの構成が変更された場合に、どの程度メモリアクセスの性能が改善されるかを予測する方法がないためである。
【００１１】
更にはまた、従来のＯＳには、アフィニティテーブルの動的な変化に対応する仕組みが存在しないために、ハイパーバイザが仮想マシンに対して動的に構成変更を行っても、ＯＳを再起動しない限り、そのＯＳはそのリソースを効率的に使用することができない。
【００１２】
本発明の目的は、どの仮想マシンを優先的に再構成すべきか判断できるようにした仮想計算機システム及びその物理リソース再構成方法並びにプログラムを提供することである。
【００１３】
本発明の他の目的は、現在の構成と比較して、よりメモリアクセスの遅延総和が少なくなる構成を探すことが可能な仮想計算機システム及びその物理リソース再構成方法並びにプログラムを提供することである。
【００１４】
本発明の更に他の目的は、物理リソースの動的な再構成を行った際に、ＯＳの動作を停止させることなく、ＯＳがリソースの効率的な利用を行うことが可能な仮想計算機システム及びその物理リソース再構成方法並びにプログラムを提供することである。
【課題を解決するための手段】
【００１５】
本発明による仮想計算機システムは、
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムであって、
前記ハイパーバイザは、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求める手段と、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなす手段と、
を含むことを特徴とする。
【００１６】
本発明による物理リソース再構成方法は、
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムにおける物理リソース再構成方法であって、
前記ハイパーバイザにおいて、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求めるステップと、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなすステップと、
を含むことを特徴とする。
【００１７】
本発明によるプログラムは、
ハイパーバイザが複数の物理リソースを複数の仮想マシンに動的に割り当て制御する仮想計算機システムにおける物理リソース再構成方法をコンピュータに実行させるためのプログラムであって、
前記物理リソースを構成する複数のノード間の通信のレイテンシや帯域を示すアフィニティ情報と前記ノード間の通信量とに基づいて、前記仮想マシン上のメモリアクセスの遅延時間の総和を求める処理と、
前記遅延時間の総和が閾値を超えた仮想マシンに対して当該閾値を超えない物理リソースの割り当てをなす処理と、
を含むことを特徴とする。
【００１８】
本発明の作用を述べる。本発明による仮想計算機システムでは、メモリアクセスの遅延総和をメモリアクセスの性能の指標値として用いる。この仮想マシン上のメモリアクセスの遅延総和を求めるために、以下に列挙される手段を有する。
【００１９】
（１）プロセッサ間通信のアフィニティ情報を取得する手段。ここで、アフィニティ情報とは、主な意図としては、ノード間メモリアクセスのレイテンシのことであるが、ノード間の帯域情報を含む場合も考えられる。
【００２０】
（２）任意の仮想マシン内の任意の二つの仮想プロセッサ間のメモリトランザクション量を推定する手段。ここで、メモリトランザクション量とは、これとアフィニティ情報とを合わせると、メモリアクセスの遅延総和を導くことができる指標のことである。例えば、ノード間メモリアクセスのレイテンシ（アフィニティ情報）とメモリへのアクセス回数（メモリトランザクション量）とが分かれば、その積はレイテンシによるメモリアクセスの遅延時間の総和となる。また、ノード間の帯域（アフィニティ情報）とメモリへのアクセス量（メモリトランザクション量）とにより、帯域幅を指標としたメモリアクセスの遅延時間の総和が分かる。
【００２１】
（３）任意の仮想マシンについて、アフィニティ情報とその仮想マシン内の任意の二つの仮想プロセッサ間のトランザクション量の推定値とに基づいて、その仮想マシンの仮想リソースに対する物理リソースの割り当てを任意に変えた構成でメモリアクセスの遅延総和を推定する手段。ここで、「任意に変えた構成」として現在のリソース割り当て構成を用いれば、仮想マシンの現在の構成におけるメモリアクセスの遅延総和も推定できる。
【００２２】
また、本発明の仮想計算機システムは、上記で求められたメモリアクセスの遅延総和を用いて、構成の動的最適化を行うために、以下に列挙される手段を有する。
【００２３】
（４）物理リソースの再構成を行うかどうかを判断する手段。ここで、再構成を行う判断基準としては、（ａ）ユーザが直接再構成指示を出したら再構成を行う、（ｂ）定期的に必ず再構成を行う、（ｃ）仮想マシンにメモリアクセスの遅延総和の許容閾値を設け、仮想マシンのメモリアクセスの遅延総和が閾値を超過したら再構成を行う、（ｄ）現在の構成における全ての仮想マシンのメモリアクセスの遅延総和が規定値を上回ったら再構成を行う、などが考えられる。どのような判断基準をもって再構成を行うか判断するかは、予めユーザがポリシーとして設定できるようにする。また、（ｃ）や（ｄ）のようなメモリアクセスの遅延総和の測定に基づいて再構成判断を行う場合、単発の測定の結果で再構成判断が行われると頻繁に再構成が行われてパフォーマンスが落ちることが予想される。そのため、十分なインターバルを置いて複数回測定を行い、それらを総合した情報で再構成判断を行うという手段も考えられる。
【００２４】
（５）新しい構成を決定する手段。新しい構成としては、（ａ）（４）で述べた最適な割り当てを行う、（ｂ）メモリアクセスの遅延総和が閾値を超えた仮想マシンについてのみ性能ロスを閾値以下に抑えるような割り当てを行う、（ｃ）プライオリティの高い仮想マシンに対して優先的に距離の近いプロセッサやメモリを割り当てる、などが考えられる。この決定ポリシーに関しても、予めユーザが設定できるようにする。
【００２５】
（６）決定した構成に基づいてリソースの再配置を行う手段。
（７）ＯＳを再起動することなしに、動的にアフィニティ情報を更新できるようにするＯＳ上の手段、または、ＯＳ上のタスクを一旦停止してＯＳを終了し、アフィニティ情報を変更してからＯＳを起動して再びタスクを動作させるという、従来技術の範囲内で実現可能な手段。
【発明の効果】
【００２６】
本発明によれば、以下のような効果を奏する。第１の効果は、仮想マシン内のトランザクション量を推定することによって、現在の構成におけるメモリアクセスの遅延総和を推定することができ、どの仮想マシンでメモリアクセスによる遅延が多く発生しているかを判別することができるようになることである。これによって、どの仮想マシンを優先的に再構成すべきか判断できるようになる。
【００２７】
第２の効果は、現在の仮想マシンの構成に対する任意の物理リソースの割り当てについてメモリアクセスの遅延総和を推定できるために、現在の構成と別の構成を定量的に比較できるようなることである。これによって、現在の構成と比較して、よりメモリアクセスの遅延総和が少なくなる構成を探すことができるようになる。また、メモリアクセスの遅延総和が最小となる最適な構成を探すことも可能となる。
【００２８】
第３の効果は、仮想マシン上のＯＳが動的に仮想アフィニティ情報を更新することができるようにすることにより、動的な再構成を行った際に、ＯＳの動作を停止することなく、ＯＳがリソースの効率的な利用を行うことができるようになることである。
【００２９】
以上により、ある優先度の高い仮想マシンについて部分最適化を行うことで、その仮想マシンでは常に最高の性能を出せるようにする制御や、定期的にシステム全体について最適化を行うことで、負荷の時間的、空間的変動に対応できるようにする制御、などを行うことができることになる。
【発明を実施するための最良の形態】
【００３０】
以下に、図面を参照しつつ本発明の実施の形態について詳細に説明する。図１は本発明の実施の形態の機能ブロック図である。図１を参照すると、本発明によるハイパーバイザ１００は、プロセッサやメモリ等の物理リソース１０６のシステムからアフィニティ情報を取得するアフィニティ情報取得部１０１と、各仮想マシン１１１，……，１１ｎにおいて任意の仮想プロセッサ間の通信量を推定するプロセッサ間通信量推定機構１３１，……，１３ｎと、各仮想マシン１１１，……，１１ｎのプロセッサ間通信の推定量及びアフィニティ情報とから、各仮想マシンにおける任意の物理リソース割り当てに対してメモリアクセスの遅延総和を推定するメモリアクセス遅延推定機構１０２と、メモリアクセスの遅延総和の推定値により再構成を行うか否かを判断する再構成判断部１０３と、仮想マシンへの物理リソース１０６の割り当てを決定する構成決定部１０４と、実際に構成の変更を行う構成変更実行部１０５とを有する。
【００３１】
なお、各仮想マシン１１１，……，１１ｎに対しては再構成を判断するための閾値を設定することができる。また１２１，……，１２ｎは、各仮想マシン１１１，……，１１ｎに対して割り当てられた仮想リソースを示す。
【００３２】
本実施の形態で想定するシステムは、図２に示されるような全結合型ＮＵＭＡシステムであり、ノード１（２０１）〜ノードｎ（２ｎ１）間の帯域に差はないものとする。各ノードは、物理プロセッサと、物理メモリと、ノースブリッジとを有しているものとする。
【００３３】
アフィニティ情報としては、メモリアクセスレイテンシのみが用いられる。この場合のアフィニティテーブルは、例えば図３のようになる。このテーブルは、４ノードで構成されるＮＵＭＡシステムの各ノード間レイテンシテーブルを示している。
【００３４】
次に、図２を用いてプロセッサ間通信量推定部の詳細な説明を行う。プロセッサ間通信量は、仮想マシン上で行われる全てのプロセス間通信で送信されるデータ量の総和の測定値と、仮想プロセッサ数から推定することができる。本例におけるプロセッサ間通信量の推定は、次に列挙する仮定の下で行われる。
【００３５】
（１）仮想マシン内のプロセッサ間通信はほぼ全てプロセス間通信で占められる。
【００３６】
（２）プロセスを実行するプロセッサは、全てのプロセッサの中から等確率で選択される。
【００３７】
（３）仮想マシン上では適当な頻度でプロセスが生成される。ここでいう適当な頻度とは、プロセス間通信で送られるデータ量を測定する間、統計量として十分な数のプロセスが生成されるということを意味する。また、プロセスが生成されるタイミングはランダムである。                                        
【００３８】
（４）仮想マシンで動作する主なプロセスは全て適当な寿命を持つ。ここでいう適当な寿命とは、プロセス間通信で送られるデータ量を測定する時間よりも十分に短い時間という意味である。
【００３９】
（５）各仮想マシン上のＯＳには、割り当てられた物理リソースのアフィニティを反映したアフィニティテーブルが渡されており、ＯＳはプロセスに対してメモリを確保する際、できるだけプロセスが割り当てられたプロセッサにとってローカルメモリとなる領域からメモリを確保する。
【００４０】
まず、（２）と（３）と（４）の仮定によって、プロセス間通信を測定している間十分な数のプロセスが生成され、それらは全ての仮想プロセッサに同じ確率で割り当てられて実行された後、終了する。そのため、全ての２つのプロセッサの組についてプロセス間通信が行われる頻度は同程度となる。よって、仮想マシン上で行われる全てのプロセス間通信量を任意の２つのプロセッサの組み合わせ数（n  Ｃ2  ＋ｎ）で割ると、一組のプロセッサ間で通信されるデータ量（自プロセッサへの通信も含む）を求めることができる。
【００４１】
また、一組のプロセッサ間で通信されるデータ量に自プロセッサ間の組み合わせを除く任意の２つのプロセッサの組み合わせ数（n  Ｃ2  ）をかけることで、異なる仮想プロセッサ間の通信量の総和を求めることができる。
【００４２】
次に、（５）の仮定により、仮想プロセッサ間の通信においては、送信されたデータは必ず送信先の仮想プロセッサに割り当てられたメモリへのリモートアクセスで書き込まれることが保障される。これにより、仮想プロセッサ間の送信データ量とリモートアクセスの送信データ量が一致する。
【００４３】
最後に、（１）の仮定により、プロセス間通信によるリモートメモリへの送信データ量の総量は、プロセッサ間通信によるリモートメモリへの送信データ量の総量とほぼ一致する。これらにより、仮想マシン上で行われる全てのプロセス間通信の送信データ量の総和と仮想プロセッサ数が得られれば、仮想マシン上の仮想プロセッサ間の送信データ量を推定することができる。
【００４４】
また、任意の２つのプロセッサ間のデータ送信量から、物理リソースにおけるメモリトランザクション回数を推定することが可能である。一般のコンピュータシステムでは、効率的にメモリアクセスを行うために、メモリアクセスはある程度の量の固まりを単位として行われる。この通信量の単位が分かれば、データ通信量をこの単位で割ることでメモリトランザクション回数を推定できる。このメモリアクセスの固まりの単位はアーキテクチャ依存であるため、本例のハイパーバイザはこの値を予め知っているか、あるいはこの値をハードウェアから取得するものとする。
【００４５】
さらに、任意の２つの仮想プロセッサ間のメモリトランザクション回数と、仮想リソースに対する物理リソースの対応情報、ノード間のレイテンシ情報によって、その仮想マシン内のメモリアクセスの遅延総和を求めることが可能である。ある一組のプロセッサの番号をｉ，ｊとし、プロセッサｉとプロセッサｊとの間のメモリトランザクション回数をｋij、プロセッサｉとプロセッサｊの間のメモリアクセスレイテンシをｄijとすると、プロセッサｉとプロセッサｊの間のメモリアクセスの遅延は、その積ｋij・ｄijで求めることができる。
【００４６】
よって、仮想マシン内の全てのプロセッサの組み合わせによるメモリアクセスの遅延総和は、ＳＵＭ{i,j}  （ｋij・ｄij）で求められる。なお、ＳＵＭ{i,j}  （）は｛ｉ，ｊ｝の全ての組み合わせについての総和をとる関数であるものとする。
【００４７】
次に、図４を用いて仮想マシン３０１上で行われる全てのプロセス間通信の送信データ量の総和を求める機構である送信データ量測定機構（図１のプロセッサ間通信量推定機構に相当）について説明する。送信データ量測定機構は、ＯＳ上にプロセス（３０３，３０４）間通信ＡＰＩ３０９をフックしてハイパーバイザ３００に割り込みを上げるためのフック機構３０５を有する。
【００４８】
ハイパーバイザ３００は、割り込み３１０を受けて処理を行う割り込み処理部３０７と、フック機構３０５が一回のＡＰＩ呼び出しで送信されるデータ量を書き込む（３１１）ための領域である転送量通知領域３０６を持つ。さらに、プロセス間通信のデータ送信量の総和を求めるためのプロセス間通信量カウンタ３０８を持つ。ＡＰＩのフックはシステム性能を低下させる可能性があるため、この機能はハイパーバイザ３００側から動作／停止を制御できるようにする。
【００４９】
以上の仕組みによって求められたメモリアクセスの遅延総和の情報は、再構成判断部１０３、構成決定部１０４から任意に参照することができる。さらに、再構成判断部１０３、構成決定部１０４は仮想マシン１１１〜１１ｎに対する任意の物理リソース１０６の割り当て構成を入力して、任意の構成についてのメモリアクセスの遅延総和を得ることができる。
【００５０】
また、本例のＯＳは動作を停止することなしにアフィニティ情報を変更できる機能を持つ。図９は、ＯＳ９００の動作を停止することなしにアフィニティ情報を変更するための構成図を表す。ＯＳ９００のアフィニティ情報取得部９０１は、システム９０４のアフィニティ情報をポーリングし、その内容に変更があった場合に、ＯＳ上のスケジューラ９０２やメモリ管理機構９０３に通知する。また、ハイパーバイザがＯＳ９００に対して割り込みを上げ、アフィニティ情報更新を通知することもできる。プロセススケジューラ９０２やメモリ管理機構９０３は、その内容を受けてから適当なタイミングから割り当てポリシーを変更して割り当てを行う。
【００５１】
次に、本実施の形態の動作の流れについて、図５のフローチャートを用いて説明する。本例のメモリアクセス遅延推定機構１０２は、ある程度（数十分程度）のインターバルをおいて（５００）、全ての仮想マシンについてメモリアクセスの遅延総和を測定する（５０１）。また、同時に、各仮想マシンについて、現在の仮想リソースの構成に対する最適な物理リソースの割り当てを探し（５０２）、最適な構成に対する現在の構成のメモリアクセスの遅延総和の超過量を求める。
【００５２】
再構成判断部１０３は、求めた増分に対して複数回の測定で得られたデータを平均し（５０３）、その増分が各仮想マシンに対して設定された閾値を一つでも超えた場合に（５０４）、再構成指示を出す（５０５）。構成決定部１０４は、閾値を超えた仮想マシンに対して、閾値を越えない物理リソースの割り当てを求める（図６の６０１）。その際、他の仮想マシンとリソースをスワップさせることになるが、その結果他の仮想マシンについてメモリアクセスの遅延総和が閾値を越えることのないようにする。
【００５３】
この構成決定は、原理的には、仮想リソースと物理リソースの全組み合わせについて、メモリアクセスの遅延総和を求めて、その中から適切なものを選ぶことで実現できる。もしそのような組み合わせが存在しない場合は再構成を行わないことにする（６０４）。組み合わせの探索方法によっては、この処理にかかる時間を短縮することができるが、それらは公知の技術なのでここでは詳細な探索方法については言及しない。
【００５４】
構成変更実行部１０５は、仮想マシンに対する物理リソースの割り当てが求められた構成となるように構成を変更する。その変更方法は既知の技術であるため、ここでは詳述しない。概略を説明すると、各仮想マシン上のＯＳをストップ状態にし、リソースの割り当てを変更した後、ＯＳを再稼動させる。その後、仮想マシン上のＣＰＵ数やメモリ量に変更があれば、ＯＳに対して適切な割り込みを上げ、構成が変更されたことを通知する。本例では、構成変更によってＣＰＵ数やメモリ量が変化することはない。しかし、構成の変更によって仮想マシン上のアフィニティ情報には変更が生じる。そのため、ハイパーバイザ３００はＯＳ３０２に対してそのことを通知する。
【００５５】
次に、メモリアクセス遅延推定機構１０２とアフィニティ情報取得部１０１との動作について詳細に説明する。メモリアクセスの遅延総和の推定はプロセッサ間通信データ送信量の推定値を用いて行われる。メモリアクセス遅延推定機構１０２は、各仮想マシンに割り当てられているプロセッサ間通信量推定機構１３１〜１３ｎからプロセッサ間通信のデータ送信量を受け取り、仮想マシンに対する物理リソースの割り当てとアフィニティ情報とを合わせて、各仮想マシンにおけるメモリアクセスの遅延総和を求めることができる。これにより、任意の仮想マシンに対する物理リソースの割り当てについて、メモリアクセスの遅延総和を求めることができる。また、仮想マシンに対する物理リソースの割り当てとして現在の構成を用いると、現在の構成におけるメモリアクセスの遅延総和も推定できる。
【００５６】
アフィニティ情報取得部１０１は、ハイパーバイザの起動時にシステム（ＢＩＯＳなど）からアフィニティ情報を取得して保持しており、メモリアクセス遅延推定機構１０２は必要に応じてその情報を参照することができる。
【００５７】
次に、プロセッサ間通信データの送信量の推定値を求める方法について説明する。仮想マシン上の仮想プロセッサ間通信データの送信量は、上述したように、プロセス間通信のデータ送信量を測定することで推定することができるために、ここでは、主にプロセス間通信のデータ送信量の測定方法について述べる。
【００５８】
まず、図７はプロセス間通信測定におけるハイパーバイザ３００側の動作を表している。測定が開始されると、まずプロセス間通信量カウンタ３０８がリセットされる（７０１）。次に、ＯＳ上のフック機構３０５の動作を開始し（７０２）、ＯＳ上でプロセス間通信ＡＰＩが呼ばれるたびにハイパーバイザ３００に割り込みが上がるようにする。割り込みが上がったら（７０３）、ハイパーバイザ３００上の割込処理部３０７が呼ばれる。
【００５９】
割込処理部３０７は転送量通知領域３０６を参照して、そこに書かれている値の分だけプロセス間通信量カウンタ３０８を増加させる（７０４）。この動作は設定された測定時間（数秒程度を想定）になるまで繰り返され、測定時間を過ぎたらＯＳ上のフック機構３０５の動作を停止して（７０６）測定を終了し、測定が完了したことをプロセッサ間通信量推定機構１３１〜１３ｎに通知する（７０７）。
【００６０】
プロセッサ間通信量推定機構１３１〜１３ｎは、この時点で、プロセス間通信量カウンタ３０８の値を参照して、仮想マシン上の任意の２つのプロセッサ間で通信されたデータ送信量を求めてメモリアクセス遅延推定機構１０２に通知する。
【００６１】
図８はプロセス間通信測定におけるＯＳ３０２上のフック機構３０５の動作を表している。フック機構３０５は、その動作が有効にされると、プロセスによってプロセス間通信ＡＰＩが呼び出される毎に（８０１）処理を行う。まず、呼び出されたＡＰＩ３０９から通信量を取得し（８０２）、この値をハイパーバイザ３００内の転送量通知領域３０６に書き込み、ハイパーバイザ３００に対して割り込みを上げる（８０３）。その後、ＡＰＩ３０９に処理を移して実行する（８０４）。このとき、ハイパーバイザ３００側の割り込み処理の完了を待ち合わせる必要はない。
【００６２】
プロセス間通信によるデータ送信の総量の測定が完了したら、その値から仮想マシン３０１上のメモリアクセスの遅延総和を求める。その方法については、上述したとおりである。
【００６３】
上述した実施の形態の各動作は、予めその動作手順をプログラムとしてＲＯＭなどの記録媒体に格納しておき、これをコンピュータに読み取らせて実行するように構成できることは明白である。
【図面の簡単な説明】
【００６４】
【図１】本発明の実施の形態のシステム構成図である。
【図２】本発明の実施の形態に使用される全結合型ＮＵＭＡシステムを示す図である。
【図３】本発明の実施の形態に使用されるアフィニティ情報のテーブル例を示す図である。
【図４】本発明の実施の形態における仮想マシン上で行われるプロセス間通信の送信データ量の総和を求めるためのブロック図である。
【図５】図１のメモリアクセス遅延推定部１０２の動作を示すフローチャートである。
【図６】図１の再構成決定部１０４の動作を示すフローチャートである。
【図７】プロセス間通信測定におけるハイパーバイザ側の動作を示すフローチャートである。
【図８】プロセス間通信測定におけるＯＳ側上のフック機構の動作を示すフローチャートである。
【図９】ＯＳの動作を停止することなくアフィニティ情報を変更するための構成図である。
【符号の説明】
【００６５】
１００，３００  ハイパーバイザ
１０１，９０１  アフィニティ情報取得部
１０２  メモリアクセス遅延推定機構
１０３  再構成判断部
１０４  構成決定部
１０５  構成変更実行部
１０６  物理リソース
１１１〜１１ｎ，３０１  仮想マシン
１２１〜１２ｎ  仮想リソース
１３１〜１３ｎ  プロセッサ間通信量推定機構
３０２，９００  ＯＳ
３０３，３０４  プロセス
３０５  フック機構
３０６  転送量通知領域
３０７  割込処理部
３０８  プロセス間通信量カウンタ
３０９  プロセス間通信ＡＰＩ
９０２  スケジューラ
９０３  メモリ管理機構
９０４  システム
【図１】
0004702127.tif 000002
【図２】
0004702127.tif 000003
【図３】
0004702127.tif 000004
【図４】
0004702127.tif 000005
【図５】
0004702127.tif 000006
【図６】
0004702127.tif 000007
【図７】
0004702127.tif 000008
【図８】
0004702127.tif 000009
【図９】
0004702127.tif 000010