(57)【要約】  仮想計算機システムにおける資源割当の最適化を、仮想化の設計思想に適した手法で効率よく実施する。仮想計算機システムは、計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、複数の仮想装置を管理する仮想化手段と、仮想化手段を制御する管理手段とを有する。複数の仮想装置は、管理手段からの資源供給情報を用いた第１の最適化演算によりアプリケーションへの物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を管理手段に対して送信する。管理手段は、複数の仮想装置からの資源要求情報を用いた第２の最適化演算により複数の仮想装置への物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を複数の仮想装置に対して送信する。複数の仮想装置と管理手段との間で資源供給情報および資源要求情報を交換しながら、第１の最適化演算と第２の最適化演算とを実行することにより、物理資源の動的な資源割当てを行う。
2008132924.tif 000002
【特許請求の範囲】
【請求項１】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段と、
前記仮想化手段を制御する管理手段とを有し、
前記複数の仮想装置は、前記管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信し、
前記管理手段は、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信し、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、前記物理資源の動的な資源割当てを行うことを特徴とする仮想計算機システム。
【請求項２】
請求項１に記載の仮想計算機システムにおいて、
前記仮想化手段は、仮想マシンモニタ（Virtual Machine Monitor）であり、
前記複数の仮想装置は、前記物理資源の時分割多重による割り当てによって提供される仮想資源と、前記仮想資源上で動作するオペレーティングシステムおよびアプリケーションプログラムを有することを特徴とする仮想計算機システム。
【請求項３】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、ＣＰＵおよびＩ／Ｏデバイスの少なくとも１つを含み、
前記複数の仮想装置は、前記物理資源を時分割多重的に共有することを特徴とする仮想計算機システム。
【請求項４】
請求項１に記載の仮想計算機システムにおいて、
前記アプリケーションは、コンピュータ上で動作するソフトウェアプログラムであり、前記アプリケーションの性能は、前記仮想化手段により供給される前記物理資源の資源量とその資源種類とに依存するものであることを特徴とする仮想計算機システム。
【請求項５】
請求項１に記載の仮想計算機システムにおいて、
前記管理手段は、前記物理資源を設定する制御および前記仮想装置への資源割り当てを行う制御を含む特権命令を実行することを特徴とする仮想計算機システム。
【請求項６】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、前記アプリケーションの詳細情報を用いるものであり、
前記アプリケーションの詳細情報は、負荷と、割当て資源量と、優先度を含む管理ポリシーと、処理遅延と、処理スループットとの少なくとも１つを含む性能情報であることを特徴とする仮想計算機システム。
【請求項７】
請求項１に記載の仮想計算機システムにおいて、
前記複数の仮想装置は、自仮想装置内のアプリケーションプログラムの詳細情報を管理し、自仮想装置内で動作するオペレーティングシステムに対してアプリケーションプログラムへの資源割当て制御を指示することを特徴とする仮想計算機システム。
【請求項８】
請求項１に記載の仮想計算機システムにおいて、
前記資源供給情報は、前記仮想化手段が前記仮想装置に割り当てる資源に関して、その資源利用コストと資源割当量に関する情報であることを特徴とする仮想計算機システム。
【請求項９】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、あらかじめ設定された第１の管理ポリシー情報を用いるものであり、
前記第１の管理ポリシー情報は、前記アプリケーションの優先度と、その優先度に依存する資源取得上限を示す指標であることを特徴とする仮想計算機システム。
【請求項１０】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、あらかじめ設定された第２の管理ポリシー情報を用いるものであり、
前記第２の管理ポリシー情報は、前記各仮想装置の優先度と、資源利用コストに関する情報と、資源割当量の上限および下限を含む設定可能範囲との少なくとも１つを含む情報であることを特徴とする仮想計算機システム。
【請求項１１】
請求項１に記載の仮想計算機システムにおいて、
前記アプリケーションへの資源割当て設定は、前記仮想装置内で動作するオペレーティングシステムが前記仮想資源を各アプリケーションプログラムに関連するプロセスおよびスレッドに対して資源利用割当てをスケジューリングすることにより行うことを特徴とする仮想計算機システム。
【請求項１２】
請求項１に記載の仮想計算機システムにおいて、
前記資源要求情報は、最適資源量に基づく前記仮想資源の割当量に関する要求情報であることを特徴とする仮想計算機システム。
【請求項１３】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記物理資源の運用状態情報を用いるものであり、
前記物理資源の運用状態情報は、前記物理資源の現在の設定情報と、前記物理資源を制御するプログラムの制御パラメタ値と、消費電力との少なくとも１つを含む前記物理資源の運用状態を記述する情報であることを特徴とする仮想計算機システム。
【請求項１４】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記仮想装置への資源割当て情報の履歴を用いるものであり、
前記仮想装置への資源割当て情報の履歴は、現在までに最適化の結果行った仮想資源の資源割当てと、それに対する前記複数の仮想装置からの資源要求情報の履歴であることを特徴とする仮想計算機システム。
【請求項１５】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、あらかじめ設定された第２の管理ポリシー情報を用いるものであり、
前記第２の管理ポリシー情報は、前記物理資源の利用に対するコスト指標、前記各仮想装置の優先度、前記各仮想装置に割り当てる資源の上限および下限を示す設定可能範囲を有し、静的に設定される最適化および資源割当てに関する情報であることを特徴とする仮想計算機システム。
【請求項１６】
請求項１に記載の仮想計算機システムにおいて、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、両演算結果が所定の範囲内に収束することを特徴とする仮想計算機システム。
【請求項１７】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源の動的な資源割当ては、前記物理資源の設定パラメタの制御により所望のアプリケーション性能を低消費電力で実現するように行うことを特徴とする仮想計算機システム。
【請求項１８】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算と前記第２の最適化演算は、周期的に、または外部プログラムからの指示を契機に、あるいは過渡的に変化する現在の管理情報の分析結果を契機に、自律的に行われることを特徴とする仮想計算機システム。
【請求項１９】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、ＣＰＵを含み、
前記物理資源の資源割当ては、前記仮想化手段がリアルタイムスケジューリングを採用している場合に、前記複数の仮想装置に割り当てる前記ＣＰＵの周期と計算時間を変更することで行うことを特徴とする仮想化計算機システム。
【請求項２０】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、Ｉ／Ｏデバイスを含み、
前記物理資源の資源割当ては、前記複数の仮想装置からのＩ／Ｏデバイス処理をキューイングし、そのキューを管理することで行うことを特徴とする仮想化計算機システム。
【請求項２１】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記資源要求情報に基づく資源要求度合いに応じたゲインと資源割当てのコストとで規定される定量的な効用関数を最大化し、あらかじめ設定された第１の管理ポリシー情報に基づく設定可能範囲内で前記仮想装置への資源割当て設定を行うものであることを特徴とする仮想計算機システム。
【請求項２２】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、前記アプリケーションの性能情報によって決定される定量的な効用関数をあらかじめ設定された第１の管理ポリシー情報に基づく設定可能範囲内で最大化するように前記アプリケーションへの資源割当て設定を行うものであることを特徴とする仮想計算機システム。
【請求項２３】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムの最適化方法であって、
前記複数の仮想装置が、前記仮想化手段を制御する管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信し、
前記管理手段が、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信し、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、前記物理資源の動的な資源割当てを行うことを特徴とする仮想計算機システムの最適化方法。
【請求項２４】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムの最適化プログラムであって、
コンピュータに、
前記複数の仮想装置が、前記仮想化手段を制御する管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信するステップと、
前記管理手段が、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信するステップと、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、前記物理資源の動的な資源割当てを行うステップとを実行させることを特徴とする仮想計算機システムの最適化プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、計算機における物理資源を複数の仮想装置で共有する仮想計算機システムおよびその最適化方法に関し、特にアプリケーションレベルの性能指標を最大限に発揮するための資源割当の最適化技術に関する。
【背景技術】
【０００２】
近年、仮想マシンモニタ（Virtual Machine Monitor：ＶＭＭ)と呼ばれる仮想化手段を導入することで、同一の物理サーバ（計算機）上に複数のオペレーティングシステム（Operating Systeｍ：ＯＳ)を同時に動作させることを可能にした仮想計算機システムが各種の分野で利用されている。各ＯＳは、物理サーバ上にインストールするのと同様に、それぞれ仮想マシン（Virtual Machine：ＶＭ）と呼ばれる仮想資源を有する仮想的なサーバ（仮想計算機）上にインストールされる。ＶＭ上で動作するＯＳはゲストＯＳと呼ばれる。ＶＭＭは、各ＶＭをソフトウェア・エンティティとして取り扱い、物理リソースを時分割多重し、複数のＶＭに割り当てることで、ＶＭ間でのリソース共有を実現する。ＶＭＭには様々なアーキテクチャがあるが、代表的なものとしては、ＶＭｗａｒｅやＸｅｎ（例えば非特許文献１参照）などがある。【０００３】
ここで、仮想化されたコンピュータシステムにおいては、仮想化手段が仮想装置に仮想資源を提供する。仮想資源とは、中央演算ユニット（ＣＰＵ）やメモリ、ディスクやネットワークインターフェースカード（ＮＩＣ）に代表されるＩ／Ｏ（Input / Output）デバイスなどの物理資源を仮想化した仮想的な資源である。仮想装置上で動作するゲストＯＳは、あたかも物理資源上で動作しているかのごとくに動作するが、実際は仮想化手段が複数の仮想資源をスケジューリングし、物理資源に時分割多重しながら割り当てている。このスケジューリングパラメタを変更し、物理資源の割り当て方を変更することで、各仮想装置に割り当てる仮想資源の容量を動的に変えることが可能である。典型的な資源としてＣＰＵがあるが、この場合はたとえば割り当てる計算時間や周期などの時間に関するパラメタや、周波数が可変の場合はある時間に割り当てる周波数を変化させることが可能である。また、メモリやディスクの場合はメモリやディスク容量、ＮＩＣの場合は占有帯域などである。ディスクの場合はリクエストのスケジューリングによってスループットなどを変化させることも可能である。【０００４】
一方で計算機システムにおいては、性能などの指標を最大限に発揮するための資源割り当ての最適化に関する研究も広く行われている。指標としてはアプリケーションのＱｏＳ（Quality of Service）がよく用いられる。ＱｏＳはたとえば処理遅延やスループットに代表されるものであり、ある目的時間区間において、システム全体でのＱｏＳ（たとえばすべてのアプリケーションのＱｏＳの重み付きの和など）が最大になるように最適な資源割当てを行う。従来型計算機システムではこれは主にＯＳの仕事であり、アプリケーションへの資源割り当てのスケジューリングと、ＣＰＵ周波数やディスクの回転数などを変化させるなどの物理資源の設定変更などを中央集権的に制御管理する。ここで、アプリケーションのＱｏＳによって決まる指標を、物理資源の調整と資源割当ての調整によって行うため、アプリケーション層、ＯＳ層、物理資源層と情報が多層にわたる。これらの情報をＯＳ層に集める集中型クロスレイヤー管理が、特にバッテリーのエネルギーに限りのあるモバイルコンピューティングなどで積極的に取り入れられてきた（例えば非特許文献２参照）。これはすべてのレイヤーに対して特権的立場にあるＯＳが、スケジューリングパラメタや物理資源割当て設定を、指標を最適化するように動的に制御することで実現される。この制御によって、最低限の消費電力で最大限の性能を得るようにしている。【０００５】
【非特許文献１】P. Barham et al. "Xen and the art of virtualization", In Proc. SOSP 2003. Bolton Landing, New York, U.S.A. Oct 19-22, 2003
【非特許文献２】W. Yuan, et al., "Design and Evaluation of A Cross-Layer Adaptation Framework for Mobile Multimedia Systems", Proceedings of the SPIE/ACM Multimedia Computing and Networking Conference (MMCN'03), Santa Clara, CA, January 2003, 1-13.
【発明の開示】
【発明が解決しようとする課題】
【０００６】
アプリケーションレベルの性能指標を最大限に発揮するための資源割当の最適化が従来型計算機システムを中心に行われているが、この従来手法を仮想計算機システムにそのまま適用することはできない。その理由は、仮想化手段によって仮想化された計算機システムにおいては、性能指標であるアプリケーション層の情報が、物理資源設定や仮想資源割り当てを制御することのできる仮想化手段からは見えない（不可視）ためである。【０００７】
この課題を解決するためにアプリケーション層の情報を仮想化手段から見えるようにする方法が考えられる。具体的には、各仮想装置内に分散しているアプリケーション層の情報を、ゲストＯＳを通じて仮想化手段に転送し、仮想化手段が集中管理的に資源割当や物理資源設定を変更することで、アプリケーションレベルの性能指標を最大限に発揮するための資源割当の最適化を行う方法である。しかし、このような方法には以下のような課題がある。【０００８】
第一に、本来の仮想化の設計思想、つまり、仮想装置の詳細を見ずにカプセル化、モジュール化することによって資源割当を階層化するという仮想化アーキテクチャの設計思想に反することである。【０００９】
第二に、所望の時間内に最適化の制御を行うことが困難になることである。何故なら、最適化に要する時間はアプリケーションの数や資源の種類の数の増加に対して指数関数的に増加するため、仮想化手段で集中的に最適化を行う場合には、最適化にかかるコストが著しく増大し、時間分解能の細かな最適化が非常に困難になるためである。【００１０】
本発明の目的は、アプリケーションレベルの性能指標を最大限に発揮するための資源割当の最適化を、仮想化の設計思想に適合した手法で効率よく実施することのできる仮想計算機システムを提供することにある。
【課題を解決するための手段】
【００１１】
上記目的を達成するため、本発明にかかる仮想計算機システムは、計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、前記複数の仮想装置を管理する仮想化手段と、前記仮想化手段を制御する管理手段とを有する。前記複数の仮想装置は、前記管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信する。前記管理手段は、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信する。前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、前記物理資源の動的な資源割当てを行う。
【発明の効果】
【００１２】
本発明によれば、アプリケーションレベルの性能指標を最大限に発揮するための資源割当の最適化を、仮想化の設計思想に適合した手法で効率よく実施することのできる仮想計算機システムを提供できる。
【図面の簡単な説明】
【００１３】
【図１】本発明の第一の実施例にかかる仮想計算機システムの全体構成を示すブロック図である。
【図２】本発明の第一の実施例にかかる仮想計算機システムにおける最適化処理の説明図である。
【図３】本発明の第一の実施例にかかる仮想計算機システムにおける最適化処理のシーケンスを示す図である。
【図４】本発明の第二の実施例にかかる仮想計算機システムの全体構成を示すブロック図である。
【図５】本発明の第二の実施例にかかる仮想計算機システムにおいて、管理ドメイン（Ｄｏｍ０）とユーザードメイン（ＤｏｍＵ）でその供給・要求情報をやり取りするＣＰＵに関する資源についての説明図である。
【図６】本発明の第二の実施例にかかる仮想計算機システムにおける最適化処理の説明図である。
【図７】本発明の第三の実施例にかかる仮想計算機システムの全体構成を示すブロック図である。
【図８】本発明の第一〜第三の実施例にかかる仮想計算機システムにおける最適化方法によって漸近的に最適設定に収束していく原理の説明図である。
【符号の説明】
【００１４】
１００１  管理ドメイン
１００２  履歴
１００３  資源制御部
１００４  需要推定手段
１００５  データ処理部
１００６  最適化手段
１００７  インターフェース
１００８  メッセージ処理部
１００９  物理資源監視手段
１１０１  ユーザードメイン
１１０２  履歴
１１０３  メッセージ処理部
１１０４  仮想資源
１１０５  資源割当手段
１１０６  資源制御部
１１０７  データ処理部
１１０８  最適化手段
１１０９  アプリケーション性能監視手段
１１１０  インターフェース
１１１１  アプリケーション
１２０１  物理資源
１２０２  仮想化手段
１２０３  資源制御手段
１２０４  資源割当手段
１３０１  ネットワーク（ＮＷ）手段
１３０２  グローバルコントロール手段
【発明を実施するための最良の形態】
【００１５】
以下、本発明にかかる仮想計算機システムおよびその最適化方法の実施の形態について、図面を参照して詳細に説明する。なお、本明細書で使用する「最適」の用語は、可能な限り少ない資源（物理資源の性能や容量、消費電力など）で可能な限り管理ポリシーを反映した公平で効率的な資源割当てによって、アプリケーションレベルでの最大の性能指標を実現することを意味するものとする。【００１６】
（第一の実施の形態）
本発明の第一の実施の形態にかかる仮想計算機システムは、計算機における物理資源を複数の仮想装置で共有する仮想計算機システムにおいて、内部に性能管理すべきアプリケーションを有する複数の仮想装置と、複数の仮想装置を管理する仮想化手段とを有する。各仮想装置は、仮想化手段から通知された資源供給に関する情報、アプリケーションの詳細情報およびあらかじめ設定された第１の管理ポリシー情報に基づいて、各アプリケーションへの資源割当ての最適設定を行うと共に仮想化手段に対して最適な資源要求に関する情報を送信する第１の管理手段を有する。また、仮想化手段を制御する管理手段であって、仮想装置内の第１の管理手段からの資源要求に関する情報と、物理資源運用状態と、仮想装置への資源割り当て情報の履歴と、あらかじめ設定された第２の管理ポリシー情報とに基づいて、仮想装置への最適な新たな資源割当て設定を行うと共に仮想装置に対して最適な資源供給に関する情報を送信する第２の管理手段を有する。これにより、仮想化手段および各仮想装置内でのそれぞれ局所的、分散的な最適化と資源供給情報および資源要求情報の交換による相互作用によって到達する均衡点において、所望のアプリケーション性能を可能な限り低消費電力、最低資源量で実現する動的な資源割当てを提供する。【００１７】
本実施の形態では、各仮想装置内の第１の管理手段と仮想化手段を制御する第２の管理手段とが各々に定義された効用を最適化するような資源割当を行い、互いへの資源供給および資源要求を交換して間接的に互いの最適化演算に影響を及ぼし合うことによって、仮想化アプリケーションのモジュール化・カプセル化構造を保ちながら、互いの詳細情報を用いることなく、系の状態を、全てのアプリケーションの性能情報を考慮して最適化した全体最適化状態へ漸近的に近づけていくことができる。【００１８】
本実施の形態によれば、同一の物理資源の上で複数の仮想装置を同時に動作させる仮想計算機システムにおいて、カプセル化・モジュール化された仮想化アーキテクチャに反することのない分散的アプローチによって、アプリケーションアウェアな資源割当の最適化が可能となる。その理由は、資源の最適割当に必要な処理を、仮想化アーキテクチャに合致した形で各仮想装置と仮想化手段とに分散化し、互いに資源供給情報および資源要求情報を交換し合うことで間接的に影響を及ぼし合うことによって、最終的に、互いの局所的な最適化に対してその最適化演算の結果が全体最適に向かうようになっているためである。このため、各仮想装置の内部の詳細情報を見ることなく、仮想化手段は各仮想装置にアプリケーションの現在の負荷状況を反映した最適な資源配分を行うことができる。【００１９】
また実施の形態によれば、同一の物理資源の上で複数の仮想装置を同時に動作させる仮想計算機システムにおいて、資源割当の最適化を環境の変化に対して動的な追随が可能なほど十分迅速に行うことができる。その理由は、資源の最適割当に必要な処理を各仮想装置と仮想化手段とに分散化し、互いに資源供給情報および資源要求情報を交換し合うことで間接的に影響を及ぼし合うことによって、最終的に、互いの局所的な最適化に対してその最適化演算の結果が全体最適に向かうようになっており、分散化によって計算の複雑性の減少と処理時間の短縮が可能になり、時間分解能の細かな最適化が行えるためである。【００２０】
なお、仮想化手段は、仮想マシンモニタ（ＶＭＭ）であり、仮想装置は、物理資源の時分割多重による割り当てによって提供される仮想資源と、その上で動作するオペレーティングシステムおよびアプリケーションプログラムを有してもよい。【００２１】
物理資源は、ＣＰＵおよびＩ／Ｏデバイスに代表される資源であり、仮想装置での資源共有は、時分割多重的に行われてもよい。【００２２】
アプリケーションは、コンピュータ上で動作するソフトウェアプログラムであり、その性能が供給される資源量と資源種類に依存してもよい。【００２３】
仮想化手段を制御する第２の管理手段は、物理資源設定制御および仮想装置への資源割り当て制御などの特権命令を実行することのできるコンピュータプログラムであってもよい。【００２４】
アプリケーションの詳細情報は、負荷、割当て資源量、優先度などの管理ポリシー、処理遅延、処理スループットに代表される性能情報であってもよい。【００２５】
仮想装置内の第１の管理手段は、仮想装置内の資源割当ての最適化を行い、自仮想装置内のアプリケーションプログラムの詳細情報を管理し、自仮想装置内で動作するオペレーティングシステムに対してアプリケーションプログラムへの資源割当て制御を指示することが可能なソフトウェアプログラムであってもよい。【００２６】
資源供給に関する情報は、仮想化手段が仮想装置に割り当てる資源に関して、その資源利用コストと資源割当量に関する情報であってもよい。この情報は、さらに望ましくは、資源利用コストは、価格に代表される或る資源量を獲得するのに必要なコストを計算するための定量的指標であってもよい。【００２７】
仮想装置に設定される第１の管理ポリシー情報は、アプリケーションの優先度、およびその仮想装置の優先度に依存する資源取得上限を示す指標であってもよい。【００２８】
仮想化手段に設定される第２の管理ポリシー情報は、各仮想装置の優先度、資源利用コストに関する情報、資源割当量の上限や下限などの設定可能範囲などに代表される資源割当の最適化、設定動作の際に必要となる静的に設定される情報であってもよい。【００２９】
アプリケーションへの資源割当ては、仮想装置内で動作するオペレーティングシステムが仮想資源を各アプリケーションプログラムに関連するプロセスおよびスレッドに対して資源利用割当てをスケジューリングすることで実現されてもよい。【００３０】
資源要求に関する情報は、仮想装置上で動作する第１の管理手段から仮想化手段を制御する第２の管理手段に対して送られる、当該仮想装置に提供される仮想資源の要求情報であって、当該仮想装置内での最適化演算の結果決定した最適資源量に基づいて決まる仮想資源の割当量に関する要求情報であってもよい。さらに望ましくは、容量値や資源割当時間などに代表される定量的な指標で表現されてもよい。【００３１】
物理資源運用状態に関する情報は、物理資源の現在の設定情報や物理資源を制御するプログラムの制御パラメタ値や消費電力などに代表される物理資源の運用状態を記述する情報であってもよい。この情報は、さらに望ましくは、ＣＰＵの設定周波数や電圧、現在の負荷率や、ディスクデバイスの電圧、回転数、容量値、空き容量値、ネットワークインターフェースデバイスの帯域などに代表される当該仮想計算機システムが備える制御・管理対象の物理資源の設定・運用状態に関する情報であってもよい。【００３２】
仮想装置への資源割り当て情報の履歴は、現在までに最適化の結果行った仮想資源の資源割当てと、それに対する仮想装置上で動作する第１の管理手段からの資源要求情報の履歴であってもよい。【００３３】
仮想化手段に関する第２の管理ポリシー情報は、物理資源利用に対するコスト指標や、各仮想装置の優先度や、各仮想装置に割り当てる資源の上限、下限を示す設定可能範囲などに代表される、静的に設定される最適化、資源割当てに関する情報であってもよい。【００３４】
局所的な最適化の結果到達する均衡点は、仮想化手段を制御する第２の管理手段における最適化動作と、仮想装置内で動作する第１の管理手段における最適化動作とが、互いに資源供給に関する情報および資源要求に関する情報を交換しながら最適化動作を続けた際に、両者の最適化の結果がある範囲内にとどまった状態を指してもよい。【００３５】
低消費電力化は、望ましくは当該仮想計算機システムに備わる物理資源の設定パラメタの制御によって実現される。【００３６】
仮想化手段を制御する第２の管理手段および仮想装置上で動作する第１の管理手段は、継続的に最適化演算および設定動作を繰り返すものであり、当該管理動作は周期的に行われたり、外部プログラムからの指示を契機に行われたり、または、過渡的に変化する現在の管理情報の分析結果を契機に自律的に行われたりしてもよい。【００３７】
物理資源の仮想資源への割当制御として、対象物理資源がＣＰＵであり、仮想化手段がリアルタイムスケジューリングを採用している場合に、各仮想装置に割り当てる周期と計算時間を変更することで実現してもよい。【００３８】
物理資源の仮想資源への割当制御として、対象物理資源がＩ／Ｏデバイスである場合に、各仮想装置からのＩ／Ｏデバイス処理をキューイングし、そのキューを管理することで実現してもよい。【００３９】
仮想化手段を制御する第２の管理手段による最適化は、仮想装置の資源要求に関する情報によって決まる資源要求度合いに応じて決まるゲインと資源を割り当てることにかかるコストとで規定される定量的な効用関数を最大化することで実現され、第１の管理ポリシー情報によって定められる設定可能範囲内で最適な資源割当て設定、物理資源制御、資源供給に関する情報を決定することによって実現されてもよい。【００４０】
仮想装置上で動作する第１の管理手段による最適化は、アプリケーションの性能情報によって決定される定量的な効用関数を第１の管理ポリシー情報によって定められる設定可能範囲内で最大化するようなアプリケーションに対する資源割当て設定、資源要求に関する情報を決定することによって実現されてもよい。【００４１】
（第二の実施の形態）
本発明の第二の実施の形態にかかる仮想計算機システムの最適化方法は、計算機における物理資源を共有する複数の仮想装置と、この複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムの最適化方法である。この方法では、内部に性能管理すべきアプリケーションを有する複数の仮想装置のそれぞれに設けられた第１の管理手段が、仮想化手段から通知された資源供給に関する情報、アプリケーションの詳細情報およびあらかじめ設定された第１の管理ポリシー情報に基づいて、各アプリケーションへの資源割当ての最適設定を行うと共に仮想化手段に対して最適な資源要求に関する情報を送信する第１のステップと、仮想化手段を制御する第２の管理手段が、仮想装置内の第１の管理手段からの資源要求に関する情報と、物理資源運用状態と、仮想装置への資源割り当て情報の履歴と、あらかじめ設定された第２の管理ポリシー情報とに基づいて、仮想装置への最適な新たな資源割当て設定を行うと共に仮想装置に対して最適な資源供給に関する情報を送信する第２のステップとを含む。これにより、仮想化手段および各仮想装置内でのそれぞれ局所的、分散的な最適化と資源供給情報および資源要求情報の交換による相互作用によって到達する均衡点において、所望のアプリケーション性能を可能な限り低消費電力、最低資源量で実現する動的な資源割当てを提供する。【００４２】
（第三の実施の形態）
本発明の第二の実施の形態にかかるプログラムは、物理資源を共有する複数の仮想装置とこの複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムを構成する計算機を、内部に性能管理すべきアプリケーションを有する複数の前記仮想装置の上で動作し、仮想化手段から通知された資源供給に関する情報、アプリケーションの詳細情報およびあらかじめ設定された第１の管理ポリシー情報に基づいて、各アプリケーションへの資源割当ての最適設定を行うと共に仮想化手段に対して最適な資源要求に関する情報を送信する第１の管理手段と、仮想化手段を制御する管理手段であって、仮想装置内の第１の管理手段からの資源要求に関する情報と、物理資源運用状態と、仮想装置への資源割り当て情報の履歴と、あらかじめ設定された第２の管理ポリシー情報とに基づいて、仮想装置への最適な新たな資源割当て設定を行うと共に仮想装置に対して最適な資源供給に関する情報を送信する第２の管理手段として機能させる。これにより、仮想化手段および各仮想装置内でのそれぞれ局所的、分散的な最適化と資源供給情報および資源要求情報の交換による相互作用によって到達する均衡点において、所望のアプリケーション性能を可能な限り低消費電力、最低資源量で実現する動的な資源割当てを提供する。【００４３】
以下、本発明の実施例を、図面を用いて詳細に説明する。
【実施例１】
【００４４】
図１を参照すると、本発明の第一の実施例に係る仮想計算機システムは、物理資源１２０１と、１以上のユーザードメイン１１０１と、物理資源１２０１を仮想化してユーザードメイン１１０１に仮想資源１１０４として提供する仮想化手段１２０２と、仮想化手段１２０２が有する資源制御手段１２０３および資源割当手段１２０４の制御パラメタの制御およびユーザードメイン１１０１との間のメッセージの授受などの、主にシステム管理機能を有する管理ドメイン１００１と、ネットワーク手段１３０１によって管理ドメイン１００１およびユーザードメイン１１０１に接続され、システム全体のグローバルな制御を行うグローバルコントロール手段１３０２とから構成される。【００４５】
ここでドメインとは、たとえば仮想装置と読み替えることが可能であり、その場合、ユーザードメイン１１０１はユーザーに提供される個々の仮想装置であり、管理ドメイン１００１は装置全体の管理用に用いる仮想装置（本発明の仮想化手段を制御する管理手段を有する。）を指す。また、管理ドメイン１００１内の資源制御部１００３、需要推定手段１００４、データ処理部１００５、最適化手段１００６、インターフェース１００７、メッセージ処理部１００８および物理資源監視手段１００９は、仮想化手段１２０２を制御する管理手段を構成する。ユーザードメイン１１０１内のメッセージ処理部１１０３、資源割当手段１１０５、資源制御部１１０６、データ処理部１１０７、最適化手段１１０８、アプリケーション性能監視手段１１０９およびインターフェース１１１０は、仮想装置の管理手段を構成する。これらの管理手段は、一般にソフトウェアプログラムで実現される。ソフトウェアプログラムは、磁気ディスク等のコンピュータ可読記録媒体に記録され、コンピュータの起動時などにコンピュータに読み取られ、そのコンピュータの動作を制御することにより、そのコンピュータ上に前記管理手段を実現する。【００４６】
管理ドメイン１００１は、ユーザードメイン１１０１に割り当てる仮想資源１１０４の容量などの割当てや物理資源１２０１の設定の最適化およびその実行を行う。そのために、ユーザードメイン１１０１との間で、資源に関する動的な情報のメッセージのやり取りを行うメッセージ処理部１００８を有する。このメッセージ処理部１００８により、たとえば現在の資源を供給されるのに必要なコスト情報がユーザードメイン１１０１へ送信され、どの種類の資源をどれくらいの容量だけ必要かを示す需要情報がユーザードメイン１１０１から受信される。また、現在までの資源配分設定情報やユーザードメイン１１０１から受信した資源要求情報などの履歴を格納する履歴１００２およびその履歴情報を管理するデータ処理部１００５を有する。さらに、物理資源監視手段１００９は、物理資源１２０１の状態を監視し、データ処理部１００５に通知する。物理資源の状態とは、たとえば電力消費量などに代表されるものであるが必ずしもこの限りではない。データ処理部１００５は、必要な情報を履歴１００２に格納・管理するとともに、各ユーザードメイン１１０１の資源要求状況を推定する機能を提供する需要推定手段１００４を用いて、ユーザードメイン１１０１の資源要求状況を推定し、この推定した資源要求状況の特定に必要なパラメタを最適化手段１００６に通知する。資源要求情報は、たとえば資源取得コストとアプリケーション性能状況などに対する資源需要関数であるが、必ずしもこれに限るものではない。【００４７】
最適化手段１００６は、データ処理部１００５によって管理されている情報をもとに、現在の最適な設定を演算し、ユーザードメイン１１０１に対する資源供給情報をメッセージ処理部１００８を通じて送信するとともに、資源制御部１００３を通じて必要な物理資源１２０１に対する設定やその割当てを行うために仮想化手段１２０２の資源制御手段１２０３および資源割当手段１２０４を制御する。【００４８】
インターフェース１００７は、ネットワーク手段１３０１を通してグローバルコントロール手段１３０２から各種のコマンドを受けたり、履歴１００２に蓄積されているデータなどの情報を送信したりすることが可能であり、システム全体の管理者とのインターフェースを提供する。【００４９】
一方でユーザードメイン１１０１は、管理ドメイン１００１との間で資源供給情報、資源要求情報をやり取りするメッセージ処理部１１０３を有し、ユーザードメイン１１０１内で動作するアプリケーション１１１１の性能状況を監視するアプリケーション性能監視手段１１０９を有し、これらの情報を履歴１１０２に格納し、管理するデータ処理部１１０７を有する。データ処理部１１０７は、最適化手段１１０８に自ユーザードメイン１１０１を最適化する上で必要な情報を送り、最適化手段１１０８は、最適化演算を行い、その演算結果に基づいて、管理ドメイン１００１に対する資源要求や仮想資源１１０４の設定やそのアプリケーション１１１１への割当などを決定する。資源制御部１１０６は、最適化手段１１０８で決定された設定に従って、仮想資源１１０４および資源割当手段１１０５を制御し、メッセージ処理部１１０３は管理ドメイン１００１へ資源要求情報を通知する。【００５０】
ネットワーク手段１３０１は、Ｅｔｈｅｒｎｅｔ（登録商標）に代表されるネットワーク手段であり、グローバルコントロール手段１３０２は、リモートに設置された計算機資源上で動作する管理ソフトウェアプログラムである。【００５１】
グローバルな観点での最適化とは、可能な限り少ない資源で所望のアプリケーション性能を得ることを意味し、効率性と公平性を両立するものである。上記のようにこのためにはクロスレイヤーでの情報が必要になってくるが、システム全体の最適化に必要な指標および動作をそれぞれ管理ドメイン１００１、ユーザードメイン１１０１に分散させ、各々で定義された局所的最適化の結果、グローバルな最適化を実現する。その際に、資源供給・要求情報のやり取りを介しながら管理ドメイン１００１とユーザードメイン１１０１とが相互作用し合うことによって、仮想化のアーキテクチャを保ったまま、動的に変動するアプリケーション負荷状況を加味した最適な資源割り当てを行う。【００５２】
この目的のため、物理資源１２０１の管理を行うことが可能な管理ドメイン１００１では、物理資源１２０１の利用量を最低にし、かつより強い資源要求を送信するユーザードメイン１１０１に多くの資源を割り当てることを最適化指標とし、その指標を実現するための最適化処理（第２の最適化演算）を行う。【００５３】
他方、ユーザードメイン１１０１は、最小の資源量でアプリケーション１１１１の性能を所望のレベルまで最大化することを最適化指標とし、その指標を実現するための最適化処理（第１の最適化演算）を行う。【００５４】
さらに両者のそれぞれの最適化処理による相互作用部分として、定性的には、管理ドメイン１００１は、ユーザードメイン１１０１からの資源要求が増加（減少）する場合は、資源要求が減少（増加）する方向に動作するように供給情報を変化させ、一方でユーザードメイン１１０１は、管理ドメイン１００１からの供給が増加（減少）する場合は、供給量を減少（増加）する方向に動作するように資源要求を変化させるように、各ドメイン１００１、１１０１の最適化指標を設計し、それぞれの指標を実現するための最適化処理を行う。この最適化処理によって、必ず互いに変化が逆の方向に向かうように設計し、システムの安定化を図る。これは、たとえば資源のコストを供給情報とし、その資源要求量を要求情報とすることで実現できるが、必ずしもこの限りではない。【００５５】
以下、上記の最適化指標を定量化したものを「効用」とよび、その効用を最大化する状態（パラメタ設定、メッセージ情報）を管理ドメイン１００１、ユーザードメイン１１０１にとってもっとも「望ましい状態」であるとし、その望ましい状態となるように効用関数を設定し、その効用関数を用いて最適化処理を行うものとする。【００５６】
望ましい状態の定義は、たとえば一方で管理ドメイン１００１は物理資源１２０１を管理するが、所望の性能を満たすようにユーザードメイン１１０１間で可能な限り公平で効率的に資源を分配・設定することを目的とし、他方でユーザードメイン１１０１はアプリケーション１１１１の処理遅延に代表されるＱｏＳなどを最低限の資源容量で所望のレベルまで最大化することを目的とするなどが考えられる。管理ドメイン１００１とユーザードメイン１１０１の相互作用として、たとえば、管理ドメイン１００１は、ユーザードメイン１１０１に対して現在の資源のコスト指標を提示し、ユーザードメイン１１０１は資源要求容量レベルの提示を行うことで、間接的に互いに影響を与え合うことができる。【００５７】
図２に示すように、管理ドメイン１００１は効用関数２１０２を持ち、この数値が大きいほうがより望ましい状態とする。ただし、この効用関数２１０２は、内部状態θをパラメタにした、設定パラメタα、ユーザードメイン１１０１からの要求情報｛ζｄ｝ｄ∈Ｄ，Ｄ＝｛１，２，…，Ｄ｝（Ｄはドメイン数）、ユーザードメイン１１０１への資源供給情報｛ｐｄ｝の関数、
ｕ＝ｕｍ（｛ｐｄ｝，α，｛ζｄ｝｜θ）      …（１）
であるとする。【００５８】
ここで、管理ドメイン１００１の内部状態θは、たとえば起動時に読み込む、あらかじめ決めておいたコンフィグレーション情報（単位資源あたりのコスト係数や各ユーザードメイン１１０１に対する割当上限、各ユーザードメイン１１０１の優先度などの管理ポリシーに関する情報）や、動的に変化しうる各種監視情報（資源の故障や利用状態、ユーザードメイン１１０１の要求履歴、設定パラメタ履歴など）であるが、これに限るものではなく、管理ドメイン１００１内での最適化に必要な情報一式である。【００５９】
同様にユーザードメイン１１０１の効用関数２２０２は、内部状態λｄをパラメタに持ち、設定パラメタβｄ、管理ドメイン１００１からの資源供給情報ｐｄ、管理ドメイン１００１への要求情報ζｄの関数、
ｕ＝ｕｄ（ζｄ，βｄ，ｐｄ｜λｄ）      …（２）
であるとする。内部状態λｄは管理ドメイン１００１の場合と同様に、起動時に読み込む静的な情報（アプリケーションの優先度、資源割当上限などの管理ポリシーにかかわる情報）や、動的な情報（アプリケーションの現在の負荷やＱｏＳ、資源割当履歴、資源要求履歴、供給情報履歴など）であるが、これに限るものではなく、ユーザードメイン１１０１の最適化に必要な情報一式である。【００６０】
各ドメイン１１０１、１００１は、与えられた状態に対して最適な（効用を最大化する）設定やメッセージ情報を探索する。効用関数２１０２、２２０２の形は探索空間の中で大域的最適値が存在する形が望ましい。たとえば、連続な凹関数（ｕ軸の下方から見たときに凹型であること）であれば大域的最適値が存在する。図２は、各ドメイン１１０１、１００１で用いる効用関数２１０２、２２０２のイメージを直感的に示すものである。【００６１】
図２を参照すると、たとえば管理ドメイン１００１では、与えられたθ、α、｛ζｄ｝ｄ∈Ｄに対して、｛ｐｄ＊｝ｄ∈Ｄが最適な値となる。｛ζｄ｝ｄ∈Ｄは、ユーザードメイン１１０１から与えられ、効用関数の形に影響を及ぼすことで、最適値｛ｐｄ＊｝ｄ∈Ｄや最適設定αに影響を与える。同様に内部状態θが変化すれば、やはり効用最大値を与える｛ｐｄ＊｝ｄ∈Ｄおよびαに影響を与えることになる。ユーザードメイン１１０１も同様で、たとえばアプリケーションの負荷変動によるλｄの変動や、管理ドメイン１００１からの資源供給情報ｐｄの変動に対して、最適な設定βｄ、資源要求情報ζｄが変動する。管理ドメイン１００１とユーザードメイン１１０１は、互いからの入力に対して最適反応２１０１および２１０２を繰り返すことで、相互作用し合い、収束値に収束する。【００６２】
図３に、この動作のシーケンスの一例を示す。図３の例では、管理ドメイン１００１と１つのユーザードメイン１１０１の二者のみが存在し、それらが或る一定周期で局所的に最適化を繰り返すことで、与えられた状態に対して全体最適値に漸近的に収束していく。管理ドメイン１００１およびユーザードメイン１１０１は、周期的な動作を行うため、タイマー３１０１および３３０１に最適化処理が終わるたびに次の動作時間を設定して処理を終了する。次回はタイマーからの割り込みを契機に新たな最適化を開始する。以下詳細動作を説明する。【００６３】
まず、或るタイミングでタイマー３１０１から割り込み３００２が管理ドメイン１００１に入る。その割り込みを契機に管理ドメイン１００１は、最適化に必要な最新のパラメタ情報を読み込み、最適化３００３を行う。ここで最適化３００３とは、ユーザードメイン１１０１からの資源要求情報をもとに、管理ポリシーを満たす最適な資源割当および資源制御パラメタ設定、ならびにユーザードメイン１１０１への資源供給情報をそれぞれ計算することである。次に設定更新３００４で、計算結果に従って資源割当および資源制御パラメタ設定を行い、また資源供給メッセージ３００５にてユーザードメイン１１０１へ資源供給情報を通知し、次の最適化を最適化周期３１０２後となるようにタイマー設定３００６を行う。【００６４】
ユーザードメイン１１０１は、資源供給メッセージ３００５の割り込みを契機に、パラメタ更新３２０２によって、管理ドメイン１００１から通知された自ユーザードメイン１１０１の資源供給情報を更新する。このときに、自分に割り当てられている資源の割当が更新されていれば、再度内部の資源割当の設定パラメタを最適化し更新してもよい。その後、タイマー３３０１からの割り込み３３０３が入ると、それを契機に内部状態や管理ドメイン１００１からの資源供給情報を最新のものに更新した後、最適化３２０３を行い、最適な内部状態、設定パラメタ、資源要求情報を最新のものに更新する。さらに資源要求メッセージ３２０５によって資源要求情報を管理ドメイン１００１に通知した後、タイマー設定３２０６によって次回の最適化の時間にタイマーをセットし、動作を終了する。【００６５】
資源要求メッセージ３２０５を受けた管理ドメイン１００１は、パラメタ更新３００７によって、ユーザードメイン１１０１の資源要求情報を更新する。【００６６】
以下、上記処理と同様の処理を繰り返すことで、漸近的に最適設定に収束していく。資源が一種類であった時（資源Ａとよぶ）の収束の例を図８を用いて詳細に説明する。【００６７】
管理ドメイン１００１は、ユーザードメイン１１０１に対して資源Ａの供給情報としてｐを送り、ユーザードメイン１１０１は、資源Ａの要求情報としてζを送るとする。これはたとえば、それぞれ価格に代表されるコスト指標と要求量などであり、一般には正の実数であるが、必ずしもこれに限るものではない。【００６８】
管理ドメイン１００１には供給情報の設定可能範囲８００５が、ユーザードメイン１１０１には要求情報の設定可能範囲８００４が、それぞれあらかじめ管理ポリシーとして定められているとする。管理ドメイン１００１は、与えられた内部状態θと、ユーザードメイン１１０１からの要求情報ζを元に、常に上記の効用を最大化するｐを計算するが（ここで、説明の便宜上、設定パラメタαは省略した）、これは、管理ドメイン１００１のユーザードメイン１１０１からの入力に対する最適反応と考えることができ、与えられたζに対する、θをパラメタとした最適反応関数８００２は、次式で与えられるとする。
ｐ＝ｆ（ζ｜θ）      …（３）【００６９】
同様にユーザードメイン１１０１の管理ドメイン１００１からの資源供給情報ｐに対する、内部状態λをパラメタにした最適反応関数８００３は、次式で与えられるとする。
ζ＝ｇ（ｐ｜λ）      …（４）【００７０】
図８は、両者の関数を横軸にζを、縦軸にｐをプロットし視覚化したものである。ここで簡単のため、管理ドメイン１００１とユーザードメイン１１０１の内部状態θおよびλは固定であるとする。たとえばユーザードメイン１１０１からのある時点の資源要求がζ０であった場合、管理ドメイン１００１の最適反応は、ｐ０＝ｆ（ζ０｜θ）である。次の最適化で、ユーザードメイン１１０１は、このｐ０に対する最適反応として、ζ１＝ｇ（ｐ０｜λ）を出力する。図８中の矢印はこれらの一連の動作を繰り返すことで、ｐおよびζは、それぞれｐ＊およびζ＊の収束点８００１に収束していくことを示している。この収束点８００１は内部状態θおよびλに依存するため、これを制御することで収束点８００１を望ましい状態に制御することが可能となる。この制御は、あらかじめ計算しておいてもよいし、各ドメイン１１０１、１００１が動的に管理ポリシーに従って変更してもよい。さらに、図１に記載のグローバルコントロール手段１３０２によって直接変更してもよいし、また間接的に各ドメイン１１０１、１００１の管理ポリシーを変更することも可能である。【００７１】
また、単一資源だけでなく、複数資源の場合にも同様である。たとえばＮ個の資源があれば、供給情報や要求情報はその資源数だけ必要となる。たとえば上記の例に従えばＮ次元のベクトルとして表現することが可能であるが、必ずしもこの限りではない。【００７２】
収束性については、上記の単一資源の場合は、その最適関数の傾きが、収束性を決める。以下、一般にＮ次元の場合の収束性について述べる。供給情報、要求情報をＮ次元ベクトルｐおよびζであらわし、管理ドメイン１００１およびユーザードメイン１１０１の最適反応関数をそれぞれｐ＝ｆ（ζ）およびζ＝ｇ（ｐ）とすると（θ、λは省略した）、たとえば、管理ドメイン１００１の時刻ｔ＋１における出力ｐｔ＋１は、ｐｔ＋１＝ｆ（ｇ（ｐｔ））≡ｈ（ｐｔ）のようにかけ、ｐｔ→ｐｔ＋１＝ｈ（ｐｔ）→ｐｔ＋２＝ｈ（ｐｔ＋１）→…と値が更新されていくため、この写像ｈの性質が収束性を決定することになる。一般には、ｈが縮小写像であれば、ただ一点に収束することがわかっているため、設定可能範囲や内部状態をそのように設定することで、必ず収束するようにシステムを設計することができる。【００７３】
ユーザードメイン１１０１の数が複数の場合も同様であり、一般にはシステム内の全てのドメインの間でメッシュトポロジーでメッセージを投げ合って、他のドメインの入力に対する最適反応を繰り返すことで全体最適を実現する。【００７４】
ここで、最適化周期は、管理ドメイン１００１、ユーザードメイン１１０１とも一定時間を周期にして繰り返すが、これに限るわけではなく、たとえば、状態（ユーザードメイン１１０１からの要求やアプリケーションの負荷率）の変動の大きさなどによって周期を変えたり、ランダム化してもよい。特に、たとえばアプリケーションの負荷が、ある周期的な時間変動をすると、ちょうど供給情報と要求情報が振動してしまう場合があるが、これらは周期をランダム化したり、供給情報や要求情報の振動を検出し、周期や値をずらすなどのアクティブな制御を行うことで防ぐことが可能である。  【００７５】
本実施例では、仮想装置を構成するユーザードメイン１１０１は、仮想化手段１２０２から受信した資源供給情報、アプリケーション詳細情報などに基づいて、各アプリケーションへの資源割当ての最適設定を行うと共に仮想化手段１２０２に対して最適な資源要求情報を送信する。他方、仮想化手段１２０２を制御する管理ドメイン１００１は、ユーザードメイン１１０１からの資源要求情報と物理資源運用状態などに基づいて、ユーザードメイン１１０１への最適な新たな資源割当て設定を行うと共にユーザードメイン１１０１に対して最適な資源供給情報を送信する。双方のドメイン１１０１、１００１内でのそれぞれ局所的、分散的な最適化と資源供給情報および資源要求情報の交換による相互作用によって、所望のアプリケーション性能を可能な限り低消費電力、最低資源量で実現する動的な資源割当てを実現している。
【実施例２】
【００７６】
次に、本発明の第二の実施例について図面を用いて詳細に説明する。図４を参照すると、本発明の第一の実施例は、仮想化手段（Xen Hypervisor）４００１と、管理ドメイン（Dom0）４１０１と、ユーザードメイン（DomU）４２０１と、システムマネージャ４３０１とから構成される。【００７７】
仮想化手段４００１は、仮想装置（ドメイン）および物理資源を管理する。ここでは特に、ＣＰＵ４００２および消費電力（Ｐｏｗｅｒ）４００３を管理する。また、各ユーザードメイン４２０１へ供給された仮想ＣＰＵ（VCPU: Virtual CPU）４２０３のＣＰＵ４００２への割当のスケジューリングを行うスケジューラ４００４を有する。Ｘｅｎにおけるスケジューラ４００４は、ｓｅｄｆ（Simple Earliest Deadline First）に代表されるリアルタイムスケジューラを採用しており、設定パラメタとしてピリオド（周期）とスライス（計算時間）を持つが、必ずしもこの限りではない。【００７８】
消費電力４００３は、ＣＰＵ４００２の動作周波数と電圧によって決まり、あらかじめそれらの関数としてテーブルを持っていてもよいし、実際に電力消費量を測定することも可能である。【００７９】
ユーザードメイン４２０１は、複数のタスク４２０９を有し、当該ドメイン上で動作するゲストＯＳは、割り当てられた仮想ＣＰＵ４２０３をあたかも物理ＣＰＵのように取り扱い、スケジューラ４２０４によってＣＰＵリソースを割り当てる。ここでタスクとは、アプリケーションのプロセスやスレッドといったスケジューリングされるジョブの単位を示す。スケジューラ４２０４は、ゲストＯＳがどういうスケジューラを採用しているかに依存する。ここではＸｅｎ同様に、周期と計算時間によってスケジューリングするリアルタイムスケジューラであるとするが、必ずしもこの限りではない。監視手段４２０２は、タスク４２０９の仮想ＣＰＵ４２０３へのスケジューリング結果をモニターし、そこから処理遅延やスループットに代表されるタスクが経験するＱｏＳに変換する。このＱｏＳはタスクの種類などに依存し、たとえば、動画などのアプリケーションの場合には、周期が短く計算時間が多いほうがより高品質での再生が可能であるし、シェルやワードプロセッサのようなユーザーに対する応答型アプリケーションの場合は、計算時間は多くの場合問題ではなく、周期が重要なものもある。【００８０】
スケジューラ制御手段４２０５は、スケジューラ４２０４の設定パラメタを動的に変更することで、各タスクへの資源割当を変化させる。【００８１】
通信手段４２０６は、管理ドメイン４１０１の通信手段４１０５と通信することで現在の資源要求を送信したり、資源供給情報を受信したりする。この通信は典型的にはＴＣＰコネクションによって確立されるが、必ずしもこの限りではない。また受信した資源供給情報はデータ管理手段４２０７に送られ、履歴として記憶手段に保存される。【００８２】
データ管理手段４２０７は、最適化に必要なデータの管理を行う。具体的には、各時間における資源供給情報、内部状態、最適化の結果の設定パラメタ、資源要求情報などを保存する。【００８３】
最適化手段４２０１は、内部状態の情報（優先度などに代表されるタスクのコンフィグレーション情報、資源上限などの管理ポリシー情報、監視手段４２０２によって監視したタスクのＱｏＳ状態など）、現在の設定情報（タスクへのスケジューラパラメタ設定情報）、資源供給情報などをデータ管理部４２０７および監視手段４２０２から取得し、最適設定および資源要求情報を計算する。最適設定の演算結果はスケジューラ制御手段４２０５を通してスケジューラ設定に反映される。また最適設定および資源要求情報の演算結果は、データ管理手段４２０７に送られ履歴に保存されると共に、資源要求情報は通信手段４２０６を用いてＤｏｍ０に送信される。【００８４】
管理ドメイン４１０１の通信手段４１０５は、資源要求情報を受信すると、データ管理手段４１０７に送信し、データ管理手段４１０７は、それを履歴として記憶手段に保存する。【００８５】
監視手段４１０２は、電力消費量を監視しており、常に最適化手段４１０６に通知する。最適化手段４１０６は、電力消費量の情報や、データ管理手段４１０７に保存されているユーザードメイン４２０１の最適化に必要な情報を元に最適化し、ＣＰＵ４００２の電圧や周波数設定、スケジューラ４００４のパラメタ設定、資源供給情報を演算する。電圧や周波数設定の演算結果は電圧・周波数制御手段４１０３を通してＣＰＵ４００２に反映され、またスケジューラ設定はスケジューラ制御手段４１０４を通してスケジューラ４００４に反映される。Ｘｅｎの場合は、これらはＨｙｐｅｒｃａｌｌと呼ばれるインターフェースを通して行われるが、必ずしもこの限りではない。また、資源供給情報はデータ管理手段４１０７によって保存された後、通信手段４１０５によってユーザードメイン４２０１に送られる。【００８６】
ここでは、ユーザードメイン４２０１が単一の例を用いたが、一般にはユーザードメイン４２０１は複数有り、それぞれのユーザードメイン４２０１毎にパラメタの設定や、資源供給情報の送信が行われる。【００８７】
さらに、システムマネージャ４３０１は、インターフェース４１０８および４２０８を通してユーザードメイン４２０１および管理ドメイン４１０１にアクセス可能であり、データ管理手段４１０７および４２０７で保持管理されている現在の設定状態情報や効用値などに代表される内部情報の取得や最適化に用いる内部状態情報を動的に修正することが可能である。【００８８】
次に、管理ドメイン４１０１とユーザードメイン４２０１でその供給・要求情報をやり取りするＣＰＵ４００３に関する資源について、図５を用いて詳細に説明する。ただし以下の説明は一例であり、必ずしもこれだけに限るものではない。【００８９】
リアルタイムスケジューリングにおいては、大きく周期と計算時間という資源があり、それをどれくらいのコストでどれくらい割り当てるかが焦点となる。一般には周期は短いほど、計算時間は長いほど性能がよくなる。ただし、周期を短くすることはそれだけ頻繁にユーザードメイン４２０１割当の切替が発生することになるため、オーバーヘッドが増える。ここで、デフォルト設定として、計算時間の下限Ｃ０５００１と周期の上限ρ０５００２を設けることで、最低割当基準を設けることとする。【００９０】
実際に割り当てられる計算時間をＣ５００３、周期ρ５００４としたとき、
ｘ１＝ρ０−ρ
ｘ２＝Ｃ−Ｃ０
という変数変換をすれば、
０≦ｘ１≦ρ０−Ｃ０
０≦ｘ２≦ρ０−ｘ１−Ｃ０
であり、ｘ１、ｘ２の増加に対して、効用も増加するように定義することができる。以後、このｘ１、ｘ２を資源として取り扱う。なお、一般に三つ以上の資源がある場合は成分数を拡張してｘ＝（ｘ１，…，ｘｎ）のようにｎ次元ベクトルとして取り扱うことが可能である。【００９１】
この資源ベクトルｘ＝（ｘ１，ｘ２）に対して、管理ドメイン４１０１およびユーザードメイン４２０１での最適化について具体的に説明する。【００９２】
管理ドメイン４１０１では、各ユーザードメイン４２０１、すなわちＤｏｍＵ［ｄ］（ｄ＝１，２，…，Ｄ）からの資源要求情報ζｄと内部状態θから、設定パラメタαおよび供給情報ｐｄを効用最大化するように決める。まず、供給情報ｐｄは、資源ｘ＝（ｘ１，ｘ２）に対する単位量あたりのコスト（価格ベクトル）であるとする。資源要求情報ζｄは、前回に提示した価格ベクトルに対するＤｏｍＵ［ｄ］からの要求量、つまりは資源需要であるとする。なるべく、少ないオーバーヘッド、資源量で可能な限り資源を要求しているＤｏｍＵに資源をより多く割り当てるためには、この需要量とそれに必要な資源量・オーバーヘッドに起因するコストをバランスさせることが管理ドメイン４１０１の最適化の目的となる。この目的のために、効用関数を以下のように定義する。
ｕ＝Σｄ∈Ｄ（ｘｄＴｐｄ−ｘｄＴｗ）      …（５）【００９３】
ここで、ｘＴの上付き添え字Ｔは転置ベクトルを意味し、ｗはコストベクトル、Ｄ＝｛１，…，Ｄ｝はドメインのインデックス集合（Ｄ個のＤｏｍＵがあるとする）である。これは、たとえば周期を短くする毎に線形にオーバーヘッドとしてコストがかかることを示す。ここではオーバーヘッドの項を線形関数として表現したが、必ずしもこの限りではない。【００９４】
ｐｄ＝φｄ（ｘｄ｜ｈｄ）は、ＤｏｍＵ［ｄ］の需要関数の逆関数であり、ＤｏｍＵ［ｄ］が価格に対してどのような要求ζｄを出したかの履歴情報ｈｄに依存して関数系が決まる。更にｘｄＴｐｄは、ＤｏｍＵ［ｄ］に対して資源を供給することによって得られる利益をあらわし、一般には同じ価格に対して要求量が多いほどｐｄ＝φｄ（ｘｄ｜ｈｄ）も大きい値になる。このため、効用を最適化するには、定性的にはより多い要求を出したユーザードメイン４２０１により多くの資源が割り当てられる。【００９５】
ここで、設定可能範囲は、割り当てる周期、スライスが上記の上限周期ρ０以下、下限時間Ｃ０以上であり、かつスケジュール可能な範囲でなくてはならない。そのため、
０≦ｘ１≦ρ０−Ｃ０
０≦ｘ２≦ρ０−ｘ１−Ｃ０
ｍｉｎ｛ｆｄ｜ｆｄ∈Ｆ，Σｄ∈Ｄ［ｆｍａｘ（Ｃ０＋ｘｄ２）／ｆｄ（ρ０−ｘｄ１）］≦１｝
という制約条件によって決まる設定可能範囲Ｘが上記の効用最大化に課されることになる。ここで最後の制約式はスケジューラビリティを示す式であり、ｆｄはドメインｄに対する設定周波数、ｆｍａｘは最大周波数、Ｆは可能な周波数設定範囲である。つまり、可能な周波数設定範囲の中で可能な限り小さい周波数で、スケジューラビリティを満たすようなｘｄ＝（ｘｄ１，ｘｄ２）∈Ｘである必要があることを意味する。【００９６】
ここで、実際に最適化を行う上ではｐｄ＝φｄ（ｘｄ｜ｈｄ）の形を決めなくてはならない。一般に管理ドメイン４１０１はこの関数系を知らないため、提示価格とそれに対する要求の履歴から推測することになる。一例としては重回帰分析によって、誤差の二乗和を最低にする線形関数によって近似することができるが、これに限るものではない。たとえば、資源要求情報ζｄを提示価格に対して最適化を行って結果の資源要求量とするかわりに、ユーザードメイン４２０１と管理ドメイン４１０１の間で関数系を決めておいて、その係数情報をやりとりするなどの方法も可能である。この重回帰分析は、第一の実施例で説明した需要推定手段１００４に相当する機能であり、本実施例ではその機能は最適化手段４１０６の中に含まれている。【００９７】
重回帰分析によって、
ｐｄ＝｛Ｈｄ（ｈｄ）ｘｄ｝／２＋ｂｄ（ｈｄ）      …（６）と推定したとすると、効用関数はｘｄに関して凹関数であり、かつ制約条件によって決まる設定可能領域Ｘは凸集合であるため必ず最適点が存在することになる。最適な資源配分｛ｘｄ＊｝が決まると、上記のｐｄ＝φｄ（ｘｄ｜ｈｄ）から供給情報である設定価格ベクトルｐｄも決まる。管理ドメイン４１０１は、｛ｘｄ＊｝を反映する各ユーザードメイン４２０１のスケジューラ設定パラメタに変換し、各ＤｏｍＵ［ｄ］に対してｐｄ（とｘｄ）を通知する。【００９８】
一方で、ユーザードメイン４２０１では、資源供給情報ｐをもとに現在の資源取得コストを計算し、資源取得可能領域Ξを超えない範囲で、タスクのＱｏＳから決まる効用を最大化する資源要求ζを計算する（以下ＤｏｍＵ番号のｄは省略する）。【００９９】
効用はたとえば、
ｕ＝Σｉ∈ＴδｉＱｉ（ｒｉ，Ｌｉ）      …（７）
ただし、Σｉ∈Ｔδｉ＝１
のように各タスクｉのＱｏＳであるＱｉ（ｒｉ，Ｌｉ）の重みδｉをかけたものの和で定義できるが、必ずしもこの限りではない。ここで、Ｔ＝｛１，…，Ｔ｝はタスクのインデックス集合である。δｉは起動時にコンフィグレーションによって決まる静的な内部状態として各ユーザードメイン４２０１が保有する情報で、各タスクの優先度によって決まる。Ｑｉ（ｒｉ，Ｌｉ）は、ｒｉ＝｛ｒｉ１，ｒｉ２｝（タスクｉに割り当てられた資源ベクトル）とＬｉ（現在のタスクｉの負荷量。たとえば処理数など）の関数である。【０１００】
設定可能領域Ξは、以下で定義される。
０≦ｒｉ１≦ζ１
０≦ｒｉ２
Σｉ∈Ｔ  ｒｉ２＝ζ２≦ρ０−Ｃ０−ζ１
ｐ１ζ１＋ｐ２ζ２≦Ｂ【０１０１】
ｒｉ１は、タスクｉに割り当てられる周期であるため、ユーザードメイン４２０１が資源要求として管理ドメイン４１０１に発行するζ１は全タスクの最大値でなくてはならない。また、ｒｉ２は、その和が必要な計算時間であり、それが資源要求ζ２になる。さらに、ユーザードメイン４２０１間での優先度を反映するために、バジェットＢを制約式に加え、資源取得コストの上限を与える。もし、ゲストＯＳがｅｄｆスケジューラを採用していた場合は、さらに、
Σｉ∈Ｔ［（Ｃ０＋ｒｉ２）／（ρ０−ｒｉ１）］≦１
という制約式も加わることになる。【０１０２】
ユーザードメイン４２０１では、この設定可能領域Ξ内で効用を最大化する資源分配｛ｒｉ｝ｉ∈Ｔおよびそこから決まる資源要求ζを計算する。（Ｂ，ρ０，Ｃ０）は、静的に与えられ、Ｌｉやｐは動的に変化する。特にｐは一般には他のユーザードメイン４２０１がどういう要求を出したかにも依存し、他のユーザードメイン４２０１に比べ要求が多ければより資源が割り当てられることになる。また、一般にｐは要求ζが大きい場合には増加し、小さい場合は減少する。【０１０３】
ＱｏＳを決めるＱｉ（ｒｉ，Ｌｉ）の形は様々な形がありうるが、一般にはその直感的意味を考えると、Ｌｉに対して単調減少関数であり、ｒｉに関して単調増加関数である。設定可能領域Ξが凸集合であることから、Ｑｉ（ｒｉ，Ｌｉ）の形がΞ内で凹関数であれば、必ず最適点が存在する。【０１０４】
図６を参照すると、管理ドメイン（Ｄｏｍ０）４１０１とユーザードメイン（ＤｏｍＵ）４２０１がそれぞれ上記の最適化を行いながら資源供給、要求情報を授受することを示している。管理ドメイン４１０１、ユーザードメイン４２０１の場合に対してそれぞれ上記の効用関数できまる効用の等高線６００１および６１０１があり、管理ドメイン４１０１、ユーザードメイン４２０１は設定可能領域６００２および６１０２の中で最大点を探索する。その結果の最適設定をもとに、管理ドメイン４１０１は、ユーザードメイン４２０１に資源供給情報を、ユーザードメイン４２０１から管理ドメイン４１０１へは、資源要求情報を送信し合い、動的にお互いの最適点へと追随する。各ユーザードメイン４２０１内のアプリケーションの変動は、このメッセージのやり取りを介して伝わる。このため、ユーザードメイン４２０１の細部を見ずに、仮想化のアーキテクチャに添った形で最適化を行い、上述の収束条件を満たしていれば全体最適点に自律的に漸近していくことが可能となる。
【実施例３】
【０１０５】
次に、本発明の第三の実施例について図面を用いて詳細に説明する。【０１０６】
図７を参照すると、本実施例にかかる仮想計算機システムは、Ｘｅｎに代表されるＩ／Ｏ仮想化アーキテクチャにおいて、Ｉ／Ｏデバイス７００３を第１のユーザードメイン（DomU[1]）７１０１の仮想Ｉ／Ｏデバイス（VI/O）７１０２および第２のユーザードメイン（DomU[2]）７２０１の仮想Ｉ／Ｏデバイス７２０２に対して最適割当てを行う例であり、管理ドメイン（Ｄｏｍ０）７００１と、第１、第２のユーザードメイン７１０１、７２０１から構成される。ここで、ユーザードメインの数は、一般には２個以上の複数持ちうる。【０１０７】
Ｘｅｎに代表されるＩ／Ｏ仮想化方式は、デバイスにアクセスを許された特権ドメインに、各ユーザードメインのＩ／Ｏアクセスを仲介させることでＩ／Ｏデバイスの共有、プロテクションを実現している。図７では、特権ドメインは管理ドメイン（Dom0）であり、Ｉ／Ｏデバイス７００３を管理し、直接アクセスできる唯一のドメインである。ユーザードメインは、第１、第２のユーザードメイン７１０１、７２０１である。管理ドメイン７００１は、Ｉ／Ｏデバイス７００３にアクセスするネイティブドライバ（Native Driver）７００４と、ユーザードメインからの転送処理を行うバックエンドドライバ（Backend Driver）７００５を有する。第１のユーザードメイン７１０１は、バックエンドドライバ７００５とデータ転送チャネルで接続されたフロントエンドドライバ（Frontend Driver）７１０３を有し、第１のユーザードメイン７１０１のゲストＯＳはタスクからの仮想Ｉ／Ｏデバイス７１０２へのアクセス要求に対し、フロントエンドドライバ７１０３を用いて命令を処理する。フロントエンドドライバ７１０３は、データ転送チャネルを通してバックエンドドライバ７００５へ処理を転送し、バックエンドドライバ７００５はさらに、ネイティブドライバ７００４に処理を転送することでＩ／Ｏアクセスを実現する。【０１０８】
第１のユーザードメイン７２０１に関しても同様であり、バックエンドドライバ７００５が各ユーザードメインの処理をプロクシすることでＩ／Ｏデバイスの仮想化を実現している。ここで、バックエンドドライバ７００５は、その内部にキュー管理手段７００６を有し、複数のユーザードメインからのＩ／Ｏアクセスをいったんキューに保存し、そのキューを制御することで、Ｉ／Ｏデバイスの資源割当（スループットなど）の制御を行う。【０１０９】
管理ドメインエージェント（Dom0_Agent）７００７は、上記の第一の実施例や第二の実施例に記載の管理ドメイン（Dom0）内管理のための機能を有し、たとえば第一の実施例に記載の物理資源監視手段、最適化手段、データ処理部、履歴、メッセージ処理部、資源制御部、インターフェースなどを有するソフトウェアプログラムである。同様に第１のユーザードメインエージェント（DomU[1]_Agent）７１０６および第２のユーザードメインエージェント（DomU[2]_Agent）７２０６は、ユーザードメイン（DomU）内の管理のための機能を有し、たとえば、第一の実施例に記載の資源制御部、メッセージ処理部、最適化手段、アプリケーション性能監視手段、インターフェース、データ処理部、履歴などを有する。【０１１０】
管理ドメインエージェント７００７は、第１のユーザードメインエージェント７１０６および第２のユーザードメインエージェント７２０６と資源供給情報および資源要求情報をやり取りし、各々のドメインの効用を最大化する資源割当（資源設定パラメタ設定値）、資源供給もしくは要求情報を計算する。ここではＩ／Ｏデバイスの割当であり、たとえば処理スループットや処理遅延であるが、必ずしもこれに限るものではない。管理ドメインエージェント７００７は、電力７００２と、キューから出力される処理を監視することで、実際のユーザードメインへの割当や性能を監視し、内部状態の情報、ユーザードメインからの資源要求情報を最適化した結果をキュー管理手段７００６を通して反映させ、また資源供給情報をユーザードメインに通知する。【０１１１】
第１のユーザードメイン７１０１においては、タスク７１０４からの仮想Ｉ／Ｏデバイス７１０２への処理要求をフロントエンドドライバ７１０３を直接アクセスして処理する代わりに、キュー管理手段７１０５に転送することで、処理スループットに代表される資源割当を行う（以下、第２のユーザードメイン７２０１内でも動作は同じであるため説明を省略する）。第１のユーザードメインエージェント７１０６は、キュー管理手段７１０５の設定を制御することでその資源割当を変化させることが可能である。第１のユーザードメインエージェント７１０６は、タスク７１０４の実際の処理状況を監視することで、性能情報を取得し、第二の実施例に記載の方法と同様の方法で、第１のユーザードメイン７１０１の効用を最大化するように、キュー管理手段７１０５の設定値と資源要求情報を演算する。この処理を第一の実施例や第二の実施例に記載のフローと同様に各ドメインで実行することで、全体最適に漸近するように系を設計することが可能である。また、第二の実施例に記載のシステムマネージャ４３０１を管理ドメインエージェント７００７、第１のユーザードメインエージェント７１０６、第２のユーザードメインエージェント７２０６と接続することで、動的に設定を変更したり、状態を監視したりすることが可能である。【０１１２】
第二の実施例と第三の実施例の両者を合わせて、ＣＰＵ資源とＩ／Ｏデバイス両者について仮想化することも可能である。【０１１３】
また、本実施例においてはＸｅｎに代表される仮想化手法を例示したが、Ｘｅｎ以外の仮想化手法においても基本的に同様の処理が行え、特定の仮想化手法に限定されるものではない。【０１１４】
以上、実施の形態及び実施例を参照して本願発明を説明したが、本願発明は上記実施の形態及び実施例に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解し得る様々な変更をすることができる。【０１１５】
この出願は、２００７年４月１３日に出願された日本出願特願２００７−１０５７６２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【０１１６】
本発明によれば、仮想化された計算機システムにおける公平で資源利用効率のよい資源割当を行うＩＴ／ＮＷ（情報技術／ネットワーク）システム構成および管理といった用途に適用できる。
【図１】
2008132924.tif 000003
【図２】
2008132924.tif 000004
【図３】
2008132924.tif 000005
【図４】
2008132924.tif 000006
【図５】
2008132924.tif 000007
【図６】
2008132924.tif 000008
【図７】
2008132924.tif 000009
【図８】
2008132924.tif 000010
【手続補正書】
【提出日】平成20年10月29日(2008.10.29)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段と、
前記仮想化手段を制御する管理手段とを有し、
前記複数の仮想装置は、前記管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信し、
前記管理手段は、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信し、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を繰り返し交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、両演算結果が所定の範囲内に収束し、前記物理資源の動的な資源割当てを行うことを特徴とする仮想計算機システム。
【請求項２】
請求項１に記載の仮想計算機システムにおいて、
前記仮想化手段は、仮想マシンモニタ（Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｍｏｎｉｔｏｒ）であり、
前記複数の仮想装置は、前記物理資源の時分割多重による割り当てによって提供される仮想資源と、前記仮想資源上で動作するオペレーティングシステムおよびアプリケーションプログラムを有することを特徴とする仮想計算機システム。
【請求項３】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、ＣＰＵおよびＩ／Ｏデバイスの少なくとも１つを含み、
前記複数の仮想装置は、前記物理資源を時分割多重的に共有することを特徴とする仮想計算機システム。
【請求項４】
請求項１に記載の仮想計算機システムにおいて、
前記アプリケーションは、コンピュータ上で動作するソフトウェアプログラムであり、前記アプリケーションの性能は、前記仮想化手段により供給される前記物理資源の資源量とその資源種類とに依存するものであることを特徴とする仮想計算機システム。
【請求項５】
請求項１に記載の仮想計算機システムにおいて、
前記管理手段は、前記物理資源を設定する制御および前記仮想装置への資源割り当てを行う制御を含む特権命令を実行することを特徴とする仮想計算機システム。
【請求項６】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、前記アプリケーションの詳細情報を用いるものであり、
前記アプリケーションの詳細情報は、負荷と、割当て資源量と、優先度を含む管理ポリシーと、処理遅延と、処理スループットとの少なくとも１つを含む性能情報であることを特徴とする仮想計算機システム。
【請求項７】
請求項１に記載の仮想計算機システムにおいて、
前記複数の仮想装置は、自仮想装置内のアプリケーションプログラムの詳細情報を管理し、自仮想装置内で動作するオペレーティングシステムに対してアプリケーションプログラムへの資源割当て制御を指示することを特徴とする仮想計算機システム。
【請求項８】
請求項１に記載の仮想計算機システムにおいて、
前記資源供給情報は、前記仮想化手段が前記仮想装置に割り当てる資源に関して、その資源利用コストと資源割当量に関する情報であることを特徴とする仮想計算機システム。
【請求項９】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、あらかじめ設定された第１の管理ポリシー情報を用いるものであり、
前記第１の管理ポリシー情報は、前記アプリケーションの優先度と、その優先度に依存する資源取得上限を示す指標であることを特徴とする仮想計算機システム。
【請求項１０】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、あらかじめ設定された第２の管理ポリシー情報を用いるものであり、
前記第２の管理ポリシー情報は、前記各仮想装置の優先度と、資源利用コストに関する情報と、資源割当量の上限および下限を含む設定可能範囲との少なくとも１つを含む情報であることを特徴とする仮想計算機システム。
【請求項１１】
請求項１に記載の仮想計算機システムにおいて、
前記アプリケーションへの資源割当て設定は、前記仮想装置内で動作するオペレーティングシステムが前記仮想資源を各アプリケーションプログラムに関連するプロセスおよびスレッドに対して資源利用割当てをスケジューリングすることにより行うことを特徴とする仮想計算機システム。
【請求項１２】
請求項１に記載の仮想計算機システムにおいて、
前記資源要求情報は、最適資源量に基づく前記仮想資源の割当量に関する要求情報であることを特徴とする仮想計算機システム。
【請求項１３】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記物理資源の運用状態情報を用いるものであり、
前記物理資源の運用状態情報は、前記物理資源の現在の設定情報と、前記物理資源を制御するプログラムの制御パラメタ値と、消費電力との少なくとも１つを含む前記物理資源の運用状態を記述する情報であることを特徴とする仮想計算機システム。
【請求項１４】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記仮想装置への資源割当て情報の履歴を用いるものであり、
前記仮想装置への資源割当て情報の履歴は、現在までに最適化の結果行った仮想資源の資源割当てと、それに対する前記複数の仮想装置からの資源要求情報の履歴であることを特徴とする仮想計算機システム。
【請求項１５】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、あらかじめ設定された第２の管理ポリシー情報を用いるものであり、
前記第２の管理ポリシー情報は、前記物理資源の利用に対するコスト指標、前記各仮想装置の優先度、前記各仮想装置に割り当てる資源の上限および下限を示す設定可能範囲を有し、静的に設定される最適化および資源割当てに関する情報であることを特徴とする仮想計算機システム。
【請求項１６】
請求項１に記載の仮想計算機システムにおいて、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、両演算結果が所定の範囲内に収束することを特徴とする仮想計算機システム。
【請求項１７】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源の動的な資源割当ては、前記物理資源の設定パラメタの制御により所望のアプリケーション性能を低消費電力で実現するように行うことを特徴とする仮想計算機システム。
【請求項１８】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算と前記第２の最適化演算は、周期的に、または外部プログラムからの指示を契機に、あるいは過渡的に変化する現在の管理情報の分析結果を契機に、自律的に行われることを特徴とする仮想計算機システム。
【請求項１９】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、ＣＰＵを含み、
前記物理資源の資源割当ては、前記仮想化手段がリアルタイムスケジューリングを採用している場合に、前記複数の仮想装置に割り当てる前記ＣＰＵの周期と計算時間を変更することで行うことを特徴とする仮想化計算機システム。
【請求項２０】
請求項１に記載の仮想計算機システムにおいて、
前記物理資源は、Ｉ／Ｏデバイスを含み、
前記物理資源の資源割当ては、前記複数の仮想装置からのＩ／Ｏデバイス処理をキューイングし、そのキューを管理することで行うことを特徴とする仮想化計算機システム。
【請求項２１】
請求項１に記載の仮想計算機システムにおいて、
前記第２の最適化演算は、前記資源要求情報に基づく資源要求度合いに応じたゲインと資源割当てのコストとで規定される定量的な効用関数を最大化し、あらかじめ設定された第１の管理ポリシー情報に基づく設定可能範囲内で前記仮想装置への資源割当て設定を行うものであることを特徴とする仮想計算機システム。
【請求項２２】
請求項１に記載の仮想計算機システムにおいて、
前記第１の最適化演算は、前記アプリケーションの性能情報によって決定される定量的な効用関数をあらかじめ設定された第１の管理ポリシー情報に基づく設定可能範囲内で最大化するように前記アプリケーションへの資源割当て設定を行うものであることを特徴とする仮想計算機システム。
【請求項２３】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムの最適化方法であって、
前記複数の仮想装置が、前記仮想化手段を制御する管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信し、
前記管理手段が、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信し、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を繰り返し交換しながら、前記第１の最適化演算と前記第２の最適化演算とを実行することにより、両演算結果が所定の範囲内に収束し、前記物理資源の動的な資源割当てを行うことを特徴とする仮想計算機システムの最適化方法。
【請求項２４】
計算機の物理資源を共有してアプリケーションを実行する複数の仮想装置と、
前記複数の仮想装置を管理する仮想化手段とを有する仮想計算機システムの最適化プログラムであって、
コンピュータに、
前記複数の仮想装置が、前記仮想化手段を制御する管理手段からの資源供給情報を用いた第１の最適化演算により前記アプリケーションへの前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源要求情報を前記管理手段に対して送信するステップと、
前記管理手段が、前記複数の仮想装置からの資源要求情報を用いた第２の最適化演算により前記複数の仮想装置への前記物理資源の資源割当て設定を行い、その資源割当て設定に対応する資源供給情報を前記複数の仮想装置に対して送信するステップと、
前記複数の仮想装置と前記管理手段との間で前記資源供給情報および前記資源要求情報を繰り返し交換しながら、前記第１の最適化演算と前記第２の最化演算とを実行することにより、両演算結果が所定の範囲内に収束し、前記物理資源の動的な資源割当てを行うステップとを実行させることを特徴とする仮想計算機システムの最適化プログラム。
【請求項２５】
請求項１から２１のいずれか１項に記載の仮想計算機システムにおいて、
前記資源供給情報は、資源利用コストと資源割当量であることを特徴とする仮想計算機システム。
【国際調査報告】
2008132924.tif 000011
2008132924.tif 000012
2008132924.tif 000013
2008132924.tif 000014
2008132924.tif 000015
2008132924.tif 000016
2008132924.tif 000017