(57)【特許請求の範囲】
【請求項１】
複数の仮想マシンに対して動的にリソースを割当てる方法であって、
（１）仮想マシン活動モニタが、ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタするステップと、
（２）アプリケーション優先順位モジュールが、前記アプリケーションのモニタされた活動に基づいて、各仮想マシン中の前記アプリケーションの優先順位を判定するステップと、
（３）仮想マシン優先度モジュールが、各仮想マシン中の前記アプリケーションの判定された優先順位に基づいて、各仮想マシンの優先度を設定するステップと、
（４）リソース・アービタが、各仮想マシンの前記優先度に基づいて、前記ホスト・サーバによって各仮想マシンに割当てられるリソースを動的に調整するステップと、
を含み、
前記ステップ（３）は、前記アプリケーションの作動状態が変化した場合に、仮想マシン優先度モジュールが、前記アプリケーションの使用するソケットを特定し、前記アプリケーションの優先順位を判定して前記アプリケーションが使用するソケットの優先度を算定し、前記仮想マシンの優先度を再設定するステップを含み、
前記ステップ（４）は、前記リソース・アービタが、前記再設定されたソケットの優先度に従って、ネットワーク処理容量の割当てをリアルタイムで調整するステップを含み、
前記ネットワーク処理容量の割当てをリアルタイムで調整するステップは、
（１）ホスト・サーバが通信するデータ・パケットをインターセプトするステップと、
（２）前記データ・パケットがホスト・サーバのいずれのソケットに属するか判定するステップと、
（３）前記データ・パケットが属するソケットが実際に消費するネットワーク処理量が、前記ソケットが割り当てられたアプリケーションに割り当てられているネットワーク処理容量を超えない場合は、前記データ・パケットは受入れられ、前記ネットワーク処理量が、前記割り当てられているネットワーク処理容量を超える場合には、前記データ・パケットは待ち行列で待つステップと
を含む、方法。
【請求項２】
前記仮想マシン活動モニタは、前記仮想マシン中で実行されているアプリケーションで使われるソケットをモニタするネットワーク活動モニタである、請求項１に記載の方法。
【請求項３】
前記仮想マシンの優先度を再設定するステップは、
前記仮想マシン優先度モジュールが、仮想マシン群のソケットを前記ホスト・サーバのソケット中にマップして、各作動中のアプリケーションによって占められた前記ホスト・サーバの前記ソケットを得、次いでアプリケーション・ウェイト・テーブルを調べ、各作動中のアプリケーションの前記優先順位を判定して前記ホスト・サーバの各様ソケットの優先度を算定し、前記仮想マシンの優先度を再設定するステップをさらに含む、請求項１または２に記載の方法。
【請求項４】
複数の仮想マシンに対して動的にリソースを割当てる装置であって、
ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタする、仮想マシン中の仮想マシン活動モニタと、
前記アプリケーションのモニタされた活動に基づいて、各仮想マシン中の前記アプリケーションの優先順位を判定する、アプリケーション優先順位モジュールと、
各仮想マシン中の前記アプリケーションの判定された優先順位に基づいて、各仮想マシンの優先度を設定する、前記ホスト・サーバ内の仮想マシン優先度モジュールと、
各仮想マシンの前記優先度に従って、各仮想マシンに割当てられるリソースを動的に調整する、前記ホスト・サーバ内のリソース・アービタと、
を含み、
前記仮想マシン優先度モジュールは、前記アプリケーションの作動状態が変化した場合に、前記アプリケーションの使用するソケットを特定し、前記アプリケーションの優先順位を判定して前記アプリケーションが使用するソケットの優先度を算定し、前記仮想マシンの優先度を再設定し、
前記リソース・アービタは、前記再設定されたソケットの優先度に従って、ネットワーク処理容量の割当てをリアルタイムで調整し、
前記ネットワーク処理容量の割当てのリアルタイムの調整は、
（１）ホスト・サーバが通信するデータ・パケットをインターセプトするアクションと、
（２）前記データ・パケットがいずれのホスト・サーバ・ソケットに属するか判定するアクションと、
（３）前記データ・パケットが属するソケットが実際に消費するネットワーク処理量が、前記ソケットが割り当てられたアプリケーションに割り当てられているネットワーク処理容量を超えない場合は、前記データ・パケットは受入れられ、前記ネットワーク処理量が、前記割り当てられているネットワーク処理容量を超える場合には、前記データ・パケットは待ち行列で待つアクションと
を含む、装置。
【請求項５】
前記仮想マシン活動モニタはネットワーク活動モニタである、請求項４に記載の装置。
【請求項６】
前記仮想マシン優先度モジュールは、仮想マシン群のソケットを前記ホスト・サーバのソケット中にマップして、各作動中のアプリケーションによって占められた前記ホスト・サーバの前記ソケットを得、次いでアプリケーション・ウェイト・テーブルを調べて各作動中のアプリケーションの前記優先順位を判定して前記ホスト・サーバの各様ソケットの優先度を算定し、前記仮想マシンの前記優先度を再設定する、請求項４または５に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数の仮想マシン（ＶＭ：ｖｉｒｔｕａｌ ｍａｃｈｉｎｅ）に対して動的にリソースを割当てる方法及び装置に関する。
【背景技術】
【０００２】
今日のＩＴ産業では、仮想化は広く使われる技術となっている。仮想化技術は、顧客の所有コストを低減しアプリケーションの信頼性及び柔軟性を向上して、大サーバ上に複数の仮想マシンを集約する方法を提供する。これにより、顧客は、個々の作業負荷の急上昇に対する過剰装備を減らすことができる。さらに、仮想化技術は、重要なアプリケーション群を分離し、異なる仮想マシンで実行されている相異なるアプリケーション群がオペレーション・システムを共用しないようにするのに役立つ。従って、あるアプリケーションが引き起こした重大な不具合は、他のどのアプリケーションにも影響しない。このことは、今日の途切れなく利用されているビジネス環境では非常に重要なことである。
【０００３】
ＩＢＭ（Ｒ）は、数々の技術的解決法に仮想化技術を採用してきた。図１は、現行のＸｅｎ（ゼン）仮想マシンのシステム・ブロック図を示す。各Ｘｅｎホスト・プラットフォーム中にいくつかのＸｅｎ仮想マシンがある。各仮想マシン中に、ＩＢＭウエブスフェア（Ｒ）・アプリケーション・サーバ（ＷＡＳ：ＷｅｂｓｐｈｅｒｅＡｐｐｌｉｃａｔｉｏｎ Ｓｅｒｖｅｒ）が実行されており、いくつかのビジネス活動が異なった仮想マシンに分配されている。このようなシナリオでは、各種ビジネス活動は類別され分離されている。
【０００４】
現行の仮想化技術は各様のビジネス活動を類別し分離することができるが、ホスト・サーバは、各仮想マシンのリアルタイムのリソース要求変化を感知することはできない。従来技術においては、ＣＰＵ及びメモリなどホスト・サーバのリソースは、あらかじめ定めた固定スキームによって各仮想マシンに割当てられる。例えば、ある仮想マシンが生成されたとき、該マシンにはある特定量のリソースが割当てられ、通常、該仮想マシンのライフサイクルの間このリソース割当は変更されない。しかしながら、こういった事前設定のリソース割当てスキームは、一部のアプリケーションにはそぐわない。
【発明の開示】
【発明が解決しようとする課題】
【０００５】
図２は、従来技術による、異なった種類のサービスを包含する電気通信用集中型統合ホスト・サーバを示し、ウェブ・サーバ及びデータベース・サービスは、トランザクション・ベースのサービスであり、これらは、ある程度の遅延には耐えられるがトランザクションの不具合には敏感である。他方、会議用サーバ及びＳＩＰサーバは、リアルタイムのマルチメディア・サービスであり、ある程度のデータ・ロスには耐えられるがデータ遅延には敏感である。従って、リソース消費の面で、会議用サービスは、サービスの品質（ＱｏＳ：Ｑｕａｌｉｔｙｏｆ Ｓｅｒｖｉｃｅ）を保証するためより高い優先度を必要とする。だが、会議活動が終了したとき、会議用サーバは、リソースをホスト・サーバに解放し、より優先度の低いサービスをサポートさせるべきである。しかしながら、現行の仮想化技術実行は、この種の動的なリソース割当てスキームに対応していない。
【課題を解決するための手段】
【０００６】
本発明の目的は、複数の仮想マシンに対して動的にリソースを割当てるための方法及び装置を提供することである。
【０００７】
本発明によれば、複数の仮想マシンに対して動的にリソースを割当てる方法は、
（１）ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタするステップと、
（２）モニタされたアプリケーションの活動に基づいて、各仮想マシン中のアプリケーションの優先順位を判定するステップと、
（３）判定された、各仮想マシン中のアプリケーションの優先順位に基づいて、各仮想マシンの優先度を設定するステップと、
（４）各仮想マシンの優先度に基づいて、ホスト・サーバが各仮想マシンに割当てるリソースを動的に調整するステップと、
を含む。
【０００８】
本発明によれば、複数の仮想マシンに対して動的にリソースを割当てるための装置は、
ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタする、各仮想マシン中の仮想マシン活動モニタと、
モニタされたアプリケーションの活動に基づいて各仮想マシン中のアプリケーションの優先順位を判定する、アプリケーション優先順位モジュールと、
判定された、各仮想マシン中のアプリケーションの優先順位に基づいて各仮想マシンの優先度を設定する、ホスト・サーバ内の仮想マシン優先度モジュールと、
各仮想マシンの優先度に従って、各仮想マシンに割当てられるリソースを動的に調整する、ホスト・サーバ内のリソース・アービタと、
を含む。
【０００９】
本発明によれば、作動中のアプリケーションのリアルタイム・リソース要求に従って、ホスト・サーバのリソースを各仮想マシンに動的に割当てることができる。アプリケーションの優先順位を設定することによって、各様の仮想マシンのアプリケーションが必要とするリソースを、ホスト・サーバにおいて相互調整することができる。
【００１０】
加えて、本発明は、ホスト・サーバのリソース利用率を向上する。リソースがオン・デマンド方式で割当てられるので、各様の仮想マシンで実行されているアプリケーション群により費消されるリソースがバランスされる。非作動中のアプリケーションは、そのリソースを解放して、他の作動中のアプリケーションをサポートすることができる。
【００１１】
加えて、本発明によるリソース割当てスキームは、アプリケーション及び仮想化の分離性に影響を与えることがなく、アプリケーションを修正する必要がない。各種アプリケーション群は、ホスト・サーバにおいてリソースの折り合いをつけることができ、なおかつ、アプリケーションの分離性の特質を保持することができる。
【発明を実施するための最良の形態】
【００１２】
Ｘｅｎホスト・サーバを使って実現された、複数の仮想マシンに対して動的にリソースを割当てる方法の例が、本発明の好適な実施形態に示されている。図３は、Ｘｅｎホスト・サーバにおける、各アプリケーションの優先順位に基づいた仮想マシンの優先度設定を示す概略図である。図３に示されるように、リアルタイム・マルチメディア・アプリケーションは最高の優先順位を有し、ウェブ・サーバはより高い優先順位を有し、バックアップ・アプリケーションは最低の優先順位を有する。ある特定の実施形態において、各様アプリケーションの活動は、優先順位設定のためそのビジネス要件に従ってランク付けされる。これらアプリケーションの優先順位は、前もってアプリケーション・ウェイト・テーブルに設定されており、システム管理責任者は、各種の要件に従って、各様のアプリケーションの優先順位を事前設定又は調整することができる。
【００１３】
図４は、本発明による、複数の仮想マシンに対して動的にリソースを割当てる装置のブロック図である。図４に示されるように、本発明による、複数の仮想マシンに対して動的にリソースを割当てる該装置は、各仮想マシン中で実行されている仮想マシン活動モニタと、仮想マシン中のアプリケーションの優先順位を設定するためのアプリケーション優先順位モジュールと、Ｘｅｎホスト・サーバ内の各仮想マシンの優先度を設定するための仮想マシン優先度モジュールと、仮想マシン優先度スケジューラと、リソース・アービタとを含む。
【００１４】
本発明の技術的解決法によれば、仮想マシン活動モニタは、ホスト・サーバ上で実行されている各仮想マシン内のアプリケーションの活動をモニタする。モニタされたアプリケーションの活動に基づき、アプリケーション優先順位モジュールは、該アプリケーション優先順位モジュール内に格納されたアプリケーション・ウェイト・テーブルを調べて、各仮想マシン中のアプリケーションの優先順位を判定する。該判定された各仮想マシン中のアプリケーションの優先順位に基づいて、仮想マシン優先度モジュールが各仮想マシンの優先度を設定する。リソース・アービタ(resource arbiter)は、各仮想マシンの優先度に従って各仮想マシンに割当てるリソースを動的に調整する。
【００１５】
次に、本発明による、複数の仮想マシンに対して動的にリソースを割当てる装置について、具体的な実施形態と併せ、図４を参照しながら説明する。
【００１６】
図４には、各仮想マシン内で実行される仮想マシン活動モニタが示されている。該仮想マシン活動モニタの機能は、ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタすることである。各アプリケーションの活動をモニタすることによって、各仮想マシンは、リアルタイムのリソース要求の概況を把握することになる。ある実施形態において、仮想マシンは、マイクロソフト（Ｒ）・ウィンドウズ（Ｒ）のタスク・マネージャを使って、実際に展開される各アプリケーションの活動をモニタすることができる。
【００１７】
なお、図３に示されたアプリケーション・ウェイト・テーブルは、図４に示されたアプリケーション優先順位モジュールに内蔵されており、図３に示された仮想マシン・リアルタイム・ウェイト・テーブルは、図４に示された仮想マシン優先度モジュールに内蔵されている。本発明において、仮想マシンンの優先度は、該仮想マシン中で実行されているアプリケーションの優先順位に基づいて設定することができる。
【００１８】
図４のブロック図において、リソース・アービタは、仮想マシン優先度モジュールとリアルタイムで通信することができる。一つの実施形態において、スレッド間通信技術及びプロセス間通信技法などのモジュール間通信技術を用いてリアルタイム通信を実現することができる。リソース・アービタの機能は、個々の仮想マシンの優先度に基づいて、ＣＰＵなどのリソースをそれら各様の仮想マシンに動的に割当てることである。リアルタイムの優先順位モニタ結果に従い、より高い優先順位の作動中のアプリケーションがより多くのリソースを得る。さらに、図４の仮想マシン優先度スケジューラの機能は、ホスト・サーバのリソース使用量に基づき、仮想マシン優先度モジュールを更新し、ホスト・サーバ上の各様の仮想マシンを管理するための、優先度スケジューリングを実行させることである。
【００１９】
本発明のある好適な実施形態において、前記のモジュール群は、図４に示すように、リアルタイムの通信を行い、例えばスレッド間通信技術又はプロセス間通信技術などのウィンドウズ（Ｒ）モジュール間通信技術を使って、これらモジュールの間で問合わせ又はレポートを送信することができる。
【００２０】
本発明において、複数の仮想マシンに対して動的にリソースを割当てる方法を開示し、
該方法は、
（１）ホスト・サーバ上で実行されている各仮想マシン中のアプリケーションの活動をモニタするステップと、
（２）モニタされたアプリケーションの活動に基づいて、各仮想マシン中のアプリケーションの優先順位を判定するステップと、
（３）判定された、各仮想マシン中のアプリケーションの優先順位に基づいて、各仮想マシンの優先度を設定するステップと、
（４）各仮想マシンの優先度に基づいて、ホスト・サーバが各仮想マシンに割当てるリソースを動的に調整するステップと、
を含む。
【００２１】
次に、前述の方法の具体的ステップを、図５を参照しながら説明する。
【００２２】
図５は、本発明による、複数の仮想マシンに対して動的にリソースを割当てる方法を示すフローチャートである。図５のフローチャートによれば、まず、ステップＳ２において、各仮想マシン中の仮想マシン活動モニタが、該仮想マシンの活動をモニタする。ステップＳ３において、モニタされたアプリケーションの活動に基づき、アプリケーション優先順位モジュールの点検によって、該アプリケーション優先順位モジュール内に格納されたアプリケーション・ウェイト・テーブルが調べられ、該アプリケーション優先順位モジュールが、各仮想マシン中で実行されているアプリケーションの優先順位を判定する。ステップＳ４において、仮想マシン優先度モジュールは、判定された、各仮想マシンのアプリケーションの優先順位に基づいて各仮想マシンの優先度を設定する。本発明の好適な実施形態において、仮想マシンの優先度は、当該仮想マシンの中で最高の優先順位を有するアプリケーションの優先順位に従って設定される。次いでステップＳ５において、ホスト・サーバ内のリソース・アービタが、各仮想マシンに対して設定された優先度に基づき、各仮想マシンに割当てるリソースを動的に調整する。
【００２３】
図６は、本発明によるリソース割当ての例を示す。この例において、Ｘｅｎホスト・サーバ上には３つの仮想マシンがあり、仮想マシン１では、バックアップ・アプリケーション及びマルチメディア・アプリケーションが実行されており、仮想マシン２ではウェブ・サーバ・アプリケーションが実行されており、仮想マシン３ではバックアップ・アプリケーションが実行されている。本発明のこの好適な実施形態において、リアルタイム・マルチメディア・アプリケーションは最高の優先順位を有し、バックアップ・アプリケーションは、最低の優先順位であり、ウェブ・サーバ・アプリケーションは、バックアップ・アプリケーションの優先順位よりも高く、リアルタイム・マルチメディア・アプリケーションよりは低い優先順位を有する。
【００２４】
ある実作動において、各仮想マシン中の仮想マシン活動モニタは、該仮想マシン中の作動中のアプリケーションをモニタする。各様のアプリケーションはそれら自体の挙動を有し、あるアプリケーションはある時点では作動状態であり、別の時点ではそのアプリケーションは作動していない。図６に示された仮想マシン１では、バックアップ・アプリケーションは作動していないが他のアプリケーションは作動中である。これら仮想マシンは、実行されるアプリケーションに従って優先度が設定され、仮想マシン１は優先度１にランクされ、仮想マシン２は優先度２にランクされ、仮想マシン３は、優先度３にランクされている。Ｘｅｎホスト・サーバは、各仮想マシンの優先度に従って該仮想マシンに割当てるリソースを調整し、仮想マシン１は、仮想マシン２及び３よりも多くのリソースを得ることになる。従って、実行中のマルチメディア・アプリケーションは、ウェブ・サーバ及びバックアップ・アプリケーションよりも多くのリソースを得る。
【００２５】
次に、図３〜５を参照しながら、本発明の好適な実施形態をさらに詳しく説明し、ホスト・サーバが、ＣＰＵリソースなどの資源を、どのように複数の仮想マシンに動的に割当てるのかについて具体的に示す。
【００２６】
この実施形態において、ホスト・サーバ上には３つの仮想マシンがあり、これら仮想マシンは、それぞれ事前設定された優先度１、２、３を有し、ホスト・サーバは、ウィンドウズ（Ｒ）・プラットフォームであると仮定する。この場合、各仮想マシンは、ホスト・サーバのアプリケーションであるとして取り扱うことができ、従って、さらに、ウィンドウズ（Ｒ）・オペレーティング・システムのプロセスとして取り扱うことができる。この実施形態で、仮想マシン活動モニタは、ウィンドウズ（Ｒ）・オペレーティング・システムのタスク・マネージャである。
【００２７】
具体的には、該好適な実施形態は以下のようなステップを有する。
【００２８】
（１）タスク・マネージャが、ホスト・サーバで実行されている各仮想マシン中のアプリケーションの活動をモニタする。
【００２９】
（２）モニタされたアプリケーションの活動に基づいて、アプリケーション優先順位モジュールが、その中に格納されたアプリケーション・ウェイト・テーブルを調べ、各仮想マシン中のアプリケーションの優先順位を判定する。各アプリケーションに対する事前設定された優先順位を包含する該アプリケーション・ウェイト・テーブルは、該アプリケーション優先順位モジュールに内蔵されている。ウェイトは事前設定されたパラメータであり、ＣＰＵの使用競合が生じたときに、どの仮想マシンがリソースを占有するかの優先順位を表す。
【００３０】
（３）各様のアプリケーションはそれら自体の挙動を有するので、あるアプリケーションは、ある時点では作動していて別の時点では作動していない。例えば該好適な実施形態において、システムが立ち上げられた時点では、マルチメディア・アプリケーションは優先度１を有し作動はしていない。トリガされると、マルチメディア・アプリケーションは作動状態に入り、このとき、ホスト・サーバは、該マルチメディア・アプリケーションに割当てるリソースを調整することが必要となる。
【００３１】
本発明によれば、ある仮想マシン中のアプリケーションの作動状態が変化したとき、タスク・マネージャは、その変化を、ホスト・サーバ内の仮想マシン優先度モジュールにレポートすることになる。
【００３２】
（４）仮想マシン優先度モジュールは、判定された、各仮想マシン中のアプリケーションの優先順位に基づいて、各仮想マシンの優先度を設定する。具体的には、仮想マシン優先度モジュールは、作動状態変化レポートを受理したとき、該モジュールがアプリケーション・ウェイト・テーブルを調べ、各アプリケーションの優先順位を判定し、次いで、判定されたアプリケーションの優先順位に基づき各仮想マシンの優先度を計算し、各仮想マシンの優先度を再設定する。
【００３３】
（５）本発明において、仮想マシン優先度モジュールは、リアルタイムでリソース・アービタと通信することができ、しかして、仮想マシン優先度モジュールは、再設定された各仮想マシンの優先度をリソース・アービタに送信することができる。
【００３４】
（６）各仮想マシンの再設定された優先度に基づいて、リソース・アービタは、各仮想マシンに割当てるリソースを動的に調整する。具体的には、リソース・アービタは、各様仮想マシンの優先度を再設定する関数を呼出すことによって、各仮想マシンに割当てるリソースを動的に調整する。
【００３５】
具体的には、関数ＳｅｔＰｒｉｏｒｉｔｙＣｌａｓｓ（）を呼出し、そのパラメータを、ＨＩＧＨ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ、ＩＤＬＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ、ＮＯＲＭＡＬ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ、ＲＥＡＬＴＩＭＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳのパラメータ群のいずれかに設定することによって仮想マシンの優先度を再設定する。
【００３６】
以下のプロセス優先度関連の関数が、ウィンドウズ（Ｒ）ＡＰＩに備えられている。
（１）プロセスを生成し、プロセスに優先度を設けるためのＣｒｅａｔｅＰｒｏｃｅｓｓ、
（２）プロセスの優先度を取得するためのＧｅｔＰｒｉｏｒｉｔｙＣｌａｓｓ、
（３）プロセスの優先度を更新するためのＳｅｔＰｒｉｏｒｉｔｙＣｌａｓｓ。
【００３７】
これらの関数は、プロセスの優先度を管理するため、パラメータｄｗＣｒｅａｔｉｏｎＦｌａｇｓを用い、該パラメータは、プロセスのスレッド・スケジューリングの優先度を設定するため使われる。
【００３８】
次に、前述の４つのパラメータを詳しく説明する。
優先度：ＨＩＧＨ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ
意味：この優先度のプロセスは、タイム・クリティカルなタスクを実行するものであり、有効性を確実にするために該プロセスが直ちに実行されなければならないことを示す。この優先度は、ＮＯＲＭＡＬ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ優先度のプロセス、又はＩＤＬＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ優先度のプロセスより高い優先順位を有する。こういった優先度を有するアプリケーションの一つの例としてウィンドウズ（Ｒ）・タスク・リストがある。ユーザに発動されたとき、即刻の応答を確実にするためシステム負荷への配慮は放棄される。十分な注意を持ってこの高い優先度の使用を確認すべきである。というのは、高い優先順位を有するＣＰＵ関連のアプリケーション・プログラムが、利用可能なＣＰＵサイクルのほとんど全てを占有してしまう可能性があるからである。
【００３９】
優先度：ＩＤＬＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ
意味：このプロセスのスレッドは、システムが、アイドル状態のときだけ実行することができ、より高い優先度を有するいかなるプロセスもそれに割り込むことができることを示す。こういったプログラムの例には、スクリーン・セーバがある。優先度ＩＤＬＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳは、対象プロセスのサブプロセスに継承させることができる。
【００４０】
優先度：ＮＯＲＭＡＬ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ
意味：この優先度のプロセスは、特別なタスク・スケジューリング要求を何ら持たないことを示す。
【００４１】
優先度：ＲＥＡＬＴＩＭＥ＿ＰＲＩＯＲＩＴＹ＿ＣＬＡＳＳ
意味：この優先度のプロセスは最高の優先順位を有することを示す。この優先度を有するプロセスのスレッドは、重要なタスクを実行しているシステム・プロセスを含めて他のプロセスの全てのスレッドに割り込むことができる。例えば、リアルタイム・プロセスが長時間実行されると、ハード・ディスクのキャッシュ不足又はマウスの遅い応答の原因となることがある。
【００４２】
次に、図３〜５を参照しながら、本発明の別の好適な実施形態をさらに説明し、ネットワークＩ／Ｏを例に上げて、複数の仮想マシンに対して動的にリソースを割当てる具体的なプロセスを例示する。該実施形態において、仮想マシン活動モニタはネットワーク活動モニタである。
【００４３】
該好適な実施形態は以下のようなステップを含む。
【００４４】
（１）ホスト・サーバ上で実行されている各仮想マシン中のネットワーク活動モニタは、各仮想マシン中のアプリケーションの活動をモニタする、すなわち、仮想マシン中で実行されている各様のアプリケーションに呼び込まれるソケットをモニタする。
【００４５】
（２）モニタされたアプリケーションの活動に基づき、アプリケーション優先順位モジュールは、その中に格納されたアプリケーション・ウェイト・テーブルを調べ、各仮想マシン中のアプリケーションの優先順位を判定する。各アプリケーションに対する事前設定された優先順位が包含されているアプリケーション・ウェイト・テーブルは、アプリケーション優先順位モジュールに内蔵され、このアプリケーションのウェイトは事前設定されたパラメータであって、ネットワーク・リソース（通常、処理容量）の使用競合が生じたときにどの仮想マシンがリソースを占有するかの優先順位を表す。
【００４６】
（３）各様のアプリケーションはそれら自体の挙動を有するので、あるアプリケーションは、ある時点では作動していて別の時点では作動していない。例えば該好適な実施形態において、システムが立ち上げられた時点では、マルチメディア・アプリケーションは優先度１を有し作動はしていない。トリガされると、マルチメディア・アプリケーションは作動状態に入り、このとき、ホスト・サーバは、該マルチメディア・アプリケーションに割当てるリソースを調整することが必要となる。
【００４７】
本発明によれば、各仮想マシンで実行されているアプリケーションの活動が変化したとき、各仮想マシン中のネットワーク活動モニタは、該仮想マシンの作動中のアプリケーションで使用されるソケットを、ホスト・サーバ内の仮想マシン優先度モジュールに送信する。
【００４８】
（４）判定された、各仮想マシン中のアプリケーションの優先順位に基づいて、仮想マシン優先度モジュールは、各仮想マシンの優先度を設定する。具体的には、仮想マシン優先度モジュールは、仮想マシンのソケットをホスト・サーバのソケット中にマップし、各作動中のアプリケーションによって占められたホスト・サーバのソケットを得る。次いで、アプリケーション・ウェイト・テーブルが点検されて各作動中のアプリケーションの優先順位が判定され、ホスト・サーバの各様ソケットの優先度が得られ、仮想マシンの優先度を再設定することが出来る。
【００４９】
仮想マシン・リアルタイム・ウェイト・テーブルは、仮想マシン優先度モジュールに内蔵され、該テーブルは、仮想マシン中の作動中アプリケーションのソケットとホスト・サーバのソケットとの間のマッピングを含む。
【００５０】
（５）本発明において、仮想マシン優先度モジュールは、リアルタイムでリソース・アービタと通信することができ、しかして、仮想マシン優先度モジュールは、再設定された各仮想マシンの優先度をリソース・アービタに送信することができる。
【００５１】
（６）設定された、各仮想マシンの優先度に基づいて、リソース・アービタは、各仮想マシンに割当てられたリソースを動的に調整する。具体的には、仮想マシン・リアルタイム・ウェイト・テーブル中に記録されたソケットの優先度に基づいて、リソース・アービタが、リアルタイムでネットワーク処理容量の割当てを調整することになる。
【００５２】
一つの好適な実施形態において、ネットワーク処理容量割当てのリアルタイム調整には、
ＩＰレイヤ中にデータ・パケットをインターセプトするアクションと、
該データ・パケットのＩＰ／ポート／種類に基づいて、データ・パケットとホスト・サーバのソケットとの間の一意的関係を識別し、該データ・パケットがホスト・サーバのどのソケットに属するのかを判定するアクションと、
データ・パケットの属するホスト・サーバ・ソケットが費消する処理容量が所定の処理容量を超えない場合は、データ・パケットは受入れられ、超える場合には、該データ・パケットは、ある時間の間通過待ち行列で待つことになる。
【００５３】
具体的に、Ｗｉｎｄｏｗｓ（Ｒ）・プラットフォームを事例と組合わせて、前記の好適な実施形態の技術的詳細を説明する。
【００５４】
ホスト・サーバが、１００Ｍｂｐｓのネットワーク処理容量を有し、作動中のアプリケーションＡ１、Ａ２，及びＡ３は、それぞれ、対応するホスト・サーバ・ソケットＳ１、Ｓ２、及びＳ３と、対応する優先度Ｐ１、Ｐ２、及びＰ３とを有すると仮定する。これらの優先度に基づいてアプリケーションＡ１、Ａ２、及びＡ３に割当てられたネットワーク処理容量は、それぞれ、Ｂ１＝６０Ｍｂｐｓ、Ｂ２＝３０Ｍｂｐｓ、Ｂ３＝１０Ｍｂｐｓである。データ・パケットは、例えば、ドライバ・プログラミングを介してＩＰレイヤにインターセプトすることができる。次に、プロトコルのＩＰアドレス／ポート／種類（ＴＣＰ／ＵＤＰ）に基づいて、データ・パケットとソケットとの間の一意的関係を識別することができる。例えば、このパケットはソケットＳ２に属するとする。しかして、ソケットＳ２のリアルタイム・ネットワーク処理容量の費消量Ｂ２’が計算される。Ｂ２’＜Ｂ２であれば、実際の処理容量の費消が割当てられた処理容量を超えていないことが示され、このときデータ・パケットは受入れられる。超える場合には、該データ・パケットは、処理容量の費消量を抑えるため、ある時間の間通過待ち行列で待つことになる。
【図面の簡単な説明】
【００５５】
【図１】現行のＸｅｎ仮想マシンを示すシステム・ブロック図である。
【図２】各種のサービスを包含する、現行の電気通信用集中型統合ホスト・サーバを示す。
【図３】Ｘｅｎホスト・サーバにおける、各アプリケーションの優先順位に基づいた仮想マシンの優先度設定を示す概略図である。
【図４】本発明による、複数の仮想マシンに対して動的にリソースを割当てる装置のブロック図を示す。
【図５】本発明による、複数の仮想マシンに対して動的にリソースを割当てる方法を示すフローチャートである。
【図６】本発明によるリソース割当ての例を示す。
【図１】
0005284809.tif 000002
【図２】
0005284809.tif 000003
【図３】
0005284809.tif 000004
【図４】
0005284809.tif 000005
【図５】
0005284809.tif 000006
【図６】
0005284809.tif 000007