(57)【特許請求の範囲】
【請求項１】
管理システムによって、データセンターにおける計算機システムの物理トポロジーを表わす情報を受信するステップと、
仮想マシンをインスタンス化するためのリクエストを受信するステップであって前記リクエストが、前記仮想マシンに関する特性を示しているものと、
前記計算機システムの前記物理トポロジー及び前記仮想マシンの前記特性に基づいて、前記仮想マシンの仮想非一様メモリ・アーキテクチャ（ＮＵＭＡ：Non-Uniform Memory Architecture）ノードの数を決定するステップであって前記仮想ＮＵＭＡノードそれぞれが前記仮想マシンの複数の仮想プロセッサーと仮想メモリーの容量とを含み、前記ＮＵＭＡノードそれぞれが前記仮想マシン内に存在し、前記仮想マシンが物理ＮＵＭＡノード内に存在するものと、
前記データセンターにおける計算機システムへリクエストを送信するステップであって前記計算機システムへのリクエストが、前記決定された仮想ＮＵＭＡノード数を有する前記仮想マシンをインスタンス化することを前記計算機システムに指示しているものと、を含む方法。
【請求項２】
更に、
前記計算機システムが圧迫されていることを示す信号を受信するステップと、
前記計算機システムへ信号を送信するステップであって前記信号が、前記仮想マシンを第２の計算機システムへ送信するように前記計算機システムに指示するものと、を含む請求項１記載の方法。
【請求項３】
更に、前記計算機システムへ信号を送信するステップであって前記信号が、前記仮想マシンを第１のＮＵＭＡノードから第２のＮＵＭＡノードへ移動するように前記計算機システムに指示するものと、を含む請求項１記載の方法。
【請求項４】
前記仮想マシンに対する前記仮想ＮＵＭＡノード数を決定するステップが更に、
前記データセンターにおける最大のＮＵＭＡ比を決定するステップを含む請求項１記載の方法。
【請求項５】
計算機システムであって、
仮想マシンをインスタンス化するリクエストを受信するための回路と、
前記仮想マシンを生成するための回路であって前記仮想マシンが、複数の仮想非一様メモリ・アーキテクチャ（ＮＵＭＡ：Non-Uniform Memory Architecture）ノードを含むトポロジーを有しており、前記複数の仮想ＮＵＭＡノードの内の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサー及びゲスト物理アドレスの範囲を含んでおり、仮想ＮＵＭＡノードのそれぞれが前記仮想マシンの内に存在し、前記仮想マシンの前記トポロジーが、前記計算機システムの物理トポロジーから独立して生成されるものと、
前記仮想マシンをインスタンス化するための回路であって前記仮想マシンが、前記仮想ＮＵＭＡノードを含んでいるものと、を含む計算機システム。
【請求項６】
更に、
前記仮想マシンをセーブするための回路を含む請求項５記載の計算機システム。
【請求項７】
更に、
前記仮想マシンをリモート計算機システムへ送信するための回路を含む請求項５記載の計算機システム。
【請求項８】
更に、
前記仮想マシンを別の１つ以上のＮＵＭＡノードへ移動させるための回路を含む請求項５記載の計算機システム。
【請求項９】
更に、
前記仮想マシンを第１のＮＵＭＡノードに割り当てるための回路と、
前記仮想マシンを前記複数の仮想ＮＵＭＡノードのうち第２のＮＵＭＡノードへ移動させるための回路と、を含む請求項５記載の計算機システム。
【請求項１０】
更に、
前記複数の仮想ＮＵＭＡノードに関するＮＵＭＡ比を生成するための回路と、
前記複数の仮想ＮＵＭＡノードに関する前記ＮＵＭＡ比をゲストオペレーティングシステムへ報告するための回路と、を含む請求項５記載の計算機システム。
【請求項１１】
更に、
第１の仮想ＮＵＭＡノードからの第１のゲスト物理アドレスと、第２の仮想ＮＵＭＡノードからの第２のゲスト物理アドレスと、をアクセスするためのリクエストをゲストオペレーティングシステムから受信するための回路と、
前記第１及び第２のゲスト物理アドレスをアクセスするために必要なアクセス時間を増大するための回路と、
前記第１及び第２のゲスト物理アドレスをアクセスするために必要な前記増大したアクセス時間を前記ゲストオペレーティングシステムへ報告するための回路と、を含む請求項５記載の計算機システム。
【請求項１２】
更に、
システムメモリーアドレスを前記仮想マシンに割り当てるための回路であって前記システムメモリーアドレスが、単一のＮＵＭＡノードから取得されているものと、
少なくとも１つの前記仮想プロセッサーの内の仮想プロセッサーを実行するためのプロセッサーを割り当てるための回路であって前記プロセッサーが、単一の前記ＮＵＭＡノードから取得されているものと、を含む請求項５記載の計算機システム。
【請求項１３】
前記仮想マシンをインスタンス化するための前記回路が更に、
前記複数の仮想ＮＵＭＡノードの内の第１の仮想ＮＵＭＡノードを前記計算機システムの第１のＮＵＭＡノードへマッピングするための回路と、
前記複数の仮想ＮＵＭＡノードの内の第２の仮想ＮＵＭＡノードを前記計算機システムの前記第１のＮＵＭＡノードへマッピングするための回路と、を含むことを特徴とする請求項５記載の計算機システム。
【請求項１４】
前記仮想マシンをインスタンス化するための前記回路が更に、
前記複数の仮想ＮＵＭＡノードの内の第１の仮想ＮＵＭＡノードを前記計算機システムの第１のＮＵＭＡノードへマッピングするための回路と、
前記複数の仮想ＮＵＭＡノードの内の第２の仮想ＮＵＭＡノードを前記計算機システムの第２のＮＵＭＡノードへマッピングするための回路と、を含むことを特徴とする請求項５記載の計算機システム。
【請求項１５】
前記仮想ＮＵＭＡノードに関する前記ＮＵＭＡ比が、データセンターにおいて検出される平均のＮＵＭＡ比よりも大きく、前記データセンターが、複数の計算機システムを含んでいること、を特徴とする請求項１０記載の計算機システム。
【請求項１６】
プロセッサー実行可能命令を含む計算機可読記憶媒体であって、
仮想マシンに対する複数の仮想非一様メモリ・アーキテクチャ（ＮＵＭＡ：Non-Uniform Memory Architecture）ノードを生成するための命令であって前記複数の仮想ＮＵＭＡノードの内の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサーと、少なくとも１つのゲスト物理アドレスのメモリーブロックとを含み、仮想ＮＵＭＡノードのそれぞれが前記仮想マシンの内で実行され、前記複数の仮想ＮＵＭＡノードが、任意の計算機システムの物理トポロジーから独立して生成しているものと、
前記仮想マシンを第１の計算機システム上にインスタンス化するための命令であって前記仮想マシンが、前記複数の仮想ＮＵＭＡノードを含んでいるものと、含む計算機可読記憶媒体。
【請求項１７】
更に、
前記第１の計算機システムのＮＵＭＡノード上で実行する第１の仮想ＮＵＭＡノード及び第２の仮想ＮＵＭＡノードを割り当てる命令を含む請求項１６記載の計算機可読記憶媒体。
【請求項１８】
更に、
前記第１の計算機システムの第１のＮＵＭＡノード上で実行するために前記複数の仮想ＮＵＭＡノードの内の第１の仮想ＮＵＭＡノードを割り当てるための命令と、
前記第１の計算機システムの第２のＮＵＭＡノード上で実行するために前記複数の仮想ＮＵＭＡノードの内の第２の仮想ＮＵＭＡノードを割り当てるための命令と、を含む請求項１６記載の計算機可読記憶媒体。
【請求項１９】
更に、
前記複数の仮想ＮＵＭＡノードに関するＮＵＭＡ比を生成するための命令と、
前記ＮＵＭＡ比をゲストオペレーティングシステムへ報告するための命令と、を含む請求項１６記載の計算機可読記憶媒体。
【請求項２０】
更に、
前記仮想マシンに関連付けられたＮＵＭＡノードが過度にコミットされていることを決定するための命令と、
前記仮想マシンを別の１つ以上のＮＵＭＡノードへ移動させるための命令と、を含む請求項１６記載の計算機可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、仮想化技術に関し、具体的には、仮想マシン用のメモリーアーキテクチャーに関する。
【背景技術】
【０００２】
[0001]仮想化技術は、複数のパーティション間においてハードウェア資源を共有することを可能にし、各パーティションがゲストオペレーティングシステムをホスティングすることを可能にする。通常、仮想マシン技術は、サーバーを統合化し、それらの移植性を増大させるために利用され得る。仮想マシンがより大きくなりそれらの作業負荷が増大するにつれて、それらをある計算機システムから別の計算機システムへ容易に統合及び／又は移動させる機能は、より困難になっている。したがって、より大きな仮想マシンを統合化及び／又は移動させる能力を増大する技法が望まれている。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、仮想マシン用の仮想ＮＵＭＡアーキテクチャーを達成するための技法を提供することである。
【課題を解決するための手段】
【０００４】
[0002]本開示の実施形態例は、一方法を記述している。この例において、本方法はこれらに限定しないが、データセンターにおける計算機システムの物理トポロジーを表わす情報を管理システムによって受信するステップと、仮想マシンをインスタンス化するためのリクエストを受信するステップであってリクエストが、仮想マシンに関する特性を示しているものと、計算機システムの物理トポロジー及び仮想マシンに関する特性に基づいて仮想マシンに対する仮想ＮＵＭＡノード数を決定するステップと、リクエストをデータセンターにおける計算機システムへ送信するステップであってリクエストが、決定された仮想ＮＵＭＡノード数を有する仮想マシンをインスタンス化するように計算機システムに指示するものと、を含む。前述のものに加えて別の態様が、本開示の一部を形成する請求項、図面、及びテキストに記述される。
【０００５】
[0003]本開示の実施形態例は、一方法を記述している。この例において、本方法はこれらに限定しないが、仮想マシンをインスタンス化するためのリクエストを受信するステップと、仮想マシンを生成するステップであって仮想マシンが、複数の仮想ＮＵＭＡノードを含むトポロジーを有しており、複数の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサー及びゲスト物理アドレスの範囲を含んでおり、仮想マシンのトポロジーが、計算機システムの物理トポロジーから独立して生成されるものと、仮想マシンをインスタンス化するステップであって仮想マシンが、仮想ＮＵＭＡノードを含んでいるものと、を含む。前述のものに加えて別の態様が、本開示の一部を形成する請求項、図面、及びテキストに記述される。
【０００６】
[0004]本開示の実施形態例は、方法を記述している。この例において、本方法はこれらに限定しないが、仮想マシンに対する複数の仮想ＮＵＭＡノードを生成するステップであって複数の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサー及び少なくとも１つのゲスト物理アドレスのメモリーブロックを含んでいて、複数の仮想ＮＵＭＡノードが、任意の計算機システムの物理トポロジーから独立して生成するものと、計算機システム上で仮想マシンをインスタンス化するステップであって仮想マシンが、複数の仮想ＮＵＭＡノードを含んでいるものと、を含む。前述のものに加えて別の態様が、本開示の一部を形成する請求項、図面、及びテキストに記述される。
【０００７】
[0005]本開示の１つ以上の様々な態様は、本明細書に参照されている本開示の態様に作用するための回路及び／又はプログラムであって回路及び／又はプログラムが、システム設計者の設計選択に従って本明細書に参照されている態様に効果的になるように構成されたハードウェア、ソフトウェア、及び／又はファームウェアの実際の組み合わせのいずれかであり得るものを含むが、これらに制限しないことが当業者によって十分に理解されよう。
【０００８】
[0006]前述のものは概要であって、かくして必然的に、詳細の簡素化、一般化、及び省略を含む。当業者は、概要が例示に過ぎず、任意の方法に制限することを意図しないことを十分に理解されよう。
【図面の簡単な説明】
【０００９】
【図１】[0007]  本開示の態様が実装され得る計算機システムの例を表している。
【図２】[0008]  本開示の態様を実施するための動作環境を表している。
【図３】[0009]  本開示の態様を実施するための動作環境を表している。
【図４】[0010]  実施形態においてメモリーがどのように配置され得るか表している。
【図５】[0011]  本開示の態様を実施する動作環境の例を表している。
【図６】[0012]  本開示の態様を実施する動作環境の例を表している。
【図７】[0013]  本開示の態様を実施する動作環境の例を表している。
【図８】[0014]  本開示の態様を実施するための動作手順を表している。
【図９】[0015]  図８の動作手順（８００）の代替実施形態を表している。
【図１０】[0016]  本開示の態様を実施するための動作手順を表している。
【図１１】[0017]  図１０の動作手順（１０００）の代替実施形態を表している。
【図１２】[0018]  図１１の動作手順（１０００）の代替実施形態を表している。
【図１３】[0019]  本開示の態様を実施するための動作手順を表している。
【図１４】[0020]  図１３の動作手順（１３００）の代替実施形態を表している。
【発明を実施するための形態】
【００１０】
[0021]実施形態は１つ以上の計算機上で実行し得る。図１及び以下の論述は、本開示が実装され得る適切な計算環境の簡潔な概説を提供することを意図している。当業者は、図１の計算機システムがいくつかの実施形態において、計算機システム（２００）、（３００）、（６００）、及び（７００）を達成可能なことを十分に理解できよう。これらの実施形態例において、計算機システムは、図１に記述されたコンポーネント及び本開示の態様を例示化するように構成される回路のいくつか又はすべてを含み得る。
【００１１】
[0022]本開示を介し使用されている用語「回路」は、ハードウェア割り込みコントローラー、ハードドライブ、ネットワークアダプター、グラフィックスプロセッサー、ハードウェアベースのビデオ／オーディオコーデックのようなハードウェアコンポーネント、及びそのようなハードウェアを操作するために使用されるファームウェア／ソフトウェアを含み得る。同一又は別の実施形態において、用語「回路」は、ファームウェア又は一定の方法で設定される切り換えによって機能（単数又は複数）を実行するように構成されるマイクロプロセッサーを含み得る。同一又は別の実施形態例において、用語「回路」は、１つ以上の論理プロセッサー、例えば１つ以上のコアであるマルチコア汎用演算処理装置を含み得る。この例において論理プロセッサー（単数又は複数）は、メモリー、例えば、ＲＡＭ、ＲＯＭ、ファームウェア、及び／又は仮想メモリーからロードされる機能（単数又は複数）を実行するように作動可能なロジックを具体化しているソフトウェア命令によって、構成され得る。回路がハードウェア及びソフトウェアの組み合わせを含む実施形態例において、実装者は、ロジックを具体化しているソースコードを書き出し得、その後、論理プロセッサーによって処理され得る計算機読み出し可能コードにコンパイルされる。最先端技術がハードウェア、ソフトウェア、又はハードウェア／ソフトウェアの組み合わせの間でほとんど差異がない点へ発展していることを当業者は十分に理解し得るので、機能を達成するハードウェア対ソフトウェアの選択は、単なる設計選択に過ぎない。かくして、当業者は、ソフトウェアプロセスが同等のハードウェア構造に変換され得ることと、ハードウェア構造がそれ自体、同等のソフトウェア処理に変換され得ることと、を十分に理解し得るので、ハードウェア実装対ソフトウェア実装の選択は、設計選択の１つであって実装者に任せられている。
【００１２】
[0023]ここで図１を参照すると、例示的な汎用計算システムが表されている。汎用計算システムは、従来の計算機（２０）などを含み得、論理プロセッサー（２１）、システムメモリー（２２）、システムメモリーを含む様々なシステムコンポーネントを論理プロセッサー（２１）と接続する及びシステムバス（２３）を含んでいる。システムバス（２３）は、いくつかのタイプのバス構造のいずれかであり得、メモリーバス、又はメモリーコントローラー、周辺機器用バス、様々なバスアーキテクチャのいずれかを使用するローカルバスを含んでいる。システムメモリーは、読み出し専用メモリー（ＲＯＭ）（２４）及びランダムアクセスメモリー（ＲＡＭ）（２５）を含み得る。始動中など、計算機（２０）内部のエレメント間に情報を送信する支援をする基本的ルーチンを含んでいる基本入力／出力システム（ＢＩＯＳ）（２６）は、ＲＯＭ（２４）にストアされている。計算機（２０）は更に、（図示されていない）ハードディスクから読み込むか又はそれに書き出すためのハードディスクドライブ（２７）、取り外し可能磁気ディスク（２９）から読み出すか又は書き出すための磁気ディスクドライブ（２８）、及びＣＤ−ＲＯＭ又はその他の光学式媒体のような取り外し可能光学式ディスク（３１）から読み出すか又はそれに書き込むための光学式ディスクドライブ（３０）を含み得る。ハードディスクドライブ（２７）、磁気ディスクドライブ（２８）、及び光ディスクドライブ（３０）がそれぞれ、ハードディスクドライブインターフェース（３２）、磁気ディスクドライブインターフェース（３３）、及び光学式ドライブインターフェース（３４）によってシステムバス（２３）に関連付けられるように示されている。ドライブ及びそれらの関連する計算機可読記憶媒体は、計算機（２０）に対する命令、データ構造、プログラムモジュール、及びその他のデータの不揮発性計算機可読記憶装置を提供する。本明細書に説明される例示的環境は、ハードディスク、取り外し可能磁気ディスク（２９）、及び取り外し可能光学式ディスク（３１）を使用しているが、磁気カセット、フラッシュメモリーカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリー（ＲＡＭ）、読み出し専用メモリー（ＲＯＭ）などのような計算機によってアクセス可能なデータをストアし得る別のタイプの計算機可読記憶媒体もまた例示的動作環境において使用され得ることが当業者によって十分に理解される必要がある。通常、実施形態の中にはそのような計算機可読記憶媒体が、本開示の態様を具体化するプロセッサー実行可能命令をストアするために使用され得るものもいくつかある。
【００１３】
[0024]多くのプログラムモジュールは、ハードディスク、磁気ディスク（２９）、光ディスク（３１）、ＲＯＭ（２４）、又はＲＡＭ（２５）上にストアされ得、オペレーティングシステム（３５）、１つ以上のアプリケーションプログラム（３６）、その他のプログラムモジュール（３７）、及びプログラムデータ（３８）を含んでいる。ユーザーは、キーボード（４０）及びポインティングデバイス（４２）のような入力装置を介し、コマンド及び情報を計算機（２０）へ入力し得る。その他の（図示されていない）入力装置は、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信機、スキャナーなどを含み得る。これら及びその他の入力装置は多くの場合、システムバスに接続されるシリアルポートインターフェース（４６）を介し、論理プロセッサー（２１）に接続されるが、しかしながらパラレルポート、ゲームポート又は普遍的なシリアルバス（ＵＳＢ）のような別のインターフェースによって接続される。ディスプレイ（４７）又はその他のタイプの表示装置もビデオアダプター（４８）のようなインターフェースを介しシステムバス（２３）に接続され得る。ディスプレイ（４７）に加えて計算機は典型的に、スピーカー及びプリンターのような別の（図示されていない）周辺出力装置を含む。図１の例示的システムは、ホストアダプター（５５）、小型コンピューター用周辺機器インターフェース（ＳＣＳＩ）バス（５６）、及びＳＣＳＩバス（５６）に接続される外部記憶装置（６２）も含む。
【００１４】
[0025]計算機（２０）は、リモートコンピューター（４９）のような１つ以上のリモートコンピューターとの論理接続を利用するネットワーク環境において作動し得る。リモートコンピューター（４９）は、別の計算機、サーバー、ルーター、ネットワークＰＣ、ピア装置又はその他の一般的ネットワークノードであり得、典型的に、前述した計算機（２０）に関連するエレメントの多く又はすべてを含み得るが、メモリー記憶装置（５０）だけが図１に例示されている。図１に表された論理接続は、ローカルエリアネットワーク（ＬＡＮ）（５１）及び広域ネットワーク（ＷＡＮ）（５２）を含み得る。そのようなネットワーク環境は、オフィス、企業規模コンピューターネットワーク、イントラネット及びインターネットにおいて一般的である。
【００１５】
[0026]ＬＡＮネットワーク環境において利用されるとき、計算機（２０）は、ネットワークインターフェース又はアダプター（５３）を介し、ＬＡＮ（５１）へ接続され得る。ＷＡＮネットワーク環境において利用されるとき、計算機（２０）は、典型的に、インターネットのような広域ネットワーク（５２）を介した通信を確立するためのモデム（５４）又はその他の手段を含み得る。内蔵又は外付けがあり得るモデム（５４）が、シリアルポートインターフェース（４６）を介しシステムバス（２３）へ接続され得る。ネットワーク環境において、計算機（２０）又はその一部に関連し表されたプログラムモジュールが、リモートメモリー記憶装置にストアされ得る。示されたネットワーク接続が例示的であって、計算機間において通信リンクを確立する別の手段が使用され得ることを十分に理解されよう。更に、本開示の多くの実施形態がコンピューター化されたシステムに対し特に適切であるように描かれているが、本書における開示をそのような実施形態に限定することは意図されていない。
【００１６】
[0027]ここで図２及び図３を参照すると、それらは計算機システムの高水準のブロック図を表している。図面によって示されているように、計算機システム（２００）は、例えば、記憶装置（２０８）、ハードドライブ、ネットワークインターフェースコントローラー（ＮＩＣ）（２１０）、グラフィックカード（２３４）、少なくとも１つの論理プロセッサー（２１２）、ランダムアクセスメモリー（ＲＡＭ）（２１４）のような物理ハードウェアデバイスを含み得る。計算機システム（２００）は、図１の計算機（２０）と同様のコンポーネントも含み得る。１つの論理プロセッサーが例示されているが、別の実施形態において、計算機システム（２００）は、複数の論理プロセッサー、例えば、プロセッサーあたり複数の実行コア及び／又は複数の実行コアをそれぞれ有する複数のプロセッサー、を有し得る。図２の説明を続けると、表されているものは、当技術分野において、仮想マシンモニターとしても参照され得るハイパーバイザー（２０２）である。表された実施形態において、ハイパーバイザー（２０２）は、計算機システム（２００）のハードウェアへのアクセスを制御し、仲裁するための実行可能命令を含む。概してハイパーバイザー（２０２）は、子パーティション１から子パーティションＮ（Ｎは１より大きい整数）のようなパーティションと呼ばれる実行環境を生成し得る。実施形態において、子パーティションは、ハイパーバイザー（２０２）によって支援される分離単位と考えられ得、すなわち、子パーティションそれぞれが、ハイパーバイザー（２０２）及び／又は親パーティションの制御下にある一連のハードウェア資源、例えば、メモリー、デバイス、論理プロセッサーサイクルなどへマッピングされ得る。実施形態において、ハイパーバイザー（２０２）は、スタンドアロンソフトウェア製品、オペレーティングシステムの一部、マザーボードのファームウェア内埋め込み、専用集積回路、又はその組み合わせであり得る。
【００１７】
[0028]表された例において、計算機システム（２００）は、オープンソースコミュニティにおいて、ドメイン０としても考えられ得る親パーティション（２０４）を含む。親パーティション（２０４）は、オープンソースコミュニティにおいて、バックエンドドライバーとしても知られている仮想化サービスプロバイダー（２２８）（ＶＳＰ）（複数）を使用することによって、子パーティション（１〜Ｎ）を実行しているゲストオペレーティングシステムへリソースを提供するように構成され得る。このアーキテクチャー例において、親パーティション（２０４）は基本ハードウェアへのアクセスを開閉し得る。概してＶＳＰ（２２８）は、オープンソースコミュニティにおいて、フロントエンドドライバーとしても知られている仮想化サービスクライアント（ＶＳＣ）を介し、ハードウェア資源に対するインターフェースを多重化するために使用され得る。子パーティションそれぞれは、ゲストオペレーティングシステム（２２０〜２２２）が管理し得、その上で実行するスレッドをスケジューリングし得る仮想プロセッサー（２３０〜２３２）のような１つ以上の仮想プロセッサーを含み得る。通常、仮想プロセッサー（２３０〜２３２）は、実行可能命令であって、特定のアーキテクチャーを有する物理プロセッサー表現を提供する関連状態情報である。例えば、１つの仮想マシンは、インテルｘ８６プロセッサーの特性を有する仮想プロセッサーを有し得るが、一方で別の仮想プロセッサーは、パワーＰＣプロセッサーの特性を有し得る。この例において、仮想プロセッサーは、仮想プロセッサーを達成する命令が論理プロセッサーによって支援されるように、計算機システムの論理プロセッサーへマッピングされ得る。かくして、これらの実施形態例において、複数の仮想プロセッサーが、例えば、別の論理プロセッサーがハイパーバイザー命令を実行している間、同時に実行し得る。一般的に言えば、図面によって例示されるように、パーティションにおける仮想プロセッサー、様々なＶＳＣ、及びメモリーの組み合わせが、仮想マシン（２４０）又は（２４２）のような仮想マシンであると考えられ得る。
【００１８】
[0029]通常、ゲストオペレーティングシステム（２２０〜２２２）は、例えば、マイクロソフト（登録商標）、アップル（登録商標）、オープンソースコミュニティから提供されるオペレーティングシステムのような任意のオペレーティングシステムを含み得る。ゲストオペレーティングシステムは、ユーザー／カーネル動作モードを含み得、スケジューラー、メモリーマネージャーなどを含み得るカーネルを有し得る。ゲストオペレーティングシステム（２２０〜２２２）それぞれが、その上にストアされる電子商取引サーバー、電子メールサーバーのようなアプリケーションを有し得るファイルシステムと、ゲストオペレーティングシステム自体と、を関連付けている。ゲストオペレーティングシステム（２２０〜２２２）は、仮想プロセッサー（２３０〜２３２）上で実行するスレッドをスケジューリングし得、そのようなアプリケーションのインスタンスが達成され得る。
【００１９】
[0030]ここで図３を参照すると、それは使用され得る代替アーキテクチャーを例示している。図３は、図２のそれと同様のコンポーネントを表しているが、しかし、この実施形態例において、ハイパーバイザー（２０２）は仮想化サービスプロバイダー（２２８）及びデバイスドライバー（２２４）を含み得、親パーティション（２０４）は設定ユーティリティ（２３６）を含み得る。このアーキテクチャーにおいて、ハイパーバイザー（２０２）は、図２のハイパーバイザー（２０２）と同一か又は同様の機能を実行し得る。図３のハイパーバイザー（２０２）は、スタンドアロンのソフトウェア製品、オペレーティングシステムの一部、マザーボードのファームウェア内部に埋め込まれているか、又はハイパーバイザー（２０２）の一部が専用集積回路によって達成され得る。この例において、親パーティション（２０４）は、ハイパーバイザー（２０２）を構成するために使用され得る命令を有し得るが、しかし、ハードウェアアクセスリクエストは、親パーティション（２０４）へ渡される代わりにハイパーバイザー（２０２）によって処理され得る。
【００２０】
[0031]ここで図４を参照すると、それは仮想マシンを含む実施形態において、メモリーがどのように配置され得るか例示している。例えば、計算機システム（２００）のような計算機システムは、メモリーアドレスを有しているＲＡＭ（２１４）を有し得る。システム物理メモリーアドレスを仮想マシンへ報告する代わりに、ハイパーバイザー（２０２）は、システム物理アドレス、例えば、ゲスト物理アドレス（ＧＰＡ）に関する別のアドレスをゲストオペレーティングシステムのメモリーマネージャーへ提示し得る。ゲストオペレーティングシステムがその後、ゲスト物理アドレスを操作し得、ハイパーバイザー（２０２）がＧＰＡ及びＳＰＡによる関係を維持する。図面によって示されるように、実施形態において、ＧＰＡ及びＳＰＡは、メモリーブロックの中へ配置され得る。概してメモリーブロックは、１つ以上のメモリーページを含み得る。ＧＰＡとＳＰＡとの間の関係は、「Ｅｎｈａｎｃｅｄ  Ｓｈａｄｏｗ  Ｐａｇｅ  Ｔａｂｌｅ  Ａｌｇｏｒｉｔｈｍｓ」と題する米国特許出願Ｎｏ．１１／１２８，６６５に記載されているようなシャドウページテーブルによって維持され得、その内容をすべて参照として本明細書に組み込む。作動中、ゲストオペレーティングシステムがブロック１のＧＰＡにデータをストアしたとき、データは、実際にはシステム上のブロック６のような異なるＳＰＡにストアされ得る。
【００２１】
[0032]手短に述べると図５は、本開示の態様を実施するための動作環境を表している。例えば、多くの計算機システム（５０４〜５１０）がデータセンター（５００）に共に接続され得る（４つの計算機システムが表されているが、当業者は、データセンターがより多いか又はより少ない計算機システムを含み得ることを十分に理解できよう）。表されている計算機システムは、異なるトポロジーを有し得、その上、それらは、異なる特性、例えば、異なるＲＡＭ数、異なるＲＡＭ速度、異なる論理プロセッサー数、及び／又は異なる速度を持つ論理プロセッサーを有し得る。
【００２２】
[0033]管理システム（５０２）は、図１の計算機（２０）、及び／又は計算機システム（２００）、（３００）、（６００）、又は（７００）と同様のコンポーネントを有し得る。すなわち、実施形態において、管理システム（５０２）は、図６又は図７に関し後述される対象項目を含む計算機システムであり得る。
【００２３】
[0034]図面の概要を続けると、図６は、完全対称型マルチプロセッシングトポロジー（ＳＭＰ）又は「フラット」トポロジーを有する計算機システム（６００）を表している。通常、ＳＭＰは、単一の共有メモリーに接続される複数のプロセッサーを含むコンピューターアーキテクチャーである。この手続きにおいては、メモリーコントローラー（６０２）が、メモリーへのデータフロー及びメモリーからのデータフローを管理し得る。メモリーアクセスは、論理プロセッサー（２１２Ａ〜Ｆ）それぞれに対し一様であり得、論理プロセッサーそれぞれは、メモリー範囲全体、すなわち、システム物理アドレス（６２２〜６３２）をアクセスし得る。このトポロジーは、比較的少ない数のプロセッサーを用いた計算機システムに対し十分に動作するが、しかしながら計算機システムは多くのプロセッサーを含んでいて、すべてが共有メモリーバスへのアクセスを求めて競合し、システム性能が低下し得る。その上、計算機システムの複雑さが、著しく増加し、次々に１プロセッサーあたりの価格をつり上げる。
【００２４】
[0035]手短に述べると計算機システム（６００）は、計算機（２００）又は（３００）と同一か又は同様のコンポーネントを含み得る。図面によって示されるように、計算機システム（６００）は、ＲＡＭ（２１４）へのアクセスを開閉するメモリーコントローラー（６０２）を介し連結された複数の論理プロセッサー（２１２Ａ〜２１２Ｆ）を有し得る（６つの論理プロセッサーが表されているが、計算機システムはより多いか又は少ないものを有し得る）。前述のものと同様に、論理プロセッサー（２１２Ａ〜２１２Ｆ）それぞれは、異なる特性、例えば、クロック速度、キャッシュサイズなどを有し得る。この手続きにおいては、メモリーコントローラー（６０２）が、ＲＡＭ（２１４）へのデータフロー及びＲＡＭ（２１４）からのデータフローを管理し得る。
【００２５】
[0036]ハイパーバイザー（２０２）がインスタンス化され得、それが計算機システム（６００）のハードウェアを制御し得る。ハイパーバイザー（２０２）が１つ以上の仮想マシン（２４０〜２４２）を管理し得、それぞれは、仮想ＮＵＭＡノード（６０６〜６１２）のような仮想ＮＵＭＡノードを有し得る。仮想ＮＵＭＡノード（６０６〜６１２）が使用され得、ゲストアプリケーション又はゲストオペレーティングシステム（２２０）及び（２２２）のようなゲストオペレーティングシステムへ仮想トポロジーを報告することによって、仮想マシンのリソースを統合化し得る。図面によって示されるように、仮想ＮＵＭＡノード（６０６〜６１２）それぞれは、１つ以上の仮想プロセッサー（２３０Ａ〜Ｄ、２３２Ａ〜Ｄ）、及びゲスト物理アドレス（６１４〜６１６）及び（６１８〜６２０）を有し得る。通常、ハイパーバイザー（２０２）は、１つ以上の論理プロセッサーを有する仮想ＮＵＭＡノード（６０６〜６１２）それぞれと、ＲＡＭ（２１４）からのシステム物理アドレスと、を支援し得る。すなわち、ハイパーバイザー（２０２）は、仮想プロセッサースレッドを実行するために使用され得る理想的なプロセッサーとして１つ以上の論理プロセッサーを設定し得る。
【００２６】
[0037]手短に述べると図７は、ＮＵＭＡノード（７０２〜７０６）を含むトポロジーを有する計算機システム（７００）を表している。ＮＵＭＡノードを有する計算機システムは、通常、より小さな計算機システム又はセルから作り上げられた計算機システムとして考えられ得る。この例において、ＮＵＭＡノードそれぞれ（６０６〜６１２）は、１つ以上の論理プロセッサー及びローカルメモリーを含み得る。ＮＵＭＡノードの内部メモリーは、ローカルメモリーであると考えられ、別のＮＵＭＡノードの内部メモリーは、ノード内部のプロセッサーだけが同一のメモリーバスと接続され得るので、リモートメモリーであると考えられる。ＮＵＭＡノードは、キャッシュ一貫性ドメイン相互接続によって相互に接続され、１つのＮＵＭＡノード内のプロセッサーは、首尾一貫した方法で別のＮＵＭＡノード内のメモリーをアクセス可能にする。かくして、システム物理アドレス（６２２〜６３２）は、プロセッサーそれぞれに関し一様である。すなわち言い換えると、システム物理アドレス２０，０００は計算機システムにおいて、すべてのプロセッサーに対し同一である。相違は、いくつかのプロセッサーに関し、メモリーアドレス２０，０００が、例えば、それらのＮＵＭＡノード内部のローカルメモリーアドレスであって、別のプロセッサーに対するメモリーアドレス２０，０００が、例えば、それらのＮＵＭＡノードの外部、リモートであることである。通常、ローカルメモリーは、リモートメモリーよりも高速にアクセスされ得、ローカルアクセス時間対リモートアクセス時間の間の関係はＮＵＭＡ比として参照される。ＮＵＭＡ比１対２は、特定のリモートシステム物理アドレスをアクセスするプロセッサーサイクル数が、ローカルシステム物理アドレスよりも２倍かかることを意味する。ＮＵＭＡは、任意の１つのメモリーバス上のプロセッサー数を制限することによって、ＳＭＰシステムによってもたらせられるボトルネックを軽減し、通常、同一の論理プロセッサー数を有するＳＭＰ計算機システムよりも高価にならない。
【００２７】
[0038]計算機システム（７００）は、計算機（２００）又は（３００）と同一か又は同様のコンポーネントを含み得る。図面によって示されるように、この動作環境において、計算機システム（７００）は、相互接続（７０８）によって接続された３つのＮＵＭＡノード（７０２〜７０６）を含む（けれども計算機は多いか又は少ないものを有し得る）。前述したものと同様に、ＮＵＭＡノードそれぞれの内部のプロセッサー数は変化し得、プロセッサーの特性が変化し得、ノードそれぞれはそれ自身のＲＡＭを有し得る。
【００２８】
[0039]図７と同様にハイパーバイザー（２０２）は、計算機システム（７００）のハードウェアを制御し得る。ゲストオペレーティングシステム又はモノリスアプリケーションがブートしたとき、それが前述したものと同様の仮想マシン（２４０）及び（２４２）のトポロジーを検出し得る。仮想ＮＵＭＡノード（６０６〜６１２）それぞれが、１つ以上のＮＵＭＡノードから１つ以上の理想的なプロセッサー、及びメモリーを割り当てられ得る。
【００２９】
[0040]計算機システム（６００）及び（７００）が２つの仮想マシン（２４０）及び（２４２）を含んでいるように表されているが、別の実施形態において、それらは、より多いか又はより少ない仮想マシンを実行し得る。その上、仮想マシンそれぞれが２つの仮想ＮＵＭＡノードを有しているように表されているが、別の実施形態において、仮想マシンは、より多いか又はより少ない仮想ＮＵＭＡノードを有し得る。仮想ＮＵＭＡノードも２つの仮想プロセッサーを有するように表されているが、別の実施形態において、仮想ＮＵＭＡノードは、より多いか又はより少ない仮想プロセッサーを有し得る。更に、仮想ＮＵＭＡノードそれぞれは、別の仮想ＮＵＭＡノードと異なるトポロジーを有し得、例えば、ある仮想ＮＵＭＡノードは４つの仮想プロセッサー及び８ギガバイトＲＡＭを有し得るが、別の仮想ＮＵＭＡノードは２つの仮想プロセッサー及び４ギガバイトＲＡＭとを有し得る。
【００３０】
[0041]以下は、プロセスの実装を表している一連の流れ図である。理解を容易にするため、流れ図は、最初の流れ図が「大画像」の観点を介する実装を表し、その後の流れ図が更なる追加及び／又は詳細を提供するように統合化されている。更に当業者は、点線によって表された動作手順が、任意に考えられることを十分に理解されよう。
【００３１】
[0042]ここで図８に移ると、それは動作（８００〜８０８）を含む本開示の態様を実施するための動作手順を表している。動作手順は、動作（８００）で開始し、動作（８０２）は、データセンターにおける計算機システムの物理トポロジーを表わす情報を管理システムによって受信するステップを例示している。そして図５を参照すると、例えば、管理システム（５０２）の論理プロセッサーが、１つ以上のプログラムを実行し得、データセンター（５００）における計算機システム（５０４〜５１０）の物理トポロジーを識別する情報を取得し得る。実施形態において、管理システム（５０２）は、ＮＩＣを含み得、プログラムが、それぞれ計算機システム（５０４〜５１０）それぞれをクエリーするためにＮＩＣを使用し得る。この例において、計算機システム（５０４〜５１０）それぞれは、そのトポロジーを識別する情報とともに返答し得る。別の実施形態において、情報が、情報を入力する管理者から取得され得る。いずれにしてもその情報は、計算機システムそれぞれが（もしあれば）いくつのＮＵＭＡノードが有しているか、計算機システムがそれぞれどのくらいのＲＡＭを有しているか、ＲＡＭの速度、ＲＡＭがどのように配置されているか、プロセッサー速度、プロセッサーそれぞれがいくつのコアを有しているかなど、を識別する情報を含むがこれらに限定しない。
【００３２】
[0043]図８の説明を続けると、動作（８０４）は、仮想マシンをインスタンス化するためのリクエストを受信するステップであってリクエストが、仮想マシンに関する特性を示していることを表している。管理システム（５０２）は、例えば、管理システム（５０２）上で実行するユーザーインターフェースから又は計算機システム（５０４〜５１０）から、リクエストを受信し得、仮想マシン（２４０）を開始し得る。この例において、リクエストは、所望の仮想マシン（２４０）に関する特性を含み得る。例えば、特性は、仮想マシンに割り当てられる所望のＲＡＭ容量、所望の仮想プロセッサー数、又は所望のＩ／Ｏ装置であり得る。
【００３３】
[0044]図の説明を続けると、動作（８０６）は、仮想マシン用の仮想ＮＵＭＡノード数を計算機システムの物理トポロジー及び仮想マシンに関する特性に基づいて決定するステップを示している。管理システム（５０２）が一旦、仮想マシン、例えば、６つの仮想プロセッサーに関する特性を受信すると、管理システム（５０２）は、データセンター（５００）における計算機システムのトポロジーを記述している情報をとともに、この情報を利用し得、仮想マシン（２４０）に対し、いくつの仮想ＮＵＭＡノードが生成される必要があるか決定し得る。例えば、管理システム（５０２）は、データセンター（５００）に対する仮想ＮＵＭＡノードの最適なサイズを決定し得、その後、所望の特性を有する仮想マシンを構築するために仮想ＮＵＭＡノードがいくつ必要であるか決定し得る。
【００３４】
[0045]通常、仮想ＮＵＭＡノードサイズが、データセンター（５００）の仮想マシンの動作に影響する。例えば、仮想ＮＵＭＡノードサイズは、例えば、メモリー及び／又はプロセッサーにおいて増加するにつれて、仮想ＮＵＭＡノードの移植性が減少する。すなわち言い換えると、大きな仮想ＮＵＭＡノードが、仮想マシンを移動させることがより困難とし得る。このことは、仮想ＮＵＭＡノードが、仮想ＮＵＭＡノードを達成するために「フラット」リソースを有するＮＵＭＡノード又は計算機システムのどちらか一方に割り当てられる必要があるため生じる。例えば、仮想ＮＵＭＡノードあまりに大きな、例えば、それが非常に大きなＲＡＭか又はあまりに多くの仮想プロセッサーを有する場合、データセンター（５００）において、より小さいＮＵＭＡノードに適合させることが不可能であって、かくして、仮想マシンを移動させる能力を制限する。その上、より大きな仮想ＮＵＭＡノードが単に、より小さな複数のＮＵＭＡノードに割り当てられた場合、ローカルメモリーアクセス時間とリモートメモリーアクセス時間との間に存在する相違による理由と、ゲストオペレーティングシステムもローカルメモリーアクセス時間対リモートメモリーアクセス時間における相違を示す情報も含み得ない理由と、によって、仮想マシンの性能が減少する。
【００３５】
[0046]他方では、仮想ＮＵＭＡノードのサイズが減少するにつれて、ゲストオペレーティングシステムの性能は悪影響を及ぼされ得る。この非効率性は、ゲストオペレーティングシステムがアプリケーションを分離しようとし、それが単一の仮想ＮＵＭＡノードに対する自身の実行であるために生じ得る。ゲストオペレーティングシステムは、この場合、抑制され、性能が低下する。
【００３６】
[0047]したがって、実施形態において、管理システム（５０２）は、データセンター（５００）に対する最適な仮想ＮＵＭＡノードサイズを決定することによって、移植性と効率性との間のバランスを決めることができる。例えば、実施形態において、管理システム（５０２）の論理プロセッサーがプログラムを実行し得、データセンターにおける平均ＮＵＭＡノードサイズ、例えば平均論理プロセッサー数、平均ＲＡＭ数などを決定し得、システムにおいて仮想ＮＵＭＡノードのサイズを平均ＮＵＭＡノードと同一か又はそれよりも小さくするように設定し得る。別の実施形態において、プログラムは、データセンター（５００）における仮想ＮＵＭＡノードサイズを最小ＮＵＭＡノードよりもわずかに小さく設定するように構成され得る。仮想ＮＵＭＡノードサイズが平均サイズ又は最小サイズよりわずかに小さいように設定され得、計算機システムが大量にコミットされた場合、２つ以上の仮想ＮＵＭＡノードが単一のＮＵＭＡノードへ割り当てられ得る。特定の例において、最小のＮＵＭＡノードが４つの論理プロセッサー及び８ギガバイトＲＡＭを有する場合、仮想ＮＵＭＡノードサイズは、例えば、２つの仮想プロセッサー及び４ギガバイトＲＡＭに設定され得る。
【００３７】
[0048]仮想ＮＵＭＡノードのサイズが一旦、決定されると、前の段落の例から続いて、仮想ＮＵＭＡノードサイズが所望の特性とともに使用され得、仮想マシン（２４０）を生成し得る。例えば、ユーザーが、それらが１０ギガバイトＲＡＭを有する６つのプロセッサーの仮想マシンを所望していることと、仮想ＮＵＭＡノードが２つのプロセッサー及び４ギガバイトＲＡＭを有していることと、を示していた場合、管理システム（５０２）は、仮想マシンが３つの仮想ＮＵＭＡノードを含んでいることを示す構成ファイルを生成し得る。
【００３８】
[0049]図８の説明を続けると、動作（８０８）は、リクエストをデータセンターにおける計算機システムへ送信するステップであってリクエストが、所定の仮想ＮＵＭＡノード数を有している仮想マシンをインスタンス化するように計算機システムに指示しているものを例示している。構成ファイルが一旦、生成されると、管理システム（５０２）は、データセンター（５００）における計算機システムを選択し得、仮想マシン（２４０）をインスタンス化し得、構成ファイルを選択された計算機システムへ送信し得る。例えば、管理システム（５０２）は、例えば、どの計算機が仮想マシンを実行するための物理的資源を有しているか、どの計算機システムが最も低い作業負荷を有しているか、どの計算機システムが仮想マシンを調整し得るか決定し得、仮想マシン（２４０）をこの計算機へ送信し得る。同一か又は別の実施形態において、ユーザーは、仮想マシン（２４０）に関する優先順位を示し得、例えば、より不可欠な仮想マシンが、それらの相対的重要性を識別する情報でタグ付けられ得る。この例において、管理システム（５０２）は、最優先の仮想マシンをより小さな作業負荷を有する計算機システムへ送信するように構成され得、より少ない計算機システム上でより低い優先度の仮想マシンを統合化しようと試み得る。この例において、仮想マシンが計算機システムから「取り消され」得、より高い優先順位の仮想マシン用の空間を生成し得る。
【００３９】
[0050]ここで図９を参照すると、それは動作（９１０〜９１４）を含む図８の動作手順の代替実施形態を表している。動作（９１０）を参照すると、それは計算機システムが圧迫されていることを示す信号を受信するステップと、信号を計算機システムへ送信するステップであって信号が、仮想マシンを第２の計算機システムへ送信するように計算機システムに指示しているステップと、を例示している。そして図５を参照すると、例えば、管理システム（５０２）は、例えば、計算機システム（５０４）のような計算機システムから信号を受信し得る。信号は、計算機システムのリソースが圧迫されていることを示し得る。この例において、仮想マシンに割り当てられるＲＡＭ容量は流動的であり得る。すなわち、それはランタイム中に調整され得る。例えば、計算機システム（５０４）のリソースは、多くの仮想マシン又は重い作業負荷を有する仮想マシンを実現する事実のために過度にコミットされている。この状況において、計算機システム（５０４）のハイパーバイザーは、計算機システムがメモリー上において低いことを示す信号を管理システム（５０２）へ送信し得、例えば信号は、大量のページングが仮想マシン内部で発生しているか又は非ページメモリーアロケーションが機能しなくなり得ることを示し得る。別の例において、ゲストオペレーティングシステム（２２０）及び仮想マシン（２４０）における任意の作業負荷は、実行するのに容認できないほど長い時間がかかっている。この例において、管理システム（５０２）は、仮想マシン（２４０）に適合し得る別の計算機を見出すことによって、圧迫されている計算機システム（５０４）上の作業負荷を減少させ、計算機システム（５０４）へ信号を送信し、仮想マシン（２４０）を新しい計算機システム、例えば、計算機システム（５０６）へ移動させるようにそれに指示するように構成され得る。ハイパーバイザー（２０２）は、信号を受信し得、仮想マシン（２４０）を新しい計算機システム、例えば、計算機システム（５０６）、（５０８）、又は（５１０）へ移動させ得る。
【００４０】
[0051]図９の説明を続けると、動作（９１２）は、計算機システムへ信号を送信するステップであって信号が、仮想マシンを第１のＮＵＭＡノードから第２のＮＵＭＡノードへ移動するように計算機システムに指示しているもの、を表している。そして図５を参照すると、例えば、管理システム（５０２）は、信号を計算機システム（５０４）へ送信し得、それに仮想マシンを１つのＮＵＭＡノードから別のノードへ移動するように指示している。この例において、計算機システム（５０４）のアーキテクチャーは、図７の計算機（７００）のそれと同様であり得る。図７のハイパーバイザー（２０２）は、仮想マシン（２４０）をあるＮＵＭＡノードから別のＮＵＭＡノード、例えば、ＮＵＭＡノード（７０４）から（７０２）へ移動するようにそれに指示する信号を受信し得る。この例において、ゲストＯＳ（２２０）におけるメモリー圧力が高い場合があるか、又は仮想プロセッサー（２３０Ａ〜Ｄ）に対するハイパーバイザースレッドが論理プロセッサーの（２１２Ｅ）及び（２１２Ｇ）上で十分に速いスケジューリングがされ得ない。この例において、管理システム（５０２）は、データセンター（５００）をスキャンし得、仮想マシン（２４０）が、例えば、ＮＵＭＡノード（７０２）に移動される必要があることを決定し得、ハイパーバイザー（２０２）は、仮想ＮＵＭＡノード（６０６）及び（６０８）をＮＵＭＡノード（７０２）へ再度割当てし得る。
【００４１】
[0052]実施形態において、動作（８０６）は、データセンターにおける最高のＮＵＭＡ比を決定するステップを表している動作（９１４）を含み得る。例えば、この実施形態において、管理システム（５０２）のプロセッサーがプログラムを実行し得、データセンター（５００）に存在する最高のＮＵＭＡ比を決定し得、仮想マシン（２４０）に対する仮想ＮＵＭＡノード数を決定したとき、情報を利用し得る。例えば、ＮＵＭＡ比は、ローカルメモリーに対するリモートメモリーアクセス間のプロセッサーサイクルのコスト比である。ＮＵＭＡ比２対１は、それがローカルメモリーアドレスをアクセスするためにかかる時間よりも特定のリモートメモリーアドレスにアクセスするプロセッサーサイクルの時間は２倍かかることを意味する。実施形態において、管理システム（５０２）は、データセンター（５００）において検出された最高のＮＵＭＡ比を利用し得、仮想ＮＵＭＡノード（６０６〜６０８）によって報告されるＮＵＭＡ比を設定し得る。この情報が構成ファイルにストアされ得、仮想マシンをインスタンス化する計算機システムへ送信され得る。ハイパーバイザー（２０２）は、仮想ＮＵＭＡノード（６０６〜６０８）に関するＮＵＭＡ比を示す仮想マシンファームウェアテーブルのデータ構造を生成し得、ゲストオペレーティングシステム（２２０）又はモノリスアプリケーションをブートしたときのＮＵＭＡ比が利用され得、スレッドのスケジューリングの決定を実行し得る。
【００４２】
[0053]ここで図１０に移ると、それは動作（１０００〜１００６）を含む動作手順を表している。動作（１０００）が動作手順を開始し、動作（１００２）は、仮想マシンをインスタンス化するためのリクエストを受信するステップを例示している。そして図６及び図７を参照すると、例えば、ハイパーバイザー（２０２）は、仮想マシン（２４０）のような仮想マシンを生成するためのリクエストを受信し得る。例えば、リクエストは、管理システム（５０２）、図２又は図３の親パーティション（２０４）などから受信され得る。リクエストは、新しい仮想マシンに関するものであり得るか、又はそれは、以前セーブされた仮想マシンをインスタンス化するためのリクエストであり得る。仮想マシンが新しい仮想マシンである本開示の実施形態において、仮想マシン（２４０）の特性は、例えば、管理者によって設定され得る。管理者は、仮想マシンが初めにどのくらいのメモリーを有する必要があるか、仮想マシンが別の仮想マシンに対しどんなタイプの優先順位を有する必要があるか、仮想マシンがいくつの仮想プロセッサーを有する必要があるか、仮想マシンがどんなタイプのＩ／Ｏ装置を有する必要があるかなど、を設定し得る。
【００４３】
[0054]動作（１００４）に移ると、それは仮想マシンを生成するステップであって仮想マシンが、複数の仮想ＮＵＭＡノード含むトポロジーを有しているものと、複数の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサー及びゲスト物理アドレスの範囲を含んでいるものと、仮想マシンのトポロジーが、計算機システムの物理トポロジーから独立して生成されていること、を表している。例えば、ハイパーバイザー（２０２）は、リクエストに応答して複数の仮想ＮＵＭＡノード（６０６〜６０８）を有する仮想マシン（２４０）を構築し得る。図６を参照すると、仮想ＮＵＭＡノード（６０６〜６０８）はそれぞれ、１つ以上の仮想プロセッサー（２３０Ａ〜Ｄ）と、ゲスト物理アドレス（６１４）及び（６１６）とを有し得る。この実施形態において、仮想ＮＵＭＡノード（６０６）及び（６０８）は基本ハードウェアトポロジーから独立して生成され得る。すなわち、仮想マシンのトポロジーは、図６及び図７によって表されるような基本ハードウェアと関係しない。かくして、この実施形態において、仮想マシンのトポロジーそれぞれは、それを達成する計算機システムの基本物理トポロジーから分離されている。
【００４４】
[0055]図１０の説明を続けると、動作（１００６）は、仮想マシンをインスタンス化するステップであって仮想マシンが、仮想ＮＵＭＡノードを含んでいるものを例示している。実施形態において、ハイパーバイザー（２０２）が論理プロセッサーによって実行され得、複数の仮想ＮＵＭＡノードを有する仮想マシンがインスタンス化され得る。例えば、図６及び／又は図７を参照すると、仮想ＮＵＭＡノード（６０６〜６０８）を有している仮想マシン（２４０）は、計算機システム（６００）又は（７００）によって達成され得る。仮想マシン（２４０）のゲスト物理アドレスがＲＡＭからのシステム物理アドレスを用いて支援され得、仮想プロセッサーが１つ以上の論理プロセッサーによって支援され得る。例えば、ゲスト物理アドレス（６１４）のブロックがシステム物理アドレス（６２２）のブロックを用いて支援され得、ゲスト物理アドレス（６１６）のブロックがシステム物理アドレス（６２４）のブロックによって支援され得る。ハイパーバイザースレッドはその後、仮想プロセッサーを支援している論理プロセッサー上でスケジューリングされ得、仮想プロセッサーを表わす命令が実行され得る。仮想マシンがインスタンス化された後、ゲストオペレーティングシステム（２２０）は、仮想ＮＵＭＡノード（６０６）の仮想プロセッサー（２３０Ａ）上で実行するようにプロセスをスケジューリングし得る。この例において、ゲストオペレーティングシステム（２２０）のメモリーマネージャーは、ゲスト物理アドレス範囲を選択し得、アドレス範囲をプロセスに割り当て得る。この例において、ゲストオペレーティングシステム（２２０）は、ゲスト物理アドレスを仮想ＮＵＭＡノード（６０６）から選択するように構成され得る。この場合、仮想マシンを移動させる／リストアする能力は、仮想マシンがより小さな部分へ分解され、計算機システム全域に拡大するという事実によって進化されている。
【００４５】
[0056]実施形態において、仮想マシンＢＩＯＳ又はブートファームウェアは、仮想マシンのトポロジー、例えば、それが仮想ＮＵＭＡノード、任意の仮想ＮＵＭＡのノードサイズ、及び仮想ＮＵＭＡノードに関するＮＵＭＡ比、モノリスアプリケーションのゲストオペレーティングシステムを有するか否か、記述し得る。データ構造が処理され得、ゲストＯＳ又はアプリケーションそれ自体が、仮想ＮＵＭＡノードの存在の利点を取り入れるように構成し得る。例えば、ゲストオペレーティングシステム（２２０）は、アプリケーションの実行がローカルのままであるようにＮＵＭＡ非認識アプリケーションのスレッドを仮想ＮＵＭＡノードと一体化するよう試行し得る。別の例において、ＳＱＬサーバーのようなデータベース管理プログラムは、仮想ＮＵＭＡノードにローカルなロックを割り当て得、データベースは、仮想ＮＵＭＡノード全域の読み出し／書き出しリクエストを分割し得る。更に別の例において、ゲストオペレーティングシステム（２２０）は、仮想ＮＵＭＡノードそれぞれに対するページプールを仮想マシンに作成生成し得る。
【００４６】
[0057]ここで図１１を参照すると、それは動作（１１０８〜１１２４）を含んでいる図１０の動作手順（１０００）の代替実施形態を例示している。図面によって示されるように、動作は（１１０８）は、仮想マシンをセーブするステップを例示している。例えば、実施形態において、仮想マシン（２４０）がハードドライブのような計算機可読記憶媒体にセーブされ得る。実施形態において、仮想マシン（２４０）は、「Ｃｏｎｃｕｒｒｅｎｔ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅ  Ｓｎａｐｓｈｏｔｓ  ａｎｄ  Ｒｅｓｔｏｒｅ」と題する米国特許出願Ｎｏ．１１／４８７，０３１に記載されている技法を使用しセーブされ得、その内容全体をすべて参照として本明細書に組み込む。
【００４７】
[0058]図１１の説明を続けると、動作（１１１０）は、仮想マシンをリモート計算機システムへ送信するステップを示している。例えば、図５を参照すると、実施形態において、仮想マシン（２４０）の状態は、１つ以上の構成ファイルにセーブされ得、例えば、計算機システム（５０４〜５０６）から送信された別の計算機システムへ送信され得る。計算機システム（５０６）のハイパーバイザーは、ファイル又は複数のファイルを読み出し得、仮想マシン（２４０）をインスタンス化し得る。特定の例において、計算機システム（５０４）のハイパーバイザーは、仮想マシン（２４０）を計算機システム（５０６）へ送信することを決定し得る。
【００４８】
[0059]仮想マシントポロジーは移動させ、仮想マシンをリストアするための能力に作用する。具体的には、決定は、基本ハードウェアトポロジーが検出されることを可能にし、仮想ＮＵＭＡノードのサイズは、仮想マシンがいかにうまく実行し、それが容易に移動されるか否かに影響する、例えば、仮想ＮＵＭＡノードのサイズは、仮想マシンを移動させる能力に作用する。したがって、すなわち、仮想ＮＵＭＡノードのサイズが増加するにつれて、仮想ＮＵＭＡノードの移植性は減少し、仮想ＮＵＭＡノードのサイズが減少するにつれて仮想マシンの性能も減少する。加えると、基本計算機のトポロジーを検出し得る仮想マシンは、ＮＵＭＡ認識オペレーティングシステム及びアプリケーションが、それらが検出する第１のトポロジーに基づいて、ブート時間に自分自身を最適化するという事実のために、容易に移動され得ず、仮想マシンがこれらの最適化が、将来、移動され得る計算機上において十分に機能し得ない。かくして、仮想ＮＵＭＡノードをゲストオペレーティングシステムに公開することによって、それがブートしたとき、オペレーティングシステムがＮＵＭＡノードを使用ための最適化され得る。仮想ＮＵＭＡノードを正しくサイジングすることによって、仮想マシンが、データセンター（５００）における多くの様々な計算機システムに対し最適化され得る。
【００４９】
[0060]例えば、図６を参照すると、仮想マシン（２４０）は、２つ以上の仮想ＮＵＭＡノード（６０６）及び（６０８）を含み得る。ハイパーバイザー（２０２）は、論理プロセッサー（２１２Ａ〜Ｄ）を有する仮想プロセッサー（２３０Ａ〜Ｄ）を支援し得る。ゲストオペレーティングシステム（２２０）をブートしたとき、それは、仮想ＮＵＭＡノード（６０６）及び（６０８）を検出し得、プロセスのスケジューリング及び実行を最適化するように構成され得る。しばらくして仮想マシン（２４０）は、図７によって表されたものと同様の物理トポロジーを有する計算機システムへ移動され得る。図７のハイパーバイザー（２０２）は、論理プロセッサー（２１２Ａ及びＢ）を支援し得、論理プロセッサー（２１２Ｅ及びＦ）を有する仮想プロセッサー（２３０Ｃ及びＤ）を有する仮想プロセッサー（２３０Ａ及びＢ）を支援し得る。ゲストオペレーティングシステム（２２０）は、基本計算機トポロジーがＳＭＰからＮＵＭＡに変更された時でも図６の計算機システム上で実行するとき、同一の方法で操作し続け得る。
【００５０】
[0061]図１１の説明を続けると、動作（１１１２）は、仮想マシンを別の１つ以上のＮＵＭＡノードへ移動させるステップを示している。そして図７を参照すると、例えば、ハイパーバイザー（２０２）は、ＮＵＭＡノード（７０２）上で実行するように仮想ＮＵＭＡノード（６０６〜６０８）をスケジューリングし得、しばらくした後、例えば、ＮＵＭＡノード（７０４）上で実行するように仮想ＮＵＭＡノード（６０６〜６０８）をスケジューリングし得る。この例において、ハイパーバイザー（２０２）は、ＮＵＭＡノード（７０２）が圧迫されているとき、仮想マシン（２４０）を移動し得る。例えば、ゲストオペレーティングシステム（２２０）及び（２２２）は、仮想マシン（２４０）がメモリー上で低いことを示す信号を生成し得る。この例において、ハイパーバイザー（２０２）は、仮想マシン（２４０）を異なるＮＵＭＡノードへ移動させることによってＮＵＭＡノード（７０２）上の作業負荷を減少させるように構成され得る。
【００５１】
[0062]図１１の説明を続行けると、動作（１１１４）は、仮想マシンを第１のＮＵＭＡノードに割り当てるステップと、仮想マシンを複数のＮＵＭＡノードの第２のＮＵＭＡノードへ移動させるステップと、を示している。そして図７を参照すると、例えば、実施形態において、仮想マシン（２４０）は、ハイパーバイザー（２０２）によって最初のＮＵＭＡノード（６０６）に割り当てられ得る。すなわちハイパーバイザー命令は、論理プロセッサー（２１２Ａ）〜（２１２Ｉ）によって実行され得、仮想マシン（２４０）は、例えばＮＵＭＡノード（７０２）に割り当てられ得る。この例において、仮想プロセッサー（２３０Ａ〜２３０Ｄ）は、（２１２Ｄ）を介し論理プロセッサー（２１２Ａ）で実行するように設定され得る。しばらくした後、例えば、別の仮想マシンが初期化するか又はオフライン実行されたとき、ハイパーバイザー（２０２）が論理プロセッサー（２１２Ａ〜２１２Ｉ）によって実行され得、論理プロセッサーは、仮想マシン（２４０）を計算機システム（７００）の別のＮＵＭＡノードへ移動され得る。より具体的に前の例を参照すると、ハイパーバイザー（２０２）が実行され得、仮想マシン（２４０）が、ＮＵＭＡノード（７０２）からＮＵＭＡノード（７０４）へ移動され得る。例えば、仮想プロセッサー（２３０Ａ及びＢ）は、論理プロセッサー（２１２Ｅ）に割り当てられ得、仮想プロセッサー（２３０Ｃ及びＤ）は論理プロセッサー（２１２Ｆ）に割り当てられ得、ゲスト物理アドレス（６１４）及び（６１６）は、システム物理アドレス（６２２〜６２４）によって支援され得る。
【００５２】
[0063]図１１の説明を続けると、動作（１１１６）は、複数の仮想ＮＵＭＡノードに関するＮＵＭＡ比を生成するステップと、複数の仮想ＮＵＭＡノードに関するＮＵＭＡ比をゲストオペレーティングシステムへ報告するステップと、を示している。例えば、実施形態において、ハイパーバイザー（２０２）は、仮想ＮＵＭＡノード（６０６〜６０８）に関するＮＵＭＡ比を生成し得、この情報は、図６又は図７のどちらか一方のゲストオペレーティングシステム（２２０）へ報告され得る。実施形態において、ハイパーバイザー（２０２）は、仮想ＮＵＭＡノードに関するＮＵＭＡ比を示している仮想マシンのファームウェアテーブルにおけるデータ構造を生成し得、ゲストオペレーティングシステム（２２０）がブートしたとき、ゲストはテーブルを読み出し得、情報を利用し、スケジューリングの決定を実行し得る。例えば、ゲストオペレーティングシステム又はＮＵＭＡ認識アプリケーションは、ＮＵＭＡ比を使用し得、リモートＮＵＭＡノードからリソースを使用するか否か決定し得る。例えば、オペレーティングシステムは、実行される準備をしている保留中のスレッドを有し得る。この例においてオペレーティングシステムは、また理想的なプロセッサーが自由になるように、一定の時間、待つように構成され得るか、そうでなければ、それは、より小さい所定のＮＵＭＡ比を有するリモートプロセッサー上のスレッドをスケジューリングし、この場合、スケジューラーが受け入れる待ち時間はＮＵＭＡ比に依存している。
【００５３】
[0064]ここで動作（１１１８）を参照すると、第１の仮想ＮＵＭＡノードから第１のゲスト物理アドレス、第２の仮想ＮＵＭＡノードから第２のゲスト物理アドレスをアクセスするためのリクエストをゲストオペレーティングシステムから受信するステップと、第２のゲスト物理アドレスをアクセスするために必要なアクセスタイムを増大させるステップと、第１及び第２のゲスト物理アドレスをアクセスするために必要とされる増大したアクセスタイムをゲストオペレーティングシステムへ報告するステップと、を示している。動作（１１１６）と同様に、ＮＵＭＡ比がゲストオペレーティングシステム（２２０）に報告され得るが、しかしながら、この実施形態例において、ゲストオペレーティングシステム（２２０）は、ＮＵＭＡ比が正確であるか否か決定するための命令を含み得る。すなわち、ゲストオペレーティングシステム（２２０）は、様々なメモリー領域に対するアクセスタイムをチェックすることによって報告されるＮＵＭＡ比が不適切か否かチェックをし得、確認し得る。この例において、ハイパーバイザー（２０２）は、仮想マシン（２４０）のブートプロセスをモニターするように構成され得、ハイパーバイザー（２０２）は、特定の仮想ＮＵＭＡノードにリモートであるメモリーへのアクセス速度を落とし得る。すなわち、ハイパーバイザー（２０２）は、仮想プロセッサー（２３０Ａ）がゲスト物理アドレス（６１４）をアクセスときよりも仮想プロセッサー（２３０Ａ）がゲスト物理アドレス（６１６）にアクセスする時に関して、より大きなアクセスタイムを生成するように構成され得る。この例において、遅延は、ゲスト物理アドレス（６１４）及び（６１６）が、単一のＮＵＭＡノードからのシステム物理アドレス（６２２）及び（６２４）などのシステム物理アドレスによって支援され得るので事実に基づかない場合がある。
【００５４】
[0065]実施形態において、ハイパーバイザー（２０２）は、リモートのゲスト物理アドレス（６１６）を仮想プロセッサー（２３０Ａ）の仮想プロセッサーページテーブルから移動することによって、アクセスタイムを増大し得る。仮想プロセッサー（２３０Ａ）がリモートメモリーにアクセスしようと試みるとき、それは失敗し、ハイパーバイザー命令が実行され得る。ハイパーバイザー（２０２）はその後、ページテーブルを固定し得、ハイパーバイザー、メモリーアドレスからの返却信号を所望の時間の間、遅延し得る。仮想プロセッサー（２３０Ａ）がリモートメモリーをアクセスするのにどれくらいかかるか識別する返却信号情報を受信したとき、遅延が導入される。
【００５５】
[0066]図１１の説明を続けると、動作（１１２０）は、システムメモリーアドレスを仮想マシンに割り当てるステップであってシステムメモリーアドレスが、単一のＮＵＭＡノードから取得されているものと、仮想プロセッサーを実行するプロセッサーを割り当てるステップであってプロセッサーが、ＮＵＭＡノードから取得されているものと、を表している。例えば、実施形態において、仮想ＮＵＭＡノード（６０６〜６０８）を生成するステップは、システム物理アドレスを割り当てるステップと、同一のＮＵＭＡノード（７０２）からプロセッサーを割り当てて仮想マシン（２４０）を支援するステップと、を含み得る。そして図７を参照すると、例えばハイパーバイザー（２０２）は、ＮＵＭＡノード（７０２）の１つ以上のシステム物理アドレスブロック（６２２〜６２４）を取得し得、それらを利用し、ゲスト物理アドレス（６２２〜６２４）を支援し得る。ハイパーバイザー（２０２）は付加的に、例えば、ＮＵＭＡノード（７０２）の１つ以上の論理プロセッサー（２１２Ａ〜２１２Ｄ）と仮想プロセッサー（２３０Ａ）を一体化し得る。
【００５６】
[0067]図１１の説明を続けると、動作（１１２２）は、第１の複数の仮想ＮＵＭＡノードを計算機システムの第１のＮＵＭＡノードへマッピングするステップと、第２の複数の仮想ＮＵＭＡノードを計算機システムの第１のＮＵＭＡノードへマッピングするステップと、を表している。そして図７を参照すると、例えば、論理プロセッサー（２１２Ａ）のような論理プロセッサーは、ハイパーバイザー命令を実行し得、仮想ＮＵＭＡノード（６０６）及び（６０８）のような仮想ＮＵＭＡノードをＮＵＭＡノード（７０２）のようなＮＵＭＡノードへ一体化し得る。より具体的には、論理プロセッサーは命令を実行し、システム物理アドレス（６２２）を用いてゲスト物理アドレス（６１４〜６１６）、システム物理アドレス（６２４）を用いてゲスト物理アドレス（６１８〜６２０）を支援し得、論理プロセッサー（２１２Ａ〜Ｄ）を用いて仮想プロセッサー（２３０Ａ〜Ｄ）及び（２３２Ａ〜Ｄ）を支援し得る。
【００５７】
[0068]動作（１１２４）に関連し、それは第１の複数の仮想ＮＵＭＡノードを計算機システムの第１のＮＵＭＡノードへマッピングするステップと、第２の複数の仮想ＮＵＭＡノードを計算機システムの第２のＮＵＭＡノードへマッピングするステップと、を示している。そして図７を参照すると、例えば、論理プロセッサー（２１２Ａ）のような論理プロセッサーは、ハイパーバイザー命令を実行し得、仮想ＮＵＭＡノード（６０６）をＮＵＭＡノード（７０２）へ割り当て得、仮想ＮＵＭＡノード（６０８）をＮＵＭＡノード（７０４）へ割り当て得る。この例において、ハイパーバイザー（２０２）が実行されるとき、ハイパーバイザースケジューラーは、仮想プロセッサー（２３０Ａ〜Ｂ）からのスレッドを論理プロセッサー（２１２Ａ〜Ｄ）上にスケジュールし得、仮想プロセッサー（２３０Ｃ又はＤ）からのスレッドを論理プロセッサー（２１２Ｅ〜Ｇ）上にスケジュールし得る。
【００５８】
[0069]図１２に移ると、それは図９の動作手順の代替実施形態を表している。図面によって示されるように、本手順は、実施形態において仮想ＮＵＭＡノードに関するＮＵＭＡ比が、データセンターにおいて検出される平均のＮＵＭＡ比よりも大きくてデータセンターが、複数の計算機システムを含んでいることを示している動作（１２２６）を含み得る。そして図５を参照すると、例えば、管理システム（５０２）は、データセンター（５００）における計算機システム（５０４〜５１０）の物理トポロジーを取得し得る。実施形態において、プログラムは計算機システム（５０４〜５１０）それぞれにクエリーし得、計算機は情報を用いて返答し得る。一旦、管理システム（５０２）が計算機システムそれぞれのトポロジーを説明する情報を有すると、プログラムは、どの計算機システムが、例えば、最悪のＮＵＭＡ比及び／又は平均のＮＵＭＡ比に基づいて、最も高いものを有するＮＵＭＡノード決定し得る。管理システム（５０２）は、仮想ＮＵＭＡノードがこの情報を使用し得、ブート時間にゲストオペレーティングシステムへ報告するＮＵＭＡ比を生成し得る。この例において、管理システム（５０２）が、平均のＮＵＭＡ比又はデータセンター（５００）において検出された中で最も高いＮＵＭＡ比よりも大きな仮想ＮＵＭＡ比に設定し得、かくして、ＮＵＭＡノードの半分よりも高い状態か又は任意の仮想マシンが実際に実行中である任意の物理トポロジーよりも悪い状態を反映するように仮想ＮＵＭＡノードを構成する。
【００５９】
[0070]ここで図１３に移ると、それは動作（１３００）、（１３０２）、及び（１３０４）を含んでいる本開示の態様を実施するための動作手順を表している。動作（１３００）が動作手順を開始し、動作（１３０２）は、仮想マシン用の複数の仮想ＮＵＭＡノードを生成するステップであって複数の仮想ＮＵＭＡノードそれぞれが、少なくとも１つの仮想プロセッサーと、ゲスト物理アドレスの少なくとも１つのメモリーブロックと、を含んでいて、複数の仮想ＮＵＭＡノードが、任意の計算機システムの物理トポロジーから独立して生成しているもの、を表している。実施形態において、図６又は図７の（２１２Ｅ）のような論理プロセッサーは、ハイパーバイザー命令を実行し得、プロセッサーは、仮想マシン（２４０）に対する仮想ＮＵＭＡノード（６０６〜６０８）を生成し得る。上記と同様に、仮想マシン（２４０）は、例えば、仮想マシンの特性に依存するずっと多くの仮想ＮＵＭＡノードを有し得、例えば、仮想マシンが２つ以上の仮想ＮＵＭＡノードを有し得る。ハイパーバイザー（２０２）は、仮想ＮＵＭＡノード（６０６）及び（６０８）それぞれにゲスト物理アドレスを割り当て得る。前述したものと同様に仮想マシン（２４０）のトポロジーは、基本計算機システムトポロジーから独立している。例えば、仮想マシンが結局、インスタンス化される計算機システムは図６の計算機システム（６００）又は図７の計算機システム（７００）と同様のトポロジーを有し得る。
【００６０】
[0071]図１３の説明を続けると、動作（１３０４）は、計算機システム上に仮想マシンをインスタンス化するステップであって仮想マシンが、複数の仮想ＮＵＭＡノードを含んでいるもの、を示している。図６又は図７を参照すると、ハイパーバイザー（２０２）が仮想マシン（２４０）に関する仮想ＮＵＭＡノード構成を生成した後、それは計算機システムによって達成され得る。すなわち、ハイパーバイザー（２０２）は、仮想マシン（２４０）を開始するための命令をスケジュールする。例において、ハイパーバイザー（２０２）は、仮想マシン（２４０）から１つ以上の論理プロセッサーを実行命令を選択し得、ハイパーバイザー（２０２）は、論理プロセッサー上に仮想マシン（２４０）をインスタンス化するためのスケジュール命令を選択し得る。仮想マシン命令がプロセッサーによって実行され得、仮想マシン（２４０）がインスタンス化され得る。この例において仮想マシン（２４０）は、２つ以上の仮想ＮＵＭＡノードを説明するブートテーブルを含み得る。ゲストオペレーティングシステム又はモノリスアプリケーションは、ブートテーブルから仮想ＮＵＭＡノードを発見しブートし、仮想マシン（２４０）トポロジーの利点を取り入れるための自分自身を構成する命令を実行し得る。
【００６１】
[0072]ここで図１４を参照すると、それは付加的な動作（１４０６〜１４１２）を含む図１３の動作手順（１３００）の代替実施形態を表している。ここで動作（１４０６）を参照すると、それは計算機システムのＮＵＭＡノード上で実行する第１の仮想ＮＵＭＡノード及び第２の仮想ＮＵＭＡノードを割り当てるステップを例示している。例えば、及び図７を参照すると、実施形態において、計算機システムは、ＮＵＭＡノードを含む構造を有し得る。この例において、ハイパーバイザー（２０２）は、複数のうち２つの仮想ＮＵＭＡノードを信号ＮＵＭＡノードに割り当て得る。そして図７を参照すると、例えば、ハイパーバイザー命令は、ＮＵＭＡノード（７０２）上で論理プロセッサーによって実行され得、例えば、仮想ＮＵＭＡノード（６０６）及び（６０８）が割り当てられ得、実行し得る。
【００６２】
[0073]図１４の説明を続けると、動作（１４０８）は、計算機システムの第１のＮＵＭＡノード上で実行する第１の複数の仮想ＮＵＭＡノードを割り当てるステップと、計算機システムの第２のＮＵＭＡノード上で実行する第２の複数の仮想ＮＵＭＡノードを割り当てるステップと、を表している。例えば、図７を参照すると、論理プロセッサー（２１２Ｂ）のような論理プロセッサーは、ハイパーバイザー命令を実行し得、仮想ＮＵＭＡノード（６０６）をＮＵＭＡノード（７０４）に割り当て得、仮想ＮＵＭＡノード（６０８）をＮＵＭＡノード（７０６）に割り当て得る。この例において、ハイパーバイザー（２０２）が実行されたとき、ハイパーバイザースケジューラーは仮想プロセッサー（２３０Ａ〜Ｂ）からの論理プロセッサー（２１２Ｆと２１２Ｇ）上のスケジュールスレッドと仮想プロセッサー（２３０Ｃ又はＤ）からの論理プロセッサーの（２１２Ｈ及び２１２Ｉ）上のスレッドをスケジューリングし得る。
【００６３】
[0074]図１４の説明を続けると、動作（１４１０）は、複数の仮想ＮＵＭＡノードに関するＮＵＭＡ比を生成するステップと、ＮＵＭＡ比をゲストオペレーティングシステムへ報告するステップと、を表している。例えば、実施形態において、ハイパーバイザー（２０２）は、仮想ＮＵＭＡノードに関するＮＵＭＡ比を生成し得、この情報が、図６又は図７のどちらか一方のゲストオペレーティングシステム（２２０）へ報告され得る。
【００６４】
[0075]図１４の説明を続けると、動作（１４１２）は、仮想マシンに関連付けられたＮＵＭＡノードが過度にコミットされていることを決定するステップと、仮想マシンを別の１つ以上のＮＵＭＡノードへ移動させるステップと、を表している。例えば、図７を参照するとハイパーバイザー（２０２）は、ＮＵＭＡノード（７０２）上で仮想ＮＵＭＡノード（６０６〜６１２）を実行するようにスケジューリングし得る。すなわちＮＵＭＡノード（７０２）は、仮想マシン（２４０）及び（２４２）をホストするように構成され得る。この例において、ハイパーバイザー（２０２）は、ＮＵＭＡノード（７０２）が圧迫されていることを示す信号を受信し得る。例えば、ゲストオペレーティングシステム（２２０）及び（２２２）は、仮想マシン（２４０〜２４２）がメモリー上において低いことを示す信号を生成し得る。この例において、ハイパーバイザー（２０２）は、仮想マシンを異なるＮＵＭＡノードに移動することによって、ＮＵＭＡノード（７０２）上の作業負荷を減少させるように構成され得る。この例において、ハイパーバイザー（２０２）は、ＮＵＭＡノード（７０４）上で実行するための仮想マシン（２４０）の仮想ＮＵＭＡノード（６０６）及び（６０８）を再度割り付けし得る。
【００６５】
[0076]前述の詳細な説明は、例及び／又は動作図面を介し、システム及び／又はプロセスの様々な実施形態を詳細に説明している。そのようなブロック図及び／又は例が１つ以上の機能及び／又は動作を含む場合、そのようなブロック図又は例の中の機能及び／又は動作それぞれは、様々な範囲のハードウェア、ソフトウェア、ファームウェア、又は実際にはその任意の組み合わせによって個別に及び／又はまとめて実装され得ることが当業者によって理解されよう。
【００６６】
[0077]本明細書に記述された本対象事項の具体的な態様が示され、説明されているが、当業者にとって、本明細書の教示に基づく変更及び修正が本明細書に記述された対象項目及びそのより広い態様から離れずに実行され得ることは明らかであって、したがって、添付の請求項は、それらの変更及び修正すべてが本明細書に記述された対象項目の本当の趣旨及び範囲内にあるようにその範囲内に包含される。
【符号の説明】
【００６７】
２０  計算機システム
２１  論理プロセッサー
２２  システムメモリー
２３  システムバス
２４  読み出し専用メモリー（ＲＯＭ）
２５  ランダムアクセスメモリー（ＲＡＭ）
２６  基本入力／出力システム（ＢＩＯＳ）
２７  ハードディスクドライブ
２８  磁気ディスクドライブ
２９  取り外し可能磁気ディスク
３０  光学式ディスクドライブ
３１  取り外し可能光学式ディスク
３２  ハードディスクドライブインターフェース
３３  磁気ディスクドライブインターフェース
３４  光学式ドライブインターフェース
３５  オペレーティングシステム
３６  アプリケーションプログラム
３７  その他のプログラムモジュール
３８  プログラムデータ
４０  キーボード
４２  ポインティングデバイス
４６  シリアルポートインターフェース
４７  ディスプレイ
４８  ビデオアダプター
４９  リモートコンピューター
５０  メモリー記憶装置
５１  ローカルエリアネットワーク（ＬＡＮ）
５２  広域ネットワーク（ＷＡＮ）
５３  アダプター
５４  モデム
５５  ホストアダプター
５６  小型コンピューター用周辺機器インターフェース（ＳＣＳＩ）バス
６２  外部記憶装置
２００  計算機システム
２０２  ハイパーバイザー
２０４  親パーティション
２０８  記憶装置
２１０  ネットワークインターフェースコントローラー（ＮＩＣ）
２１２  論理プロセッサー
２１４  ランダムアクセスメモリー（ＲＡＭ）
２１６  仮想化サービスクライアント（ＶＳＣ）
２１８  仮想化サービスクライアント（ＶＳＣ）
２２０  ゲストオペレーティングシステム
２２２  ゲストオペレーティングシステム
２２４  デバイスドライバー
２２８  仮想化サービスプロバイダー
２３０  仮想プロセッサー
２３２  仮想プロセッサー
２３４  画像処理装置
２３６  設定ユーティリティ
２４０  仮想マシン
２４２  仮想マシン
３００  計算機システム
５００  データセンター
５０２  管理システム
５０４  計算機システム
５０６  計算機システム
５０８  計算機システム
５１０  計算機システム
６００  計算機システム
６０２  メモリーコントローラー
６０６  仮想ＮＵＭＡノード
６０８  仮想ＮＵＭＡノード
６１０  仮想ＮＵＭＡノード
６１２  仮想ＮＵＭＡノード
６１４  ゲスト物理アドレス
６１６  ゲスト物理アドレス
６１８  ゲスト物理アドレス
６２０  ゲスト物理アドレス
６２２  システム物理アドレスブロック
６２４  システム物理アドレスブロック
６２６  システム物理アドレスブロック
６２８  システム物理アドレスブロック
６３０  システム物理アドレスブロック
６３２  システム物理アドレスブロック
７００  計算機システム
７０２  ＮＵＭＡノード
７０４  ＮＵＭＡノード
７０６  ＮＵＭＡノード
７０８  相互接続
【図１】
0005507661.tif 000002
【図２】
0005507661.tif 000003
【図３】
0005507661.tif 000004
【図４】
0005507661.tif 000005
【図５】
0005507661.tif 000006
【図６】
0005507661.tif 000007
【図７】
0005507661.tif 000008
【図８】
0005507661.tif 000009
【図９】
0005507661.tif 000010
【図１０】
0005507661.tif 000011
【図１１】
0005507661.tif 000012
【図１２】
0005507661.tif 000013
【図１３】
0005507661.tif 000014
【図１４】
0005507661.tif 000015