(57)【要約】【課題】  仮想計算機オペレーティング・システム内でリソースを使用するための技法を提供することにある。【解決手段】  仮想計算機オペレーティング・システムは多数の仮想計算機を有する。リソースの一共用分は仮想計算機のそれぞれに割り振られる。１つの仮想計算機に割り振られたリソースの前記１つの仮想計算機による使用状況は自動的にモニターされる。前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機は自動的にクローン化される。前記１つの仮想計算機とクローンに一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、このクローンには他の仮想計算機の共用分から取られたリソースの一共用分が割り振られる。このクローンは、このクローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと考えられる作業をそのリソースとともに実行する。【選択図】  図１
2004326754.tif 000002
【特許請求の範囲】
【請求項１】
仮想計算機オペレーティング・システム内でリソースを使用するための処理方法において、前記仮想計算機オペレーティング・システムが多数の仮想計算機を有し、リソースの一共用分が前記仮想計算機のそれぞれに割り振られ、前記処理方法が、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況を自動的にモニターするステップと、
前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機を自動的にクローン化するステップであって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が、前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られるステップとを有する処理方法。
【請求項２】
前記クローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと考えられる作業をそのリソースとともに実行する前記クローンの後続ステップをさらに有する、請求項１に記載の処理方法。
【請求項３】
リソースを備えた前記１つの仮想計算機とリソースを備えた前記クローンがいずれも共用作業待ち行列上の作業項目を実行するように、前記１つの仮想計算機と前記クローンが前記作業待ち行列を共用する、請求項１に記載の処理方法。
【請求項４】
前記共用作業待ち行列が前記１つの仮想計算機と前記クローンによって共用されるメモリ内に常駐する、請求項３に記載の処理方法。
【請求項５】
前記１つの仮想計算機と前記クローンがいずれも、適切なアドレスによって前記共用作業待ち行列に直接アクセスすることができる、請求項４に記載の処理方法。
【請求項６】
前記共用作業待ち行列に関する前記共用メモリ内のロックをさらに有し、前記１つの仮想計算機と前記クローンが、前記共用作業待ち行列にアクセスする前に前記ロックを入手する、請求項４に記載の処理方法。
【請求項７】
前記１つの仮想計算機と前記クローンがいずれも、適切なアドレスによって前記ロックに直接アクセスすることができる、請求項６に記載の処理方法。
【請求項８】
前記１つの仮想計算機をクローン化する前記ステップの前に前記仮想計算機に割り振られたリソースの共用分が均等であり、前記１つの仮想計算機をクローン化する前記ステップの後に前記１つの仮想計算機のクローンを含む前記仮想計算機に割り振られたリソースの共用分が均等である、請求項１に記載の処理方法。
【請求項９】
前記１つの仮想計算機による前記リソースの使用状況を自動的にモニターする後続ステップと、
前記使用状況がしきい値未満である場合に、前記クローンに前に割り振られたリソースの共用分が前記１つの仮想計算機と前記他の仮想計算機に割り振られるように、前記仮想計算機の前記クローンを自動的に削除する後続ステップとをさらに有する、請求項１に記載の処理方法。
【請求項１０】
前記仮想計算機のうちの他の仮想計算機が追加リソースを必要とするまで、前記自動的に削除するステップが延期される、請求項１に記載の処理方法。
【請求項１１】
前記１つの仮想計算機が前記第１の仮想計算機のユーザからの作業要求を受信する第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含み、前記クローンが前記第１のアプリケーションの前記コピーを使用して、前記第１の仮想計算機の前記ユーザによって行われた作業要求を実行する、請求項１に記載の処理方法。
【請求項１２】
前記アプリケーションの前記コピーがユーザからの作業要求を受信しないように、前記アプリケーションの前記コピーにいかなるユーザも割り当てられない、請求項１０に記載の処理方法。
【請求項１３】
前記１つの仮想計算機が前記第１の仮想計算機のユーザからの作業要求を受信する第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含み、前記コピーが他のユーザからの作業要求を受信する、請求項１に記載の処理方法。
【請求項１４】
前記１つの仮想計算機が第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含まない、請求項１に記載の処理方法。
【請求項１５】
前記仮想計算機のそれぞれに割り振られる前記リソースのうちの１つがＣＰＵの一共用分である、請求項１に記載の処理方法。
【請求項１６】
前記仮想計算機のそれぞれに割り振られる前記リソースがメモリと入出力とを有する、請求項１に記載の処理方法。
【請求項１７】
前記クローンに割り振られるリソースの前記共用分が、前記１つの仮想計算機を含む前記多数の仮想計算機のすべてから取られる、請求項１に記載の処理方法。
【請求項１８】
多数の仮想計算機であって、リソースの一共用分が前記仮想計算機のそれぞれに割り振られる多数の仮想計算機と、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況をモニターするための手段と、
前記１つの仮想計算機が追加リソースを必要とすることに応答して、前記１つの仮想計算機を自動的にクローン化するための手段であって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が、前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られる手段とを有する仮想計算機オペレーティング・システム。
【請求項１９】
前記クローンがその後、前記クローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと考えられる作業をそのリソースとともに実行する、請求項１８に記載のオペレーティング・システム。
【請求項２０】
リソースを備えた前記１つの仮想計算機とリソースを備えた前記クローンがいずれも共用作業待ち行列上の作業項目を実行するように、前記１つの仮想計算機と前記クローンが前記作業待ち行列を共用する、請求項１８に記載のオペレーティング・システム。
【請求項２１】
前記共用作業待ち行列が前記１つの仮想計算機と前記クローンによって共用されるメモリ内に常駐する、請求項２０に記載のオペレーティング・システム。
【請求項２２】
仮想計算機オペレーティング・システム内でリソースを使用するためのコンピュータ・プログラム記録媒体において、前記仮想計算機オペレーティング・システムが多数の仮想計算機を有し、リソースの一共用分が前記仮想計算機のそれぞれに割り振られ、前記コンピュータ・プログラム記録媒体が、
コンピュータ可読媒体と、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況を自動的にモニターするための第１のプログラム命令と、
前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機を自動的にクローン化するための第２のプログラム命令であって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られる第２のプログラム命令とを有し、
前記第１および第２のプログラム命令が前記媒体上に記録される、コンピュータ・プログラム記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般に、コンピュータ・システムに関し、より詳細には、仮想リソースを効果的に割り振って使用するための仮想計算機の管理に対処する。
【背景技術】
【０００２】
仮想計算機オペレーティング・システムは、現在では周知のものであり、共通基本部分と、共通基本部分によって形成される個別ユーザ部分とを含む。ＩＢＭのｚ／ＶＭオペレーティング・システムでは、共通基本部分は「制御プログラム」または「ＣＰ」と呼ばれ、各ユーザ部分は「仮想計算機」または「ゲスト」と呼ばれている。仮想計算機またはゲストは、実メモリ、ＣＰＵ、入出力(I/O)などの実リソースの仮想共用／パーティション化である。入出力装置(I/O device)の例としては、ＤＡＳＤ、ネットワーク・カード、プリンタ、ディスプレイがある。ゲスト・オペレーティング・システムは各仮想計算機上で実行され／動作し、１つまたは複数のアプリケーションがゲスト・オペレーティング・システム上で動作する。各アプリケーションおよびゲスト・オペレーティング・システムは、それ自体の専用の実コンピュータ上で動作している場合と同様の挙動を示す。
【０００３】
通常、各仮想計算機には、専用仮想メモリ、実ＣＰＵ、実入出力など、有限量のリソースが割り振られる。割り振られる量は、ほとんどの動作条件の間に仮想計算機の最大要求に対処することを意図するものである。しかし、仮想計算機の動作中に、これらのリソースのそれぞれに対する仮想計算機の要求は異なる。ある期間では仮想計算機はＣＰＵ集中型の複雑な算術計算を必要とするアプリケーションを実行している可能性があり、他の期間では仮想計算機はＣＰＵをほとんど使用しないデータ・バックアップ・アプリケーションなどのアプリケーションを実行している可能性がある。同様に、ある期間では仮想計算機は多くの専用メモリを必要とするデータベースのサーチ、読取り、書込みアプリケーションなどのアプリケーションを実行している可能性があり、他の期間では仮想計算機は専用メモリをほとんど必要としないテキスト編集アプリケーションなどのアプリケーションを実行している可能性がある。同様に、ある期間では仮想計算機は相当な入出力アクティビティを必要とするデータ・バックアップ・アプリケーションなどのアプリケーションを実行している可能性があり、他の期間では仮想計算機は入出力アクティビティをほとんど必要としない算術計算アプリケーションなどのアプリケーションを実行している可能性がある。ある動作期間では仮想計算機は割り振られたもの以上の仮想リソースを必要とする可能性があり、その場合、仮想リソースの割振りが有限であることが仮想計算機の動作に制約を加える可能性がある。他の動作期間では仮想計算機は１つまたは複数の仮想リソースのうちのその割振り分を完全に使用せず、したがって、他の仮想計算機が余分な割振り分を使用できた可能性があるという意味でこれらの仮想リソースが無駄になる可能性がある。
【０００４】
既知の仮想計算機が作業項目を実行するためにそのＣＰＵを使用する様子を示す一例を以下に示す。各仮想計算機は、その同期またはロック機能と、作業待ち行列割当て機能と、作業スケジューラと、仮想計算機によって及び仮想計算機に割り当てられた作業項目またはタスクおよび仮想計算機に割り当てられた作業項目またはタスクの関連作業待ち行列(work queue)からなる、それ自体のディスパッチ機能を有する。同期またはロック機能、作業待ち行列割当て機能、作業スケジューラ、作業待ち行列はいずれもその仮想計算機にとって専用のものである。同期またはロック機能は、どの作業項目が順次動作しなければならないかならびにどのタスクが並列動作可能であるかを制御するために、作業待ち行列に関するロックを管理する。作業待ち行列割当て機能は、仮想計算機内のプログラム機能であって、仮想計算機によって生成されたときに仮想計算機の作業待ち行列に作業項目を追加するものである。作業項目は、割当てアルゴリズムに基づく位置で待ち行列に追加される。割当てアルゴリズムは、各作業項目の相対優先順位レベルや、作業項目が作成された順序、すなわち、先入れ先出し(first in first out)方式などの要因を考慮することができる。待ち行列上の各作業項目は、そのタイプを示す情報、したがって、仮想計算機内のどの機能がそれを処理するために最も適しているかを示す情報を含む。「作業スケジューラ」は、実行のためにその待ち行列上の各作業項目をスケジューリングするプログラム機能である。一般に、作業スケジューラは待ち行列の末尾から作業項目を除去する。作業スケジューラは、仮想ＣＰＵによる実行のために仮想計算機内の適切な機能に作業項目を渡す。作業待ち行列上の作業項目がＣＰＵ集中型であり、仮想ＣＰＵの割振りが不十分である場合、新しい作業項目が待ち行列に追加される速度より待ち行列上の既存の作業項目が除去される速度の方が遅くなるので、作業待ち行列の長さが増大する可能性がある。このような場合、仮想計算機はその作業が遅れることになる。
【０００５】
また、複数の仮想計算機が１つの作業待ち行列を共有して、仮想計算機間およびそれぞれの実ＣＰＵの共用分の間で作業項目を分散することも知られている。他の「作業用」仮想計算機用のこの共用作業待ち行列に対して「ホスティング」するためにサーバ仮想計算機が使用されていた。共用作業待ち行列は、サーバ仮想計算機にとって専用のメモリ内に常駐する。作業用仮想計算機が新しい作業項目を作成し、この作業用仮想計算機用の作業待ち行列割当て機能がこの新しい作業項目をサーバ仮想計算機に送信することを決定すると、この作業用仮想計算機は通信プロトコル（たとえば、ＴＣＰ／ＩＰ）と仮想入出力デバイス・ドライバを使用して、その作業項目をこのサーバ仮想計算機に送信する。次にサーバ仮想計算機は、サーバ仮想計算機が決定した順序で新しい作業項目を共用作業待ち行列上に配置する。作業用仮想計算機内の仮想ＣＰＵが共用作業待ち行列上の作業項目を実行するために使用可能である場合、この作業用仮想計算機内の作業スケジューラは通信プロトコルと仮想入出力デバイス・ドライバを使用して、サーバ仮想計算機に対してその要求を行う。応答として、サーバ仮想計算機は通信プロトコルを使用して、その要求を行った作業用仮想計算機に作業項目を送信する。この配置は共用作業待ち行列を提供するが、作業待ち行列への作業項目の送信と、作業待ち行列からの作業項目の入手のいずれのためにも、高オーバヘッドの通信プロトコルを必要とする。さらに、サーバ仮想計算機は、作業用仮想計算機をモニターし、どの作業用仮想計算機が最も迅速にその作業項目を処理できるようになるかを見積もることにより、作業用仮想計算機間の負荷のバランスを取ろうと試みる。作業用仮想計算機が動的に追加および／または削除されると、サーバ仮想計算機は、作業用仮想計算機間の負荷のバランスを取り直すことができなければならない。さらに、サーバ仮想計算機は、その専用同期機能が決定するように作業項目の同期を取らなければならない。これらのサーバ仮想計算機の機能はいずれも、サーバ仮想計算機と作業用仮想計算機との間の相当な通信および「オーバヘッド」を必要とする。
【非特許文献１】ＩＢＭ資料「z/VM4.2.0 General Information」（文書番号：ＧＣ２４−５９９１−０３）
【発明の開示】
【発明が解決しようとする課題】
【０００６】
本発明の一目的は、各仮想計算機上で実行されるアプリケーション（複数も可）の要求を使用可能なリソースと適合させるのを支援する、仮想計算機オペレーティング・システム内の機能性を提供することにある。
【０００７】
本発明の他の目的は、各仮想計算機上で実行されるアプリケーション（複数も可）の要求の変化を使用可能なリソースと適合させるのを支援するように動的に動作する、上記のタイプの仮想計算機オペレーティング・システム内の機能性を提供することにある。
【０００８】
本発明の他の目的は、各仮想計算機上で実行されるアプリケーション（複数も可）にとって使用可能なリソースについてシステム管理者が設定した制限も考慮する、上記のタイプの機能性を提供することにある。
【課題を解決するための手段】
【０００９】
本発明は、仮想計算機オペレーティング・システム内でリソースを使用するためのシステム、コンピュータ・プログラム記録媒体、および方法にある。仮想計算機オペレーティング・システムは多数の仮想計算機を有する。リソースの一共用分は仮想計算機のそれぞれに割り振られる。１つの仮想計算機に割り振られたリソースの前記１つの仮想計算機による使用状況は自動的にモニターされる。前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機は自動的にクローン化される。前記１つの仮想計算機とクローン(clone)に一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、このクローンには他の仮想計算機の共用分から取られたリソースの一共用分が割り振られる。
【００１０】
本発明の１つの特徴によれば、このクローンは、前記クローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと思われる作業をそのリソースとともに実行する。
【００１１】
本発明の他の特徴によれば、そのリソースを備えたその１つの仮想計算機とそのリソースを備えたクローンがいずれも共用作業待ち行列上の作業項目を実行するように、その１つの仮想計算機とクローンが作業待ち行列を共用する。
【発明を実施するための最良の形態】
【００１２】
次に、全体を通して同様の参照番号が同様の要素を示す図面を詳細に参照すると、図１は、本発明により全体が１０で示されるコンピュータ・システムを示している。コンピュータ・システム１０は、物理的コンピュータ２０（ＣＰＵ２３を含む）と、仮想計算機オペレーティング・システム１１とを含む。一例として、仮想計算機オペレーティング・システムは、本発明を含むように修正されたＩＢＭのｚ／ＶＭバージョン４．２．０または４．３．０にすることができる。ｚ／ＶＭ４．２．０の詳細は、PO Box 29570, IBM Publications, Raleigh, North Carolina 27626-0570にあるInternational Business Machines Corp.からまたはwww.IBM.com/shop/publications/orderにあるＷＷＷで入手可能なＩＢＭ資料「z/VM 4.2.0 GeneralInformation」（文書番号：ＧＣ２４−５９９１−０３）に開示されている。本発明は他のサーバ・コンピュータまたはパーソナル・コンピュータでも実現可能であるが、オペレーティング・システム１１はＩＢＭのｚＳｅｒｉｅｓメインフレームなどの物理的コンピュータ１０で実行される。オペレーティング・システム１１は、共通基本部分 (common base portion)２１（ｚ／ＶＭオペレーティング・システムでは「ＣＰ」と呼ぶ）を含む。
【００１３】
システム管理者は、仮想計算機オペレーティング・システム１１のインストール時に、ユーザ仮想計算機１２、１４、１６およびリソース・マネージャ仮想計算機１７をディレクトリ１９１に定義する。ディレクトリ１９１は、各仮想計算機の名前または識別子と、各仮想計算機に対する仮想および実リソースの割振りに関する「ソフト」制限と、各仮想計算機のいくつかの許可クローンの指定とを含む。システム管理者は、各仮想計算機に関する仮想および実リソースの初期割振りもディレクトリ１９１に指定することができる。このような指定がない場合、各仮想計算機はすべての使用可能な仮想および実リソースを均等に共用する。「デフォルト」割振りに基づいて、各仮想計算機１２、１４、１６、１７は初めにすべての仮想および実リソースの４分の１を有する。このような定義に応答して、共通基本部分２１は、物理的コンピュータのリソース（ＣＰＵ、入出力、およびメモリを含む）をロジカル・パーティション化して、ユーザ部分１２、１４、１６およびリソース・マネージャ部分１７（ｚ／ＶＭオペレーティング・システムでは「仮想計算機」または「ゲスト仮想計算機」と呼ぶ）を形成する。リソース・マネージャ仮想計算機１７は、後述するように、仮想計算機クローンの作成および削除を担当する。また、共通基本部分は、メモリの仮想化、入出力装置の仮想化、ＣＰＵの仮想化などの機能も実行する。
【００１４】
ゲスト・オペレーティング・システム２２、２４、２６は、ユーザ部分１２、１４、１６上でそれぞれ実行され、アプリケーション３２、３４、３６は、ゲスト・オペレーティング・システム２２、２４、２６上でそれぞれ実行される。各オペレーティング・システム上では複数のアプリケーションが実行されている可能性がある。一例として、ゲスト・オペレーティング・システム２２および２４はＬｉｎｕｘ（Ｌｉｎｕｓ  Ｔｏｒｖａｌｄｓの登録商標）オペレーティング・システムであり、オペレーティング・システム２６はＩＢＭのＣＭＳオペレーティング・システムである。Ｍｉｃｒｏｓｏｆｔ  Ｗｉｎｄｏｗｓ（登録商標）オペレーティング・システム、Ｕｎｉｘ（登録商標）オペレーティング・システム、Ｓｕｎ  ＭｉｃｒｏｓｙｓｔｅｍｓのＳｏｌａｒｉｓ（登録商標）オペレーティング・システム、またはＨｅｗｌｅｔｔ  ＰａｃｋａｒｄのＨＰ  ＵＸオペレーティング・システムなど、ユーザ部分で実行中の他のゲスト・オペレーティング・システムも実現可能である。一例として、アプリケーション３２、３４、３６は、ＩＢＭのＤＢ２データベース管理アプリケーション、ＩＢＭのＷｅｂＳｐｈｅｒｅアプリケーション、通信アプリケーションなどにすることができる。アプリケーション３２、３４、３６は作業項目を生成する可能性があるが、そのアプリケーションの性質は本発明の一部を構成するものではない。
【００１５】
各仮想計算機は、その専用データと、アプリケーションと、それぞれユーザ仮想計算機１２、１４、１６内の作業待ち行列割当て機能６２、６４、６６（「ＷＱＡＦ」）および作業スケジューラ４２、４４、４６などのオペレーティング・システム機能とのために、それ自体の専用メモリを有する。その結果として、各仮想計算機には、個別の物理的コンピュータ内のように他の仮想パーティションからのプライバシの手段が与えられる。また、仮想計算機間のロジカル・パーティションは、実ＣＰＵの一共用分、実入出力の一共用分、および仮想専用メモリを各仮想計算機に割り振ることによって提供される。実ＣＰＵの一共用分は、システム全体の実ＣＰＵ（複数も可）のタイム・シェアである。このＣＰＵ共用分は、ゲスト・オペレーティング・システムにとってそれ自体のＣＰＵのように見える。同様に、実入出力の一共用分は、システムの全実入出力機能のタイム・シェアである。入出力リソースは、たとえば、ＩＢＭのｚＳｅｒｉｅｓメインフレーム上の「チャネル」など、入出力に専用の処理能力を有する。仮想メモリは、仮想計算機に割り当てられた一連の仮想アドレスであって、ＣＰによって実メモリの実アドレスに変換されるものである。以下により詳細に説明するように、各ＷＱＡＦ６２、６４、６６は、その割当てアルゴリズムに基づいてそれ自体の仮想計算機が作成した各作業項目を共用メモリ内のそのそれぞれの作業待ち行列５２、５４、または５６内の適切な位置に割り当てる。作業項目の例としては、データの読取りまたは書込み、アプリケーションの実行、アプリケーションに対する要求などがある。作業項目は、アプリケーションのユーザによって開始され、処理のためにアプリケーションを介してゲスト・オペレーティング・システムに渡される。割当てアルゴリズムは、各作業項目の優先順位レベルおよび／または先入れ先出し方式などに基づくものである可能性がある。割当てアルゴリズムが単純に先入れ先出し方式である場合、ＷＱＡＦは作業待ち行列の先頭にそれぞれの新しい作業項目を割り当て、したがって、それは最後に除去すべきものになる。割当てアルゴリズムが優先順位レベルに基づくものである場合、ＷＱＡＦは、優先順位が低い他の作業項目の前であって、優先順位が同じ（作業項目が陳腐(stale)になるのを防止するため）かまたは優先順位が高い作業項目の後の作業待ち行列内の位置にそれぞれの新しい作業項目を割り当てる。また、各ＷＱＡＦは、後述するように、それぞれの仮想計算機の状況をモニターし、その状況を「アイドル」または「非アイドル」として更新する。各スケジューラは、その仮想計算機の作業待ち行列からの作業項目の実行をスケジューリングし、一般に、作業待ち行列の末尾から作業項目を除去する。
【００１６】
コンピュータ１０は、すべての仮想計算機１２、１４、１６によって共用されるメモリ領域２５も含む。「共用」されているので、各仮想計算機は、共用メモリ２５と、それが適切なアドレスを把握しているときはそのアドレスによって共用メモリ内に記憶されたデータおよびデータ構造（ロック構造を含む）に直接アクセスすることができる。ＷＱＡＦ６２、６４、６６およびそれぞれのスケジューラ４２、４４、４６に関する作業待ち行列５２、５４、５６は共用メモリ内に位置する（ただし、ＷＱＡＦとスケジューラはいずれもそれぞれの仮想計算機の専用メモリ内にある）。その結果として、各ＷＱＡＦは、それが作業待ち行列のアドレスを把握しているときはいずれかの作業待ち行列に作業項目を追加するためにすべての作業待ち行列にアクセスすることができる。本発明の好ましい実施形態では、各ＷＱＡＦはその仮想計算機とそのクローンに専用の作業待ち行列のみに作業項目を追加するようにプログラミングされ、各スケジューラはその仮想計算機とそのクローンに専用の作業待ち行列のみから作業項目を除去するようにプログラミングされる。作業待ち行列５２は仮想計算機１２とそのクローンに専用であり、作業待ち行列５４は仮想計算機１４とそのクローンに専用であり、作業待ち行列５６は仮想計算機１６とそのクローンに専用である。
【００１７】
図１に示す状態では、作業待ち行列５２はＷＱＡＦ６２のアクションによって仮想計算機１２から獲得された３つの作業項目７０、７１、７３を有し、作業待ち行列５４は空であり、作業待ち行列５６は仮想計算機１６から獲得された３つの作業項目７２、７４、７６を有する。また、図１に示す状態では、仮想計算機１２はスケジューラ４２のアクションによって作業待ち行列５２から作業項目７３を獲得し、仮想計算機１６はスケジューラ４６のアクションによって作業待ち行列５６から作業項目７６を獲得することになる。制御ブロック５８は、仮想計算機の現在の状態、すなわち、「アイドル」または「非アイドル」と、各作業待ち行列からの作業項目のうち、次にスケジューリングすべきものがあれば、どの作業項目であるかを示している。図１に示す状態では、仮想計算機１２はアイドル状態であり、スケジューラ４２内のその作業待ち行列ポインタは作業項目７３を指し示している。また、図１に示す状態では、仮想計算機１４はアイドル状態であり、作業待ち行列５４には現在、作業項目がまったくないので、スケジューラ４４内のその作業待ち行列ポインタは「ヌル(null)」を示している。また、図１に示す状態では、仮想計算機１６は「非アイドル」状態であり、作業待ち行列の１つから前に獲得した作業項目を現在実行中である。仮想計算機１６内のスケジューラ４６の作業待ち行列ポインタは、現在、作業項目７６を示しており、したがって、この作業項目は仮想計算機１６による実行のためにスケジューラ４６によってまだ除去されていない。
【００１８】
各仮想計算機は、作業項目を完了するかまたは割込みを受信した後、制御ブロック５８をチェックしてそれぞれの作業待ち行列が作業項目を含んでいるかどうかを判定するように、そのスケジューラに警告する。含んでいる場合、スケジューラは、それぞれの作業待ち行列ポインタが示す作業項目を除去し、作業項目を解析(parse)して処理のために仮想計算機内の適切な機能を決定し、その後、処理のためにその機能に作業項目を渡すことができる。一部の作業項目はＣＰＵ集中型であり、他の作業項目は入出力装置集中型であり、さらに他の作業項目は仮想計算機のかなりの専用メモリを必要とする。逆に、一部の作業項目はＣＰＵアクティビティをほとんど必要とせず、他の作業項目は入出力アクティビティをほとんどまたはまったく必要とせず、さらに他の作業項目は仮想計算機の専用メモリをあまり必要としない。所与の期間中に実行される作業項目が仮想リソース集中型であり、他の期間中に実行される作業項目が仮想リソースをほとんど必要としないという場合もよくある。たとえば、仮想計算機１２が所与の時刻(time of day)に大量使用状態になるアプリケーションを実行している場合、仮想計算機１２はその時点でかなりの仮想リソースを必要とする可能性がある。逆に、同じアプリケーションは他の時刻には実質的にアイドル状態になり、その時点でほとんど仮想リソースを必要としない可能性もある。図１に示す状態では、４つの仮想計算機が存在し、デフォルトでは、使用可能な全仮想リソースのうち、２５％がそれぞれに割り当てられている。
【００１９】
共通基本部分内のリソース・モニター機能８４は、各仮想計算機によるそれぞれの仮想および実リソースの使用状況レベルと、システムの全実リソース使用状況を日常的にモニターする。リソース・モニター８４は、これらのレベルを使用レコード８５としてメモリ内に記憶する。各仮想計算機の実ＣＰＵ使用状況は、それが動作しているときに各仮想計算機がどの程度プロセッサ時間を使用するかによって測定する。各仮想計算機による実入出力使用状況は、入出力アクセスの回数と、このような各アクセス中に使用する時間をカウントすることによって測定する。仮想専用メモリ使用状況は、ある期間中に仮想計算機が参照するページの数をカウントすることによって測定する。仮想計算機１７内のリソース・マネージャ機能２１７は、レコード８５を読み取ることにより、それぞれのユーザ仮想計算機１２、１４、１６によって使用中の仮想および実リソースのレベルをモニターする。より詳細に後述するように、リソース・マネージャ２１７は、これらの使用レベルを、仮想リソースに関する仮想計算機による要求ならびに各仮想計算機の仮想および実リソースについてシステム管理者が設定したソフト制限と比較する。
【００２０】
図２は、図１の状態の短時間後のコンピュータ・システム１０の状態を示している。コンピュータ・システム１０が図１の状態から図２の状態に変化した様子を示す一般的な説明を以下に示す。状態と状態の間でリソース・マネージャ２１７は、使用レコード８５から仮想計算機１２の現在の仮想および実リソース使用状況を決定した（ステップ８３）。仮想および実リソース使用状況は、実ＣＰＵ使用状況の現在量と、実入出力使用状況の現在量と、仮想専用メモリ使用状況の現在量を含む。ステップ８３では、リソース・マネージャ２１７は、仮想計算機１２が現在有しているものより多くの仮想および実リソース、すなわち、使用可能な仮想および実リソース全体の４分の１（デフォルト）より多くの仮想および実リソースを獲得する資格を有していたかまたは獲得すべきであるかを判定した。仮想計算機１２による追加仮想リソースの要求は、仮想または実リソースのうちの１つまたは複数に関する追加要求に基づくものである可能性がある。本発明によれば、次にリソース・マネージャ２１７は、仮想計算機１２の単一仮想計算機クローン１２Ａを作成した。（仮想計算機クローン１２Ｂは、後述するように、続いて作成された。）リソース・マネージャ２１７は、共通基本部分内の起動機能(activate function)８６を呼び出し、仮想計算機１２の名前または識別子を指定し、仮想計算機１２と同一の他の仮想計算機を作成することを要求することにより、仮想計算機クローン１２Ａを作成した（ステップ８７）.起動機能８６は、ディレクトリ１９１を読み取って、仮想計算機１２のゲスト・オペレーティング・システムと仮想計算機１２の属性(attributes)、すなわち、仮想および実リソースの割振りおよび動作特権(operating privilege)を決定するために、仮想計算機クローン１２Ａを作成した。仮想計算機１２内のゲスト・オペレーティング・システム２２は、仮想計算機１２上で現在実行しているアプリケーションのリストと、それらのコピーをフェッチして始動する方法を含んでいる。したがって、仮想計算機１２Ａが、動作を開始すると、アプリケーション３２のコピー３２Ａをフェッチして始動する。すべての仮想計算機間に仮想リソースを均等割振りするというデフォルトの場合、仮想計算機１２および１２Ａは合わせて使用可能な全仮想リソースのうちの４０％を有し、仮想計算機１４は２０％を有し、仮想計算機１６は２０％を有し、仮想計算機１７は２０％を有する。
【００２１】
仮想計算機１２とその仮想計算機クローン１２Ａの仮想リソースをまとめて使用するために、リソース・マネージャ２１７は、作業待ち行列５２へのアクセス権を仮想計算機クローン１２Ａに授与する（ステップ８９）。このアクセス権は、仮想計算機１２の作業待ち行列５２を含む共用メモリの一部分またはセグメントにアクセスするための許可をリソース・マネージャ２１７が仮想計算機クローン１２Ａに供給することによって「授与」される。共用メモリ・セグメントの先頭は共用作業待ち行列５２および制御ブロック５８のアドレスを含むことができるかまたはリソース・マネージャはＷＱＡＦ６２Ａとスケジューラ４２Ａに別々にこれらのアドレスを提供することができる。また、作業待ち行列５２に対する仮想計算機１２および１２Ａによる共用アクセスは、図３および図４に関連してより詳細に後述するロック９０の所有を必要とする。
【００２２】
本発明の一実施形態では、すべての作業項目は、仮想計算機１２上のアプリケーション３２のユーザによって作成され、仮想計算機１２Ａ上のアプリケーション３２Ａのユーザによって作成されるわけではなく、すなわち、いかなるユーザもアプリケーション３２Ａには割り当てられていない。このような場合、ＷＱＡＦ６２Ａは、作業待ち行列５２に割り当てるべき作業項目を持っていない。しかし、スケジューラ４２Ａはスケジューラ４２とともに作業待ち行列５２から作業項目を入手し、したがって、仮想計算機１２および１２Ａ両方の仮想リソースを使用して作業待ち行列５２上の作業項目を実行する。この実施形態では、仮想計算機１２上のアプリケーション３２が生成した作業項目を実行するためにアプリケーション３２のコピーを必要としない場合、クローン１２Ａはアプリケーション３２のコピーを含む必要がない。次に、作業項目が仮想計算機１２上のアプリケーション３２のユーザと仮想計算機１２Ａ上のアプリケーション３２Ａのユーザによって作成される本発明の代替実施形態について検討する。この場合、アプリケーション３２Ａのユーザは仮想計算機１２上のアプリケーション３２から再割り当てされた可能性があるかまたは新しいユーザがアプリケーション３２Ａに割り当てられている可能性がある。いずれの場合も、ＷＱＡＦ６２および６２Ａはどちらも作業待ち行列５２に割り当てるべき作業項目を持っており、スケジューラ４２および４２Ａはどちらも作業待ち行列５２から作業項目を入手する。したがって、仮想計算機１２および１２Ａ両方の仮想リソースを使用して作業待ち行列５２上の作業項目を実行する。（この代替実施形態では、仮想計算機１２Ａ用の個別の作業待ち行列を作成することも可能であり、したがって、仮想計算機１２Ａは作業待ち行列５２を共用しない。）
【００２３】
作業待ち行列５４上の作業項目を実行するために、仮想計算機１４にとって使用可能な仮想および実リソースの減少を除き、仮想計算機１４および仮想計算機の作業待ち行列５４との対話(interaction)は、仮想計算機クローン１２Ａを作成しても変化しない。同様に、作業待ち行列５６上の作業項目を実行するために仮想計算機１６にとって使用可能な仮想および実リソースの減少を除き、仮想計算機１６および仮想計算機の作業待ち行列５６との対話は、仮想計算機クローン１２Ａを作成しても変化しない。
【００２４】
次に、リソース・マネージャ２１７は、上記の分析を繰り返し、仮想計算機１２および１２Ａが備えているリソースが依然として不十分であると判断した。したがって、リソース・マネージャ２１７は、クローン・アプリケーション３２Ｂを含む他の仮想計算機クローン１２Ｂを作成した。その結果として、仮想計算機１２とその仮想計算機クローン１２Ａおよび１２Ｂは合わせて仮想および実リソース全体のうちの５０％を有し、仮想計算機１４は仮想および実リソース全体の１６．７％を有し、仮想計算機１６は仮想および実リソース全体の１６．７％を有し、仮想計算機１７は仮想および実リソース全体の１６．７％を有する。仮想計算機１２とその仮想計算機クローン１２Ａおよび１２Ｂの仮想および実リソースをまとめて使用するために、リソース・マネージャ２１７は作業待ち行列５２へのアクセス権を仮想計算機クローン１２Ｂに授与する（ステップ８９）。（仮想計算機クローン１２Ａは、それ以前に授与された作業待ち行列５２へのアクセス権を保持する。）仮想計算機クローン１２Ｂに対するこのアクセス権の「授与」は、仮想計算機１２の作業待ち行列５２を含む共用メモリの一部分またはセグメントにアクセスするための許可をリソース・マネージャ２１７が仮想計算機クローン１２Ｂに供給することによって行われる。共用メモリ・セグメントの先頭は共用作業待ち行列５２および制御ブロック５８のアドレスを含むことができるかまたはリソース・マネージャはＷＱＡＦ６２Ｂとスケジューラ４２Ｂに別々にこれらのアドレスを提供することができる。作業待ち行列５２に対する仮想計算機１２、１２Ａ、および１２Ｂによる共用アクセスは、また、より詳細に後述するロック９０の所有を必要とする。
【００２５】
本発明の一実施形態では、すべての作業項目は、仮想計算機１２上のアプリケーション３２のユーザによって作成され、仮想計算機１２Ａおよび１２Ｂ上のアプリケーション３２Ａまたは３２Ｂそれぞれのユーザによって作成されるわけではない。このような場合、ＷＱＡＦ６２Ａおよび６２Ｂは、作業待ち行列５２に割り当てるべき作業項目を持っていない。しかし、スケジューラ４２Ａおよび４２Ｂは作業待ち行列５２から作業項目を入手する。図２に示す状態では、仮想計算機１２は作業項目７３を入手して実行し、仮想計算機１２Ａは作業項目７１を入手して実行し、仮想計算機１２Ｂは作業項目７０を入手して実行する。したがって、３つの仮想計算機１２、１２Ａ、および１２Ｂすべての仮想および実リソースをまとめて使用して、作業待ち行列５２上の作業項目を実行する。本発明の代替実施形態では、作業項目が仮想計算機１２上のアプリケーション３２のユーザと、仮想計算機１２Ａ上のアプリケーション３２Ａのユーザと、仮想計算機１２Ｂ上のアプリケーション３２Ｂのユーザによって作成される。アプリケーション３２Ａおよび３２Ｂのユーザは仮想計算機１２上のアプリケーション３２から再割り当てされた可能性があるかまたは新しいユーザである可能性がある。このような場合、ＷＱＡＦ６２、６２Ａ、６２Ｂはいずれも作業待ち行列５２に割り当てるべき作業項目を持っており、スケジューラ４２、４２Ａ、４２Ｂはいずれも作業待ち行列５２から作業項目を入手する。したがって、仮想計算機１２、１２Ａ、１２Ｂの仮想および実リソースをすべて使用して作業待ち行列５２上の作業項目を実行する。（この代替実施形態では、仮想計算機１２Ａ用の個別の作業待ち行列と仮想計算機１２Ｂ用の個別の作業待ち行列を作成することも可能であり、したがって、仮想計算機１２Ａおよび１２Ｂは作業待ち行列５２を共用しない。）
【００２６】
作業待ち行列５４上の作業項目を実行するために仮想計算機１４にとって使用可能な仮想および実リソースの減少を除き、仮想計算機１４および仮想計算機の作業待ち行列５４との対話は、仮想計算機クローン１２Ａおよび１２Ｂを作成しても変化しない。同様に、作業待ち行列５６上の作業項目を実行するために仮想計算機１６にとって使用可能な仮想および実リソースの減少を除き、仮想計算機１６および仮想計算機の作業待ち行列５６との対話は、仮想計算機クローン１２Ａおよび１２Ｂを作成しても変化しない。
【００２７】
どの仮想計算機がクローン化され、いくつのクローンが作成されるかに応じて、仮想および実リソースの他の分散も使用可能である。リソース・マネージャは定期的に、仮想計算機の仮想および実リソース使用状況と、クローンを作成または削除する必要性を決定する。
【００２８】
図３は、コンピュータ・システム１０の共用メモリ２５内で全体が９０で示される同期またはロック構造を象徴的に示している。ロックは2つ以上の仮想計算機によって共用されるどの作業待ち行列についても必要である。これは、図２に示す仮想計算機１２、１２Ａ、１２Ｂによって共用される作業待ち行列５２など、作業待ち行列を共用する１つまたは複数のクローンを仮想計算機が有するケースになる。仮想計算機用のクローンがまったくない場合、ロック構造をバイパスすることができるかまたは仮想計算機がロックを連続的に保持することができる。（図３は、仮想計算機１４または１６あるいはそれぞれの作業待ち行列５４または５６を示していない。）図で示した例では、仮想計算機１２Ａはロック９１を保持し、仮想計算機１２は仮想計算機１２Ａからのロックを待っているプレース・ホルダ９２を有し、仮想計算機１２Ｂは仮想計算機１２からのロックを待っているプレース・ホルダ９３を有している。これは、実際には制御ブロック５８内に記録され、仮想計算機１２Ａがロックを保持し、仮想計算機１２および１２Ｂが現在、ロックを待っていることを示す。制御ブロック５８の「ウェイタ・リスト」９５はウェイタの順序を示し、すなわち、仮想計算機１２は最初にロックを得る立場（ロック待ちの先頭）にあり、仮想計算機１２Ｂは仮想計算機１２がロックを入手した後でロックを入手しようと試みることになる。この例では、仮想計算機１２Ａは排他的にロック９１を保持し、すなわち、他のいかなる仮想計算機もこのロックを同時に保持することができない。仮想計算機１２および１２Ｂは、ロックを待っており、共用するロックを保持する意志があり、すなわち、これらの仮想計算機は互いに同時にそのロックを保持することができる。
【００２９】
図４は、仮想計算機１２、１２Ａ、１２Ｂ内のそれぞれの同期またはロック機能５６２、５６２Ａ、５６２Ｂと、共用メモリ内の共用作業待ち行列５２に関するロックを入手しようと試みている各仮想計算機の関連操作を示している。以下の例では、仮想計算機（仮想計算機１２Ｂなど）は共用作業待ち行列５２に関するロックを要求する（ステップ７００）。仮想計算機が共用作業待ち行列を読み取りたいと希望する場合、仮想計算機は共用ロックのみを要求する必要がある。しかし、仮想計算機が共用作業待ち行列から作業項目を除去したいと希望する場合（より一般的なケースである）、仮想計算機は排他ロックを要求することになる。通常、仮想計算機は作業待ち行列から作業項目を除去したいと希望することになり、したがって、この目的のために排他ロックを要求することになり、判断７０２は判断７０４に至る。判断７０４では、同期機能は、要求したロックが現在、他の仮想計算機（共用方式または排他方式のいずれかで）によって保持されているかどうかを判定する。保持されている場合、排他ロックは現行リクエスタにとって使用不能であり、同期機能は、要求側仮想計算機がアイドル状態であり、排他ロックを「待っている」ことを示すように制御ブロックを更新する（ステップ７０６）。また、仮想計算機は待ち／休止状態(waiting/quiescent state)に入り（ステップ７０８）、そこで割込みを待つ（判断７１０）。もう一度、判断７０４を参照すると、要求したロックが現在、何かに保持されていない場合、同期機能は「非アイドル」としてその仮想計算機にマークを付け（ステップ７１２）、その仮想計算機にロックを授与する（ステップ７１４）。このロックの授与は、制御ブロック５８に対して対応する更新を行うことによって実施される。次に、仮想計算機は、共用作業待ち行列５２から次の作業項目を除去し、その作業項目が示すタスクを実行する（ステップ７１６）。その後、仮想計算機は、その作業項目を実行したことを同期機能に通知し、ロックを「解除」する（ステップ７１８）。応答として、同期機能は、ロックが解除されたことを示すように制御ブロック５８を更新する。また、同期機能は、他のいずれかの仮想計算機が現在、ロックを待っているかどうかを制御ブロック５８から判定する（判断７２０）。待っていない場合、同期機能の処理が完了する（ステップ７２２）。待っている場合、同期機能は、「待ち」のマークが付けられた第１の仮想計算機が「アイドル」状態であるかどうかを制御ブロック５８から判定する（判断７２４）。アイドル状態ではない場合、非アイドル状態で待っている仮想計算機に対しこの時点で割込みを行うことは破壊的すぎると考えられるので、同期機能の処理が完了する（ステップ７２２）。むしろ、非アイドル状態で待っている仮想計算機がその現行作業項目を完了したときまたは待っている仮想計算機にとって都合の良い他の時点で、おそらくステップ７００でそれ自体に関するロックを要求することになる。もう一度、判断７２４を参照すると、待っている仮想計算機がアイドル状態である場合、同期機能は、待っている仮想計算機に対する割込みを発行する（ステップ７２８）。それはとにかくアイドル状態であるので、これは待っている��想計算機にとって無駄なことにはならないであろう。割込みの受信後、アイドル仮想計算機は覚醒することになり、ステップ７００でロックを要求することができる。
【００３０】
もう一度、判断７０２に戻って参照すると、仮想計算機が要求したロックが、共用作業待ち行列の読取りなど、共用であって排他ではない場合、同期機能は、ロックが現在、排他方式で保持されているかどうかを判定する（判断７４０）。保持されていない場合（すなわち、いかなるロックも現在、保持されていないかまたは共用ロックのみが現在、保持されている場合）、同期機能は、ステップ７１２に移行し、前述のように続行する。しかし、ロックが現在、排他方式で保持されている場合、同期機能は、要求側仮想計算機が「アイドル」状態であって共用ロックを「待っている」というマークを制御ブロック５８内に付ける（ステップ７４２）。次に、要求側仮想計算機は待ち／休止状態に入り（ステップ７４４）、割込みを待つ（判断７４８）。このような割込みを受信すると、仮想計算機はステップ７００に移行してロックを要求することができる。
【００３１】
図５および図６は、リソース・マネージャ２１７の上記の動作をより詳細に示している。リソース・マネージャ２１７は、各ユーザ仮想計算機１２、１４、１６ごとに図５および図６のステップを実行し、仮想計算機のクローンを作成するかまたは仮想計算機のクローンを削除する必要性を判定する。初めに、リソース・マネージャ２１７は、仮想計算機に割り振られた実ＣＰＵ、仮想専用メモリ、および実入出力に関する新しいソフト制限を設定するかまたはそこで使用可能であればディレクトリ１９１から元のソフト制限を読み取る（ステップ１００）。仮想計算機に関する実ＣＰＵの割振りは、その仮想計算機にとって使用可能なＣＰＵ処理時間の量である。仮想専用メモリはその仮想計算機に割り振られた専用メモリの量であり、この専用メモリについて割り当てられたアドレスは実メモリにマッピングされる。実入出力は、その仮想計算機にとって使用可能な実入出力帯域幅の量である。次に、リソース・マネージャは、その仮想計算機による上記のリソースの現在の使用状況レベルを使用レコード８５からフェッチする（ステップ１０２）。上記のように、共通基本部分は、リソースに関するこれらの仮想および実使用状況レベルを定期的にモニターする。次にリソース・マネージャは、仮想計算機の実ＣＰＵ使用状況レベルを読み取る（ステップ１０４）。次に、リソース・マネージャは、仮想計算機による現在の実ＣＰＵ使用状況がそのソフト制限を超えているかどうかを判定する（判断１０６）。超えていない場合、リソース・マネージャは、仮想計算機が追加の仮想リソースを必要とするかどうかを判定する（判断１０７）。この判定は、仮想計算機が実ＣＰＵのタイム・スライスを有するたびに仮想計算機の作業負荷をモニターすることによって行われる。仮想計算機が実ＣＰＵにアクセスできるときに完了すべき未解決の作業を通常または必ず持っている場合、その仮想計算機はおそらく、より多くの実ＣＰＵの共用が必要となる。その場合、リソース・マネージャは、前述のように仮想計算機のクローンを作成する（ステップ１０８）。また、リソース・マネージャは、前述のような方法で共用作業待ち行列へのアクセス権をそのクローンに与える（ステップ１１０）。
【００３２】
もう一度、判断１０６を参照すると、仮想計算機の現在の実ＣＰＵ使用状況レベルがソフト制限と等しいかまたはそれを超えている場合、リソース・マネージャは、そのシステムの全実ＣＰＵが利用状態にあるかどうかを判定する（判断１１２）。十分利用されていない場合、１つまたは複数の他の仮想計算機がＣＰＵを「渇望」しており、他の仮想計算機に追加の実ＣＰＵリソースを与え、現在検討中の仮想計算機からいくつかのリソースを取り戻すことは公正なことである。したがって、リソース・マネージャは、以下のように仮想計算機のクローンの削除に取りかかることになる。リソース・マネージャは、仮想計算機（現在検討中）が現在、作業項目を実行しているかどうかを判定する（判断１１４）。実行している場合、リソース・マネージャは、仮想計算機がその現行作業項目を完了するのを待つ（ステップ１１６）。実行していない場合またはリソース・マネージャがその現行作業項目を完了した後、リソース・マネージャは、仮想計算機のクローンが１つ存在していると想定して、そのクローンを削除する（ステップ１２０）。
【００３３】
もう一度、判断１１２を参照すると、そのシステムの全実ＣＰＵが利用状態にある場合、仮想計算機のクローンを削除する必要はなく、他の仮想計算機は渇望していないはずである。しかし、クローンを削除して、他の実または仮想リソースを自由にすることが必要な場合もある。したがって、リソース・マネージャは、仮想計算機の仮想専用メモリ使用状況をチェックする（ステップ１３０）。（もう一度、判断１０７を参照すると、仮想計算機が実ＣＰＵを必要としていない場合、リソース・マネージャはステップ１３０にも移行する。）仮想計算機の仮想専用メモリ使用状況が割振り分の１００％である場合（判断１３２）、リソース・マネージャは前述のようにステップ１０８に移行して、仮想計算機のクローンを作成する。しかし、仮想専用メモリ使用状況が１００％未満である場合、リソース・マネージャは使用状況レベルを仮想専用メモリのソフト制限と比較する（判断１３６）。現在の仮想専用メモリ使用状況がソフト制限を超えている場合（判断１３８）、リソース・マネージャは判断１１４に移行し、次に前述のようにステップ１２０に移行して、現在、仮想計算機のクローンが１つ存在する場合はそのクローンを削除する。もう一度、判断１３６を参照すると、現在の仮想専用メモリ使用状況がソフト制限を超えていない場合、リソース・マネージャは、仮想計算機が追加の専用仮想メモリを必要とするかどうかを判定する（ステップ１４０）。この判定は、この仮想計算機に必要なページングの量をモニターすることによって行われる。仮想計算機が不十分な仮想専用メモリを有し、その余分なデータをディスク記憶装置に書き出さなければならないときに、「ページング」が行われる。仮想計算機が追加の専用メモリを必要とする場合、リソース・マネージャはステップ１０８に移行してクローンを作成する。必要としない場合、リソース・マネージャは、そのシステムの全実入出力帯域幅をチェックする（ステップ１４４）。次に、リソース・マネージャは、仮想計算機による現在の実入出力使用状況をチェックする（ステップ１４６）。仮想計算機による現在の実入出力使用状況がソフト制限未満である場合（判断１４８）、リソース・マネージャはステップ１０８に移行してクローンを作成する。ソフト制限未満ではない場合、リソース・マネージャは、そのシステムの全実入出力が十分利用されているかどうかを判定する（判断１５０）。十分利用されていない場合、リソース・マネージャは判断１１４およびステップ１２０に移行して、クローンが１つ存在する場合はそのクローンを削除する。十分利用されている場合、リソース・マネージャはステップ１００にループバックして、上記の処理方法を繰り返す。
【００３４】
上記に基づいて、本発明を実施するコンピュータ・システムについて説明してきた。しかし、本発明の範囲を逸脱せずに多数の修正および代用を行うことができる。たとえば、仮想計算機の代わりにロジカル・パーティションを使用することができるだろう。また、上記の技法と組み合わせて他の仮想リソース割振り技法を使用することもできる。たとえば、共通基本部分を介して作用する人間のシステム管理者は、各仮想計算機に対する仮想リソース割振りと、クローンを含むこのような仮想計算機に関するそれぞれのソフト制限を手作業で変更することができる。このような変更後、リソース・マネージャは、新しい割振りとソフト制限を使用して、クローンを追加または削除すべき時期を決定することになるだろう。したがって、本発明は、限定としてではなく例証として開示したものであり、本発明の範囲を決定するためには特許請求の範囲を参照しなければならない。
【００３５】
まとめとして、本発明の構成に関して以下の事項を開示する。
【００３６】
（１）仮想計算機オペレーティング・システム内でリソースを使用するための処理方法において、前記仮想計算機オペレーティング・システムが多数の仮想計算機を有し、リソースの一共用分が前記仮想計算機のそれぞれに割り振られ、前記処理方法（process）が、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況を自動的にモニターするステップと、
前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機を自動的にクローン化するステップであって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られるステップとを有する処理方法。
（２）前記クローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと考えられる作業をそのリソースとともに実行する前記クローンの後続ステップをさらに有する、上記（１）に記載の処理方法。
（３）リソースを備えた前記１つの仮想計算機とリソースを備えた前記クローンがいずれも共用作業待ち行列上の作業項目を実行するように、前記１つの仮想計算機と前記クローンが前記作業待ち行列を共用する、上記（１）に記載の処理方法。
（４）前記共用作業待ち行列が前記１つの仮想計算機と前記クローンによって共用されるメモリ内に常駐する、上記（３）に記載の処理方法。
（５）前記１つの仮想計算機と前記クローンがいずれも、適切なアドレスによって前記共用作業待ち行列に直接アクセスすることができる、上記（４）に記載の処理方法。
（６）前記共用作業待ち行列に関する前記共用メモリ内のロックをさらに有し、前記１つの仮想計算機と前記クローンが、前記共用作業待ち行列にアクセスする前に前記ロックを入手する、上記（４）に記載の処理方法。
（７）前記１つの仮想計算機と前記クローンがいずれも、適切なアドレスによって前記ロックに直接アクセスすることができる、上記（６）に記載の処理方法。
（８）前記１つの仮想計算機をクローン化する前記ステップの前に前記仮想計算機に割り振られたリソースの共用分が均等であり、前記１つの仮想計算機をクローン化する前記ステップの後に前記１つの仮想計算機のクローンを含む前記仮想計算機に割り振られたリソースの共用分が均等である、上記（１）に記載の処理方法。
（９）前記１つの仮想計算機による前記リソースの使用状況を自動的にモニターする後続ステップと、
前記使用状況がしきい値未満である場合に、前記クローンに前に割り振られたリソースの共用分が前記１つの仮想計算機と前記他の仮想計算機に割り振られるように、前記仮想計算機の前記クローンを自動的に削除する後続ステップとをさらに有する、上記（１）に記載の処理方法。
（１０）前記仮想計算機のうちの他の仮想計算機が追加リソースを必要とするまで、前記自動的に削除するステップが延期される、上記（１）に記載の処理方法。
（１１）前記１つの仮想計算機が前記第１の仮想計算機のユーザからの作業要求を受信する第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含み、前記クローンが前記第１のアプリケーションの前記コピーを使用して、前記第１の仮想計算機の前記ユーザによって行われた作業要求を実行する、上記（１）に記載の処理方法。
（１２）前記アプリケーションの前記コピーがユーザからの作業要求を受信しないように、前記アプリケーションの前記コピーにいかなるユーザも割り当てられない、上記（１０）に記載の処理方法。
（１３）前記１つの仮想計算機が前記第１の仮想計算機のユーザからの作業要求を受信する第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含み、前記コピーが他のユーザからの作業要求を受信する、上記（１）に記載の処理方法。
（１４）前記１つの仮想計算機が第１のアプリケーションを含み、前記クローンが前記第１のアプリケーションのコピーを含まない、上記（１）に記載の処理方法。
（１５）前記仮想計算機のそれぞれに割り振られる前記リソースのうちの１つがＣＰＵの一共用分である、上記（１）に記載の処理方法。
（１６）前記仮想計算機のそれぞれに割り振られる前記リソースがメモリと入出力とを有する、上記（１）に記載の処理方法。
（１７）前記クローンに割り振られるリソースの前記共用分が、前記１つの仮想計算機を含む前記多数の仮想計算機のすべてから取られる、上記（１）に記載の処理方法。
（１８）多数の仮想計算機であって、リソースの一共用分が前記仮想計算機のそれぞれに割り振られる多数の仮想計算機と、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況をモニターするための手段と、
前記１つの仮想計算機が追加リソースを必要とすることに応答して、前記１つの仮想計算機を自動的にクローン化するための手段であって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られる手段とを有する仮想計算機オペレーティング・システム。
（１９）前記クローンがその後、前記クローンの存在のためでないとしても前記１つの仮想計算機によって実行されたと考えられる作業をそのリソースとともに実行する、上記（１８）に記載のオペレーティング・システム。
（２０）リソースを備えた前記１つの仮想計算機とリソースを備えた前記クローンがいずれも共用作業待ち行列上の作業項目を実行するように、前記１つの仮想計算機と前記クローンが前記作業待ち行列を共用する、上記（１８）に記載のオペレーティング・システム。
（２１）前記共用作業待ち行列が前記１つの仮想計算機と前記クローンによって共用されるメモリ内に常駐する、上記（２０）に記載のオペレーティング・システム。
（２２）仮想計算機オペレーティング・システム内でリソースを使用するためのコンピュータ・プログラム記録媒体において、前記仮想計算機オペレーティング・システムが多数の仮想計算機を有し、リソースの一共用分が前記仮想計算機のそれぞれに割り振られ、前記コンピュータ・プログラム記録媒体が、
コンピュータ可読媒体と、
前記仮想計算機のうちの１つに割り振られたリソースの前記１つの仮想計算機による使用状況を自動的にモニターするための第１のプログラム命令と、
前記１つの仮想計算機が追加リソースを必要とする場合に、前記１つの仮想計算機を自動的にクローン化するための第２のプログラム命令であって、前記１つの仮想計算機と前記１つの仮想計算機のクローンに一緒に割り振られた結果の共用分が前記１つの仮想計算機がクローン化される前に前記１つの仮想計算機に割り振られた共用分より大きくなるように、前記クローンには前記仮想計算機のうちの他の仮想計算機の共用分から取られた前記リソースの一共用分が割り振られる第２のプログラム命令とを有し、
前記第１および第２のプログラム命令が前記媒体上に記録される、コンピュータ・プログラム記録媒体。
【図面の簡単な説明】
【００３７】
【図１】本発明による一状態にある複数の仮想計算機を備えたコンピュータ・システムのブロック図である。
【図２】本発明による他の状態にある複数の仮想計算機を備えた図１のコンピュータ・システムのブロック図である。
【図３】１つの仮想計算機とそのクローン（複数も可）をまとめて同期させることができるようにする同期またはロック機能のブロック図である。
【図４】図３の同期機能および仮想計算機とそのクローン（複数も可）の関連操作を示す流れ図である。
【図５】仮想計算機のクローンを作成し削除するための図１のコンピュータ・システム内のリソース・マネージャの動作を示す流れ図である。
【図６】仮想計算機のクローンを作成し削除するための図１のコンピュータ・システム内のリソース・マネージャの動作を示す流れ図である。
【符号の説明】
【００３８】
１０  コンピュータ・システム
１１  仮想計算機オペレーティング・システム
１２、１４，１６，  仮想計算機、ユーザ部分
１７  仮想計算機、リソース・マネージャ
２０  物理的コンピュータ
２１  基本部分
２２、２４  仮想計算機（Ｌｉｎｕｘ）、ゲスト・オペレーティング・システム
２３  ＣＰＵ
２５  共用メモリ
２６  ＣＭＳ仮想計算機、ゲスト・オペレーティング・システム
３２、３４、３６  アプリケーション
４２、４４、４６  スケジューラ
５２、５４、５６  作業待ち行列
５８  制御ブロック
６２、６４、６６  ＷＱＡＦ（作業待ち行列割当て機能）
７０〜７４、７６  作業項目
８４  リソース・モニター
８５  使用レコード
８６  起動機能
１９１  ディレクトリ
２１７  リソース・マネージャ
【図１】
2004326754.tif 000003
【図２】
2004326754.tif 000004
【図３】
2004326754.tif 000005
【図４】
2004326754.tif 000006
【図５】
2004326754.tif 000007
【図６】
2004326754.tif 000008