(57)【特許請求の範囲】
【請求項１】
仮想グラフィックス処理ユニットの使用を最適化する方法であって、
複数の仮想マシンの各仮想マシンに計算強度レベルをアサイン（assign）すること、
前記計算強度レベルをアサインすることは、特定の仮想マシンの計算タスクを他の仮想マシンの計算タスクと比較し、最も計算集中型のタスク（computing  intensive  task）を有する仮想マシンに最も高い計算強度レベルをアサインすることにより実行され、
前記複数の仮想マシンの各仮想マシンに優先順位レベルをアサインすることと、
複数のサーバの各サーバについて、前記サーバが、前記複数の仮想マシンのための計算
集中型のタスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）を含むかどうかを判断することと、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵをアサインすることと
を含み、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵをアサインすることが、所定の閾値を上回る優先順位レベル及び所定の閾値を下回る計算強度レベルを有する仮想マシンを選択することをさらに含む、方法。
【請求項２】
前記仮想マシンのうちの少なくとも１つが、計算集中型のタスクを有するアプリケーションを含む、請求項１に記載の方法。
【請求項３】
特定の仮想マシンの優先順位レベルが、前記特定の仮想マシンの作業負荷の重要度を示
す、請求項１に記載の方法。
【請求項４】
前記選択された仮想マシンに優先的にＶＧＰＵをアサインすることをさらに含む、請求項１に記載の方法。
【請求項５】
前記各仮想マシンに優先順位レベルをアサインすることが、クライアント・オペレーティング・システムを含む仮想マシンに、サーバ・オペレーティング・システムを含む仮想マシンより高い優先順位レベルをアサインすることを含む、請求項１に記載の方法。
【請求項６】
前記ＶＧＰＵが、さらに前記複数のサーバのＣＰＵ速度及びメモリ・サイズに応じてアサインされる、請求項１に記載の方法。
【請求項７】
前記各仮想マシンが、アプリケーションの少なくとも１つのインスタンスを含む、請求
項１に記載の方法。
【請求項８】
仮想グラフィックス処理ユニットの使用を最適化するための装置であって、前記装置は
コンピュータ・プロセッサと、前記コンピュータ・プロセッサに動作可能に結合されたコンピュータ・メモリとを含み、前記コンピュータ・メモリ内にはコンピュータ・プログラ
ム命令が配置されており、前記コンピュータ・プログラム命令は、
複数の仮想マシンの各仮想マシンに計算強度レベルをアサイン（assign）することと、
前記計算強度レベルを割り当てることは、特定の仮想マシンの計算タスクを他の仮想マシンの計算タスクと比較し、最も計算集中型のタスク（computing  intensive  tasks）を有する仮想マシンに最も高い計算強度レベルをアサインすることにより実行され、
前記複数の仮想マシンの各仮想マシンに優先順位レベルをアサインすることと、
複数のサーバの各サーバについて、前記サーバが、前記複数の仮想マシンのための計算
集中的タスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）
を含むかどうかを判断することと、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵを割り当てることが可能であり、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵを割り当てることが、所定の閾値を上回る優先順位レベル及び所定の閾値を下回る計算強度レベルを有する仮想マシンを選択することをさらに含む、装置。
【請求項９】
前記仮想マシンのうちの少なくとも１つが、計算集中型のタスクを有するアプリケーションを含む、請求項８に記載の装置。
【請求項１０】
特定の仮想マシンの優先順位レベルが、他の仮想マシンの作業負荷と比べた前記特定の
仮想マシンの作業負荷の重要度を示す、請求項８に記載の装置。
【請求項１１】
前記選択された仮想マシンに優先的にＶＧＰＵをアサインすることをさらに含む、請求項８に記載の装置。
【請求項１２】
前記ＶＧＰＵが、さらに前記複数のサーバのＣＰＵ速度及びメモリ・サイズに応じて割
り当てられる、請求項８に記載の装置。
【請求項１３】
仮想グラフィックス処理ユニットの使用を最適化するためのコンピュータ・プログラム
であって、前記コンピュータ・プログラムはコンピュータ可読ストレージ媒体上に配置さ
れ、前記コンピュータ・プログラムはコンピュータ・プログラム命令を含み、前記コンピ
ュータ・プログラム命令は、実行されたときに、コンピュータに、
複数の仮想マシンの各仮想マシンに計算強度レベルをアサイン（assign）するステップと、
前記計算強度レベルを割り当てるステップは、特定の仮想マシンの計算タスクを他の仮想マシンの計算タスクと比較し、最も計算集中的なタスクを有する仮想マシンに最も高い計算強度レベルをアサインすることにより実行され、
前記複数の仮想マシンの各仮想マシンに優先順位レベルをアサインするステップと、
複数のサーバの各サーバについて、前記サーバが、前記複数の仮想マシンのための計算
集中的タスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）
を含むかどうかを判断するステップと、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵをアサインするステップと
を実行させることが可能であり、
さらに、コンピュータに、
前記複数の仮想マシンの中のある仮想マシンに、前記仮想マシンの前記計算強度レベル
及び前記優先順位レベルと、前記計算集中型のタスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵをアサインする前記ステップが、所定の閾値を上回る優先順位レベル及び所定の閾値を下回る計算強度レベルとを有する仮想マシンを選択するステップを実行させることが可能な、コンピュータ・プログラム。
【請求項１４】
アプリケーションが計算集中型のタスクを含み、前記仮想マシンのうちの少なくとも１つが、計算集中型のタスクを有するアプリケーションを含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１５】
特定の仮想マシンの優先順位レベルが、前記特定の仮想マシンの作業負荷の重要度を示
す、請求項１３に記載のコンピュータ・プログラム。
【請求項１６】
前記選択された仮想マシンに優先的にＶＧＰＵをアサインするステップをさらに含む、請求項１３に記載のコンピュータ・プログラム。
【請求項１７】
前記ＶＧＰＵが、さらに前記複数のサーバのＣＰＵ速度及びメモリ・サイズに応じてアサインされる、請求項１３に記載のコンピュータ・プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の分野はデータ処理であり、あるいは、より具体的には、仮想グラフィックス処理ユニットの使用を最適化するための方法、装置、及び製品である。
【背景技術】
【０００２】
データ・センタでは、コンピュータをグループ化して作業負荷を共有することができる。作業負荷の分散を支援するために、データ・センタ内のコンピュータのコンポーネントを仮想化し、又は別個にパーティション化して、多重のアプリケーション又はエンティティが別のアプリケーション又はエンティティからの干渉を受けることなくそのコンポーネントを使用することができるようにすることができる。例えば、１つのコンピュータ内のグラフィックス処理ユニット（ＧＰＵ）を幾つかの仮想ＧＰＵに仮想化し、その各々を特定のアプリケーション又は仮想マシンに割り当てることができる。仮想ＧＰＵのような仮想化されたコンポーネントをアプリケーションにどのように分配するかということが、データ・センタの全体としての効率に影響を与える。従って、仮想ＧＰＵの使用の最適化を改善する必要性が常に存在する。
【発明の概要】
【発明が解決しようとする課題】
【０００３】
本発明の目的は、仮想グラフィックス処理ユニットの使用を最適化するための方法、システム、及びコンピュータ・プログラムを提供することにある。
【課題を解決するための手段】
【０００４】
仮想グラフィックス処理ユニットの使用を最適化するための方法、システム、及びコンピュータ・プログラムが提供される。実施形態は、複数の仮想マシンの各仮想マシンに計算強度レベルを割り当てることと、複数の仮想マシンの各仮想マシンに優先順位レベルを割り当てることと、複数のサーバの各サーバについて、そのサーバが、複数の仮想マシンのための計算集中的タスク（ｃｏｍｐｕｔｅ  ｉｎｔｅｎｓｉｖｅ  ｔａｓｋ）を実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）を含むかどうかを判断することと、複数の仮想マシンの中のある仮想マシンに、その仮想マシンの計算強度レベル及び優先順位レベルと、計算集中的タスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵを割り当てることとを含む。
【０００５】
本発明の上記及びその他の目的、特徴及び利点は、添付の図面に示される、本発明の例示的な実施形態の以下のより具体的な説明から明らかとなり、図中、同様の参照符号は一般に本発明の例示的な実施形態の同様の部分を表す。
【図面の簡単な説明】
【０００６】
【図１】本発明の実施形態による、仮想グラフィックス処理ユニットの使用を最適化するためのシステムのネットワーク図を示す。
【図２】本発明の実施形態による、グラフィックス処理ユニットの使用を最適化するのに有用な例示的なソフトウェア配置オーガナイザを含む、自動計算機のブロック図を示す。
【図３】本発明の実施形態による、グラフィックス処理ユニットの使用を最適化するための例示的な方法を示すフローチャートを示す。
【発明を実施するための形態】
【０００７】
本発明による、仮想グラフィックス処理ユニットの使用を最適化するための方法、装置、及び製品は、添付の図面を図１から始めて参照して説明される。図１は、本発明の実施形態による、仮想グラフィックス処理ユニットの使用を最適化するためのシステムのネットワーク図を示す。図１のシステムは、データ・センタにおいて実装することができる。データ・センタは、典型的には特定の主題を中心に編成された、又は特定の業務に関係するデータ及び情報の保管、管理及び頒布のための物理的又は仮想的な集中型リポジトリである。データ・センタは、組織の施設内に存在することもあり、又は専用の施設として維持されることもある。データ・センタの規模は、サーバ・ビルからサーバ室、果てはコンピュータ・クローゼットまで様々である。
【０００８】
図１のシステムは、ソフトウェア配置オーガナイザ（１５２）及び仮想マシン・ストレージ（１０４）にネットワーク（１００）を通じて各々が結合されている、複数のサーバ（１０２）を含む。複数のサーバ（１０２）は、コンピュータ・クラスタとして実装することができる。コンピュータ・クラスタは、密接に連携して動作するリンクされたコンピュータ群である。クラスタの構成要素は、常にではないが通常は、ネットワーク（１００）のような高速ローカル・エリア・ネットワークを通じて互いに接続される。クラスタは通常、単一のコンピュータに比べて性能及び可用性が改善されるように配置されるが、典型的には、同等の速度及び可用性を有する単一のコンピュータよりも遥かに費用効率が高い。コンピュータ・クラスタは、高度な計算問題を解くための高性能コンピューティング（ＨＰＣ）に用いることができる。例えば、コンピュータ・クラスタは倍精度計算を行うために用いることができる。倍精度は、コンピュータ・メモリ内の２つの隣接する記憶位置を占める、コンピュータの数値表現形式である。倍精度数は、単に二倍長（ｄｏｕｂｌｅ）と呼ばれることもあり、整数、固定小数点数、又は浮動小数点数として定義することができる。
【０００９】
図１は、サーバ（１０２）のための例示的なアーキテクチャを示す。図１の各々のサーバ（１０２）は、中央演算処理ユニット（ＣＰＵ）（１０８）と、メモリ（１０６）と、周辺装置相互接続エクスプレス（ｐｅｒｉｐｈｅｒａｌ  ｃｏｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ）（ＰＣＩ−ｅ）バス（１１２）のような高速高帯域バスを介してネットワーク・アダプタ（１１６）及びグラフィックス処理ユニット（ＧＰＵ）（１１４）に結合されたメモリ・コントローラ（１１０）とを含む。
【００１０】
図１のＧＰＵ（１１４）は、ＣＰＵ（１０８）から３Ｄ又は２Ｄのグラフィックス・レンダリングをオフロードし、加速する、専用マイクロプロセッサである。グラフィックス処理ユニットは、組み込み型システム、携帯電話、パーソナル・コンピュータ、ワークステーション、及びゲーム機で用いられる。現代のＧＰＵはコンピュータ・グラフィックスの操作に関して非常に効率的であり、その高度な並列構造により、広範な複雑なアルゴリズムにわたって汎用ＣＰＵよりも効率が高い。パーソナル・コンピュータにおいては、ＧＰＵはビデオ・カード上に存在することができ、又はマザーボードに組み込むことができる。図１のＧＰＵ（１１４）は、メモリ（１０６）内に格納されたデジタル画像情報をレンダリングするためのハードウェア回路で実装することができる。
【００１１】
サーバ（１０２）によって実行されるタスクの割当てを支援するために、サーバ（１０２）の各コンポーネントを仮想化することができる。仮想化は、基本的には、１つの物理エンティティの多数の仮想インスタンスを使用可能にし、次いでその抽象概念を用いて、安全な隔離、リソース管理、仮想マシン可搬性、及びゲストを物理ハードウェア従属性から隔離することにより可能となるその他の多くの特徴を提供することに関する。マシンの仮想化は、各仮想マシンに仮想デバイスを与えること、及び、そのそれぞれの動作をハイパーバイザ・プラットフォーム内で組み合わせて、各ゲストが完全にスタンドアロン型のデバイスを有しているような錯覚を保ちながらネイティブ・ハードウェアを使用するようにすることによって、物理ハードウェアを多重化する。
【００１２】
仮想化マシンは、非仮想化マシンに勝る幾つかの利点を提供する。例えば、仮想化マシンにおいては、同一のサーバ上で多重のオペレーティング・システムを実行することができるので、単一のマシンを１つのアプリケーション専用とする必要をなくすことができる。別の利点は、仮想化マシンは１つのオペレーティング・システムの多数のバージョンをホストすることができるので、開発者が同一のマシン上で異なるオペレーティング・システム環境においてプログラムをテストすることが可能になることである。各々が自身のオペレーティング・システム及びアプリケーションを有する仮想マシンは、いわば「ハードウェアから切り離された」と言うべき自己完結型パッケージのように機能する。各仮想マシンは、アプリケーションの少なくとも１つのインスタンスを含む。作業負荷を分散させるため、より高速なハードウェアに移行するため、並びにハードウェア故障から復旧するために、１つのサーバから別のサーバへと仮想マシンを移動することは比較的容易である。仮想マシンはまた、速やかにクローンを作り、配備することもできる。ますます増えてきている傾向は、ユーザのデスクトップ（ＯＳ及びアプリケーション）をサーバ内の分離した仮想マシンに格納し、専用端末をサーバへの「シン・クライアント」として用いることである。各ユーザは仮想マシン技術により他の全てのユーザのから隔離され、アプリケーションのメンテナンスは各ユーザのオフィスからデータ・センタへと移行する。
【００１３】
サーバ（１０２）のハードウェア・コンポーネントの仮想化は、サーバ（１０２）上で実行されるソフトウェアによって達成することができる。例えば、サーバ（１０２）上で実行される「仮想マシン・モニタ」（ＶＭＭ）又はハイパーバイザ・プラットフォームと呼ばれる仮想マシン制御プログラムのようなソフトウェア（図示せず）は、仮想ＣＰＵ、仮想メモリ、及び仮想ＧＰＵ（１３０）を形成することができる。サーバ（１０２）の仮想化されたハードウェア・コンポーネントを互いにグループ化し、仮想マシン（１１８）を形成するように割り当てることができる。
【００１４】
図１の仮想マシン・ストレージ（１０４）は、仮想マシン（１１８）を格納する。各仮想マシン（１１８）は「マシン内のマシン」であると考えることができる。各仮想マシン（１１８）内のオペレーティング・システムは「ゲスト・オペレーティング・システム」と呼ぶことができ、サーバ（１０２）上で実行されるハイパーバイザ・プラットフォームを介してサーバ（１０２）のハードウェアと通信することができる。仮想マシン（１１８）は、倍精度計算又は映像グラフィックス・レンダリング・タスクのような計算集中的タスク（１２０）を含むことができる。計算集中的タスクを含む仮想マシン（１１８）は、グラフィックス処理ユニット（１１４）を含むサーバ（１０２）によって最も良く性能を発揮することができる。
【００１５】
図１のソフトウェア配置オーガナイザ（１５２）は、どの仮想マシン（１１８）が計算集中的タスクを含むか、及び、それらの識別された仮想マシン（１１８）をグラフィックス処理ユニット（１１４）により実行すべきかどうかを判断する。例えば、ソフトウェア配置オーガナイザ（１５２）は、特定の仮想マシン（１１８）にどの仮想ＧＰＵ（１３０）を割り当てるかを判断することができる。仮想ＧＰＵの使用を最適化するために、図１のソフトウェア配置オーガナイザ（１５２）は、複数の仮想マシンの各仮想マシンに計算強度レベルを割り当てることと、複数の仮想マシンの各仮想マシンに優先順位レベルを割り当てることと、複数のサーバの各サーバについて、そのサーバが、複数の仮想マシンのための計算集中的タスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）を含むかどうかを判断することと、複数の仮想マシンの中のある仮想マシンに、その仮想マシンの計算強度レベル及び優先順位レベルと、計算集中的タスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵを割り当てることとが可能な、コンピュータ・プログラム命令を含む。仮想マシンにＶＧＰＵを割り当てることは、仮想マシン（１１８）及び計算集中的タスク（１２０）を物理サーバ（１０２）に移動させることを含む。ソフトウェア・エンティティはサーバ（１０２）のメモリ（１０６）内にローカルにロードされ、計算集中的タスク（１２０）はＧＰＵ（１１４）により実行される。
【００１６】
図１のソフトウェア配置オーガナイザ（１５２）はまた、クライアント・オペレーティング・システムを含む仮想マシン（１１８）に、サーバ・オペレーティング・システムを含む仮想マシンより高い優先順位レベルを割り当てることが可能なコンピュータ・プログラム命令を含むこともできる。図１のソフトウェア配置オーガナイザ（１５２）はまた、所定の閾値を上回る優先順位レベル及び所定の閾値を下回る計算強度レベルを有する仮想マシンを選択し、選択された仮想マシンに優先的にＶＧＰＵを割り当てることが可能なコンピュータ・プログラム命令を含むこともできる。
【００１７】
図１に示された例示的なシステムを構成するサーバ及び他のデバイスの配置は説明のためのものであり、限定のためのものではない。本発明の種々の実施形態による有用なデータ処理システムは、当業者であれば思いつくような、図１には図示されない付加的なサーバ、ルータ、他のデバイス、及びピア・ツー・ピア・アーキテクチャを含むことができる。そのようなデータ処理システムにおけるネットワークは、例えばＴＣＰ（伝送制御プロトコル）、ＩＰ（インターネット・プロトコル）、ＨＴＴＰ（ハイパーテキスト転送プロトコル）、ＷＡＰ（ワイヤレス・アクセス・プロトコル）、ＨＤＴＰ（ハンドヘルド・デバイス転送プロトコル）、及び当業者であれば思いつくような他のプロトコルを含む、多くのデータ通信プロトコルをサポートすることができる。当業者であれば認識するように、各サーバ（１０２）は、所望に応じて、キャッシュ、モデム、パラレル又はシリアル・インターフェース、ＳＣＳＩインターフェースなどのような、他のバス、デバイス、及びサブシステムを含むことができる。本発明の種々の実施形態は、図１に示されたものに加えて、様々なハードウェア・プラットフォーム上で実装することができる。
【００１８】
本発明によるグラフィックス処理ユニットの使用の最適化は、一般に、コンピュータ、即ち自動計算機で実装される。図１のシステムにおいて、例えば、ソフトウェア配置オーガナイザ（１５２）は少なくともある程度まではコンピュータとして実装される。従って、更なる説明のために、図２は、本発明の実施形態による、グラフィックス処理ユニットの使用を最適化するのに有用な例示的なソフトウェア配置オーガナイザ（１５２）を含む、自動計算機のブロック図を示す。図２のソフトウェア配置オーガナイザ（１５２）は、少なくとも１つのコンピュータ・プロセッサ（１５６）即ち「ＣＰＵ」を含み、さらに、高速メモリ・バス（１６６）及びバス・アダプタ（１５８）を通じてプロセッサ（１５６）及びソフトウェア配置オーガナイザ（１５２）の他のコンポーネントに接続された、ランダム・アクセス・メモリ（１６８）（「ＲＡＭ」）を含む。
【００１９】
ＲＡＭ（１６８）には、仮想グラフィックス処理ユニットの使用を最適化するためのコンピュータ・プログラム命令のモジュールである仮想グラフィックス処理ユニット使用最適化器（１９０）が格納される。図２のソフトウェア配置オーガナイザ（１５２）は、複数の仮想マシンの各仮想マシンに計算強度レベルを割り当てることと、複数の仮想マシンの各仮想マシンに優先順位レベルを割り当てることと、複数のサーバの各サーバについて、そのサーバが、複数の仮想マシンのための計算集中的タスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）を含むかどうかを判断することと、複数の仮想マシンの中のある仮想マシンに、その仮想マシンの計算強度レベル及び優先順位レベルと、計算集中的タスクを実施するために利用可能なＶＧＰＵの数とに応じて、１つ又は複数のＶＧＰＵを割り当てることとが可能な、コンピュータ・プログラム命令を含む。
【００２０】
ＲＡＭ（１６８）にはさらに、オペレーティング・システム（１５４）が格納される。本発明の実施形態に従ってグラフィックス処理ユニットの使用を最適化するのに有用なオペレーティング・システムは、ＵＮＩＸ（商標）、Ｌｉｎｕｘ（商標）、Ｍｉｃｒｏｓｏｆｔ  ＸＰ（商標）、ＡＩＸ（商標）、ＩＢＭのｉ５／ＯＳ（商標）、及び当業者であれば思いつくような他のオペレーティング・システムを含む。図２の例におけるオペレーティング・システム（１５４）及び仮想グラフィックス処理ユニット使用最適化器（１９０）はＲＡＭ（１６８）内に示されているが、こうしたソフトウェアの多くのコンポーネントは、典型的には、例えばディスク・ドライブ（１７０）上にある不揮発性メモリのような不揮発性メモリ内にも格納される。
【００２１】
図２のソフトウェア配置オーガナイザ（１５２）は、拡張バス（１６０）及びバス・アダプタ（１５８）を通じてプロセッサ（１５６）及びソフトウェア配置オーガナイザ（１５２）の他のコンポーネントに結合された、ディスク・ドライブ・アダプタ（１７２）を含む。ディスク・ドライブ・アダプタ（１７２）は、不揮発性データ・ストレージをディスク・ドライブ（１７０）の形でソフトウェア配置オーガナイザ（１５２）に接続する。本発明の実施形態に従ってグラフィックス処理ユニットの使用を最適化するためのコンピュータにおいて有用なディスク・ドライブ・アダプタは、Ｉｎｔｅｇｒａｔｅｄ  Ｄｒｉｖｅ  Ｅｌｅｃｔｒｏｎｉｃｓ（「ＩＤＥ」）アダプタ、小型コンピュータ・システム・インターフェース（「ＳＣＳＩ」）アダプタ、及び当業者であれば思いつくような他のアダプタを含む。当業者であれば思いつくように、不揮発性コンピュータ・メモリはまた、光ディスク・ドライブ、電気的消去可能プログラム可能読み出し専用メモリ（所謂「ＥＥＰＲＯＭ」又は「フラッシュ」メモリ）、ＲＡＭドライブなどとして実装することもできる。
【００２２】
図２の例示的なソフトウェア配置オーガナイザ（１５２）は、１つ又は複数の入力／出力（「Ｉ／Ｏ」）アダプタ（１７８）を含む。Ｉ／Ｏアダプタは、例えば、コンピュータ・ディスプレイ画面のような表示装置への出力、並びに、キーボード及びマウスといったユーザ入力デバイス（１８１）からのユーザ入力を制御するためのソフトウェア・ドライバ及びコンピュータ・ハードウェアを通じて、ユーザ指向の入力／出力を実装する。図２の例示的なソフトウェア配置オーガナイザ（１５２）は、ディスプレイ画面又はコンピュータ・モニタのような表示装置（１８０）へのグラフィックス出力に特化して設計されたＩ／Ｏアダプタの一例であるビデオ・アダプタ（２０９）を含む。ビデオ・アダプタ（２０９）は、高速ビデオ・バス（１６４）、バス・アダプタ（１５８）、及び、これもまた高速バスであるフロント・サイド・バス（１６２）を通じてプロセッサ（１５６）に接続される。
【００２３】
図２の例示的なソフトウェア配置オーガナイザ（１５２）は、ネットワーク（１００）を介した複数のサーバ（１０２）とのデータ通信、及び仮想マシン・ストレージ（１０４）とのデータ通信のための、通信アダプタ（１６７）を含む。このようなデータ通信は、ＲＳ−２３２接続経由、ユニバーサル・シリアル・バス（「ＵＳＢ」）のような外部バス経由、ＩＰデータ通信ネットワークのようなデータ通信ネットワーク経由、及び当業者であれば思いつくような他の方式で、シリアルに実行することができる。通信アダプタはハードウェア・レベルのデータ通信を実装し、それを経由して、１つのコンピュータが別のコンピュータに、直接又はデータ通信ネットワークを介して、データ通信を送信する。本発明の実施形態による、グラフィックス処理ユニットの使用を最適化するのに有用な通信アダプタの例は、有線ダイヤルアップ通信用のモデム、有線データ通信ネットワーク通信用のイーサネット（ＩＥＥＥ  ８０２．３）アダプタ、及び無線データ通信ネットワーク通信用の８０２．１１アダプタを含む。
【００２４】
更なる説明のために、図３は、本発明の実施形態による、グラフィックス処理ユニットの使用を最適化するための例示的な方法を示すフローチャートを示す。図３の方法は、複数の仮想マシンの各仮想マシン（１１８）に計算強度レベル（３１０）を割り当てること（３０２）を含む。仮想マシン（１１８）に計算強度レベル（３１０）を割り当てること（３０２）は、特定の仮想マシン（１１８）の計算タスクを他の仮想マシン（１１８）の計算タスクと比較し、最も計算集中的なタスクを有する仮想マシン（１１８）に最も高い計算強度レベル（３１０）を割り当てることにより実行することができる。例えば、コンピュータ支援設計（ＣＡＤ）プログラムのような高解像度のグラフィックスを必要とするアプリケーションを含む仮想マシン（１１８）に、計算集中的タスクを含まない仮想マシン（１１８）より高い計算強度レベル（３１０）を割り当てることができる。
【００２５】
図３の方法は、複数の仮想マシンの各仮想マシン（１１８）に優先順位レベル（３１２）を割り当てること（３０４）を含む。複数の仮想マシンの各仮想マシン（１１８）に優先順位レベル（３１２）を割り当てること（３０４）は、仮想マシン（１１８）の作業負荷の重要度を判断し、作業負荷の重要度を比較し、最も重要な作業負荷を有する仮想マシン（１１８）に最も高い優先順位レベル（３１２）を割り当てることにより実行することができる。仮想マシン（１１８）に優先順位レベル（３１２）を割り当てること（３０４）は、上述のようにソフトウェア配置オーガナイザ（１５２）により実行することができる。
【００２６】
図３の方法は、複数のサーバの各サーバ（１０２）について、そのサーバ（１０２）が、複数の仮想マシン（１１８）のための計算集中的タスクを実施するために利用可能な仮想グラフィックス処理ユニット（ＶＧＰＵ）（１３０）を含むかどうかを判断すること（３０６）を含む。サーバ（１０２）が計算集中的タスクを実施するために利用可能なＶＧＰＵ（１３０）を含むかどうかを判断すること（３０６）は、サーバ（１０２）から、そのサーバ（１０２）において利用可能なリソースを示す情報を受け取り、示されたリソースをＶＧＰＵ（１３０）に関して検査し、識別されたＶＧＰＵ（１３０）の作業負荷を判断することにより実行される。
【００２７】
図３の方法は、複数の仮想マシンの中のある仮想マシン（１１８）に、その仮想マシン（１１８）の計算強度レベル（３１０）及び優先順位レベル（３１２）と、計算集中的タスクを実施するために利用可能なＶＧＰＵ（１３０）の数とに応じて、１つ又は複数のＶＧＰＵ（１３０）を割り当てること（３０８）を含む。仮想マシン（１１８）にＶＧＰＵ（１３０）を割り当てること（３０８）は、どの仮想マシン（１１８）をＶＧＰＵ（１３０）に関連付けるかを決定し、利用可能なＶＧＰＵ（１３０）を含むサーバ（１０２）にその仮想マシン（１１８）を伝送することにより実行することができる。
【００２８】
上記の説明を鑑みて、本発明の実施形態によりグラフィックス処理ユニットの使用を最適化することの利点は、グラフィックス処理ユニット（ＧＰＵ）を利用してこれに影響を与えるクライアント・オペレーティング・システム又はその他の作業負荷を実行する仮想マシンに対して改善された映像性能を与えることを含むことを、読者は認識するであろう。さらに、優先順位レベルに対して配置を最適化することにより、クリティカルな期間中に業務の優先順位がより高い作業負荷がリソースを獲得することを保証することができる。この機能により、設定された業務目標に合致するような仮想マシン及び仮想ＧＰＵの構成が可能になる。
【００２９】
本発明の例示的な実施形態は、主に、グラフィックス処理ユニットの使用を最適化するための完全に機能的なコンピュータ・システムに即して説明されている。しかしながら、当業者であれば、本発明はまた、いずれかの適切なデータ処理システムと共に使用するためのコンピュータ可読ストレージ媒体上に配置されたコンピュータ・プログラムとして具体化できることを認識するであろう。このようなコンピュータ可読ストレージ媒体は、磁気媒体、光媒体、又は他の適切な媒体を含む、機械可読情報のためのいずれかのストレージ媒体とすることができる。このような媒体の例として、ハード・ドライブ又はディスケット内の磁気ディスク、光ドライブのためのコンパクト・ディスク、磁気テープ、又は当業者であれば思いつくその他の媒体が挙げられる。当業者であれば、適切なプログラミング手段を有するあらゆるコンピュータ・システムが、プログラムとして具体化された本発明の方法のステップを実行することが可能であることを直ちに認識するであろう。本明細書において説明された例示的な実施形態のうちの幾つかはコンピュータ・ハードウェア上にインストールされ、そこで実行されるソフトウェアに向けられているが、それにもかかわらず、当業者であれば、ファームウェア又はハードウェアとして実装される代替的な実施形態も十分に本発明の範囲内にあることも認識するであろう。
【００３０】
当業者であれば分かるように、本発明の態様は、システム、方法又はコンピュータ・プログラムとして具体化することができる。従って、本発明の態様は、全体がハードウェアの実施形態、全体がソフトウェアの実施形態（ファームウェア、常駐ソフトウェア、マイクロ・コードなどを含む）、又はソフトウェアの態様とハードウェアの態様とを組み合わせた実施形態の形を取ることができ、本明細書においてはこれらの全てを一般に、「回路」、「モジュール」又は「システム」と呼ぶことできる。さらに、本発明の態様は、コンピュータ可読プログラム・コードが組み入れられた１つ又は複数のコンピュータ可読媒体内で具体化されたコンピュータ・プログラムの形を取ることができる。
【００３１】
１つ又は複数のコンピュータ可読媒体の任意の組み合わせを用いることができる。コンピュータ可読媒体は、コンピュータ可読ストレージ媒体とすることができる。コンピュータ可読ストレージ媒体は、例えば、電子、磁気、光学、電磁気、赤外線若しくは半導体のシステム、装置若しくはデバイス、又は上記のいずれかの適切な組合せとすることができるが、これらに限定されるものではない。コンピュータ可読ストレージ媒体のより具体的な例（非網羅的なリスト）として、１つ又は複数の配線を有する電気的接続、ポータブル・コンピュータ・ディスケット、ハード・ディスク、ランダム・アクセス・メモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭ又はフラッシュ・メモリ）、光ファイバ、ポータブル・コンパクト・ディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光記憶デバイス、磁気記憶デバイス、又は上記のいずれかの適切な組合せが挙げられる。本明細書の文脈では、コンピュータ可読ストレージ媒体とは、命令実行システム、装置又はデバイスによって又はこれらと関連して用いるためのプログラムを収容し又は格納することができるいずれかの有形媒体である。
【００３２】
コンピュータ可読媒体に組み入れられたプログラム・コードは、無線、有線、光ファイバ・ケーブル、ＲＦなど、又はこれらのいずれかの適切な組合せを含むがこれらに限定されない、いずれかの適切な媒体を用いて伝送することができる。
【００３３】
本発明の態様についての動作を実行するためのコンピュータ・プログラム・コードは、Ｊａｖａ、ＳｍａｌｌＴａｌｋ、Ｃ＋＋などのようなオブジェクト指向型プログラミング言語、及び、「Ｃ」プログラミング言語又は同様のプログラミング言語のような従来の手続き型プログラミング言語を含む１つ又は複数のプログラミング言語のいずれかの組合せで記述することができる。プログラム・コードは、全体をユーザのコンピュータ上で実行することができ、スタンドアロン型のソフトウェア・パッケージとして部分的にユーザのコンピュータ上で実行することができ、一部をユーザのコンピュータ上で実行し、一部を遠隔コンピュータ上で実行することができ、又は、全体を遠隔コンピュータ若しくはサーバ上で実行することができる。後者のシナリオでは、遠隔コンピュータは、ローカル・エリア・ネットワーク（ＬＡＮ）若しくは広域エリア・ネットワーク（ＷＡＮ）を含むいずれかのタイプのネットワークを通じてユーザのコンピュータに接続することができ、又は（例えば、インターネット・サービス・プロバイダを用いたインターネットを通じて）外部コンピュータに対する接続を行うこともできる。
【００３４】
本発明の態様は、本発明の実施形態による方法、装置（システム）、及びコンピュータ・プログラムのフローチャート図及び／又はブロック図を参照して、以下で説明される。フローチャート図及び／又はブロック図の各ブロック、並びにフローチャート図及び／又はブロック図内のブロックの組合せは、コンピュータ・プログラム命令によって実装することができることが理解されよう。これらのコンピュータ・プログラム命令を、汎用コンピュータ、専用コンピュータ、又は他のプログラム可能データ処理装置のプロセッサに提供して、マシンを製造し、それにより、コンピュータ又は他のプログラム可能データ処理装置のプロセッサによって実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するための手段を生成するようにすることができる。
【００３５】
これらのコンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスを特定の方式で機能させるように指示することができるコンピュータ可読媒体内に格納して、それにより、そのコンピュータ可読媒体内に格納された命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装する命令を含む製品を製造するようにすることもできる。
【００３６】
コンピュータ・プログラム命令を、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイスにロードして、コンピュータ、他のプログラム可能データ処理装置、又は他のデバイス上で一連の動作ステップを行わせてコンピュータ実装プロセスを生成し、それにより、コンピュータ又は他のプログラム可能装置上で実行される命令が、フローチャート及び／又はブロック図の１つ又は複数のブロック内で指定された機能／動作を実装するためのプロセスを提供するようすることもできる。
【００３７】
図面内のフローチャート及びブロック図は、本発明の種々の実施形態による、システム、方法及びコンピュータ・プログラムの可能な実装の、アーキテクチャ、機能及び動作を示す。この点に関して、フローチャート又はブロック図内の各ブロックは、指定された論理関数を実装するための１つ又は複数の実行可能命令を含むモジュール、セグメント、又はコードの一部を表すことができる。幾つかの代替的な実装において、ブロック内に記された機能は、図中に記された順序とは異なる順序で行われることがあることにも留意された。例えば、連続して図示された２つのブロックが、実際には実質的に同時に実行されることもあり、又は、これらのブロックは、関与する機能に応じて、ときとして逆順で実行されることもある。ブロック図及び／又はフローチャート図内の各ブロック、並びにブロック図及び／又はフローチャート図内のブロックの組合せは、指定された機能又は動作を実行する専用ハードウェア・ベースのシステム、又は専用のハードウェアとコンピュータ命令との組合せによって実装することができることにも留意されたい。
【００３８】
上記の説明から、本発明の種々の実施形態に対して、その真意から逸脱することなく修正及び変更を行うことができることが理解されよう。本明細書における説明は例示のみを目的としており、限定的な意味で解釈されるべきではない。本発明の範囲は、添付の特許請求の範囲の文言のみによって限定される。
【図１】
0005969743.tif 000002
【図２】
0005969743.tif 000003
【図３】
0005969743.tif 000004