JP2014500535A - Gpu利用可能仮想マシンの負荷分散技法 - Google Patents

Gpu利用可能仮想マシンの負荷分散技法 Download PDF

Info

Publication number
JP2014500535A
JP2014500535A JP2013531625A JP2013531625A JP2014500535A JP 2014500535 A JP2014500535 A JP 2014500535A JP 2013531625 A JP2013531625 A JP 2013531625A JP 2013531625 A JP2013531625 A JP 2013531625A JP 2014500535 A JP2014500535 A JP 2014500535A
Authority
JP
Japan
Prior art keywords
graphics
virtual machine
processor
graphic
computing device
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013531625A
Other languages
English (en)
Other versions
JP5902175B2 (ja
Inventor
スティーブン ポスト ブラッドリー
ポナッパン ヴァラダラジャン
シング パリクシット
マシュー ペンフォールド ジョンストン ウィンストン
カイハウ ハン エリック
チャクラボーティ パラグ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2014500535A publication Critical patent/JP2014500535A/ja
Application granted granted Critical
Publication of JP5902175B2 publication Critical patent/JP5902175B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • G06F9/5088Techniques for rebalancing the load in a distributed system involving task migration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/4557Distribution of virtual machine instances; Migration and load balancing

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)
  • Image Generation (AREA)
  • Processing Or Creating Images (AREA)

Abstract

仮想マシンの間で3Dグラフィック演算装置の利用を調整するための例示的な技法が明細書において開示されている。例示的な実施形態では、仮想化プラットフォームが、仮想マシンに対してグラフィック描画モジュールのインスタンスをロードし、当該グラフィック描画モジュールを実行するためのGPUを選択し、選択したGPUに対して描画するように当該仮想マシンを構成することができる。上記に加えて、他の態様が発明を実施するための形態、特許請求の範囲、および図面に記載されている。

Description

本発明は、GPU利用可能仮想マシンの負荷分散技法に関する。
仮想マシン・プラットフォームにより、各オペレーティング・システムをそれ自身の仮想マシン内部で実行することで、物理マシン上の複数のゲスト・オペレーティング・システムを同時に実行することができる。仮想マシン・プラットフォームにより提供できる1つの例示的なサービスは、仮想デスクトップ・セッションである。仮想デスクトップ・セッションは、基本的には、リモート・コンピュータに送信された自己のユーザ・インタフェースを有する、仮想マシン内部で実行されるパーソナル・コンピュータ環境である。本アーキテクチャはリモート・デスクトップ環境に似ているが、複数のユーザを同時にサーバ・クラスのオペレーティング・システムに接続させるのではなく、仮想デスクトップ・セッションにおいて各ユーザに対し、仮想マシンで実行されている各ユーザの汎用的なオペレーティング・システムへのアクセス権を付与する。
現代のオペレーティング・システムは、三次元(3D)アプリケーション/ビデオゲーム向けの3Dグラフィカル・ユーザ・インタフェースおよびそのオペレーティング・システム・ユーザ・インタフェースを描画する。ユーザは、3D環境との対話体験を楽しむので、3Dグラフィックを仮想デスクトップ・セッションでクライアントにストリーミング可能にすることが望ましいはずである。しかし、3Dグラフィックのストリーミングを可能とするのは多くの理由から困難である。例えば、3Dグラフィックをストリーミングする動作には、帯域幅および/または圧縮が必要である。さらに、仮想デスクトップ・サーバが、3D GPU(graphic processing unit)を備える必要があるはずである。当該3D GPUは、3D機能を実施することができる。3Dグラフィック処理はリソース集約的であり、GPUは一般に数個の3Dグラフィック・ユーザ・インタフェースを一度に描画できるにすぎない。これらのGPUは、あまりに多くのグラフィック・ユーザ・インタフェースを描画する必要がある場合、すぐに過負荷となるおそれがある。残念なことに、仮想デスクトップを配備する際は、GPUが多数の3Dグラフィック・ユーザ・インタフェースを同時に描画しなければならないことがある。これにより、1つまたは複数の操作がタイムアウトするおそれがあり、次いでグラフィック・ドライバがグラフィック演算装置をリセットし、それが3Dアプリケーションの停止の原因となる。したがって、GPUが過負荷となりクラッシュすることを防止するための技法が望ましい。
例示的な実施形態には、システムが含まれる。本例では、システムは、プロセッサと、コンピュータ・システムが動作するときに当該プロセッサと通信するメモリとを備えるが、これらに限らない。本例では、メモリはコンピュータ可読命令を含むことができる。当該コンピュータ可読命令は、実行時にプロセッサに、3Dグラフィックを第1の3Dグラフィック演算装置で描画するための1群の仮想マシンを割り当てさせ、当該第1の3Dグラフィック演算装置がオーバコミットされていることを当該第1の3Dグラフィック演算装置がコマンドへの応答に要した時間に少なくとも基づいて判定させ、少なくとも当該第1の3Dグラフィック演算装置がオーバコミットされているとの判定に応答して、第1の仮想マシンを当該1群の仮想マシンから第2のグラフィック演算装置に移動させる。上記に加えて、他の技法も特許請求の範囲、発明を実施するための形態、および図面に記載されている。
別の例示的な実施形態には、コンピュータ可読記憶媒体が含まれる。本例では、コンピュータ可読記憶媒体はコンピュータ可読命令を含む。当該コンピュータ可読命令は、実行時にプロセッサに、3Dグラフィックを第1の仮想マシンに対して描画するために利用したグラフィック・メモリの量を推定させ、グラフィックを当該第1の3Dグラフィック演算装置で描画するために割り当てた1群の仮想マシンが発行したダイレクト・メモリ・アクセスのトランザクションに関連する待ち時間の値が第1の閾値未満であり、3Dグラフィックの描画に利用したグラフィック・メモリの推定量が第2の閾値未満であると判定したことに応答して、当該第1の3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択させ、3Dグラフィックを当該第1の3Dグラフィック演算装置で描画するように当該第1の仮想マシンを割り当てさせる。上記に加えて、他の技法も特許請求の範囲、発明を実施するための形態、および図面に記載されている。
別の例示的な実施形態には、方法が含まれる。本例では、当該方法は、少なくともグラフィックを仮想マシンに対して描画するために利用したグラフィック・メモリの量を推定すること、グラフィック・メモリの推定量を、複数の3Dグラフィック演算装置が制御する利用可能なグラフィック・メモリの推定量と比較すること、当該比較に従って、3Dグラフィックを仮想マシンに対して描画するための3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択すること、3Dグラフィックを仮想マシンに対して描画するために選択した3Dグラフィック演算装置を割り当てること、を含むがこれらに限らない。上記に加えて、他の技法も特許請求の範囲、発明を実施するための形態、および図面に記載されている。
本開示の1つまたは複数の様々な態様が、本明細書で引用した態様をもたらすための回路および/またはプログラミングを含みうるがこれらに限られず、当該回路および/またはプログラミングが事実上、システム設計者の設計上の選択に応じて本明細書で引用した態様をもたらすように構成された、ハードウェア、ソフトウェア、および/またはファームウェアの任意の組合せであることができることは当業者には理解されよう。
以上は要約であり、したがって当然、簡略化、一般化、および細部の省略が含まれている。本要約が例示的なものにすぎず、決して限定を意図するものではないことは当業者には理解されよう。
コンピュータ・システムの高レベルなブロック図である。 仮想マシン・サーバの高レベルなブロック図である。 仮想マシン・サーバの高レベルなブロック図である。 仮想デスクトップ・サーバの高レベルなブロック図である。 仮想デスクトップ・サーバの高レベルなブロック図である。 仮想デスクトップ・サーバの高レベルなブロック図である。 データセンタの高レベルなブロック図である。 仮想マシンの間でGPUの使用を調整する動作手続を示す図である。 追加の動作を含む、図8の動作手続を示す図である。 仮想マシンの間でGPUの使用を調整する動作手続を示す図である。 追加の動作を含む、図10の動作手続を示す図である。 仮想マシンの間でGPUを調整するための動作手続を示す図である。 追加の動作を含む、図12の動作手続を示す図である。
本発明では、1つまたは複数のコンピュータ・システムを使用してもよい。図1および以下の議論は、本発明を実装できる適切なコンピューティング環境の簡潔で一般的な説明を提供しようとするものである。
本明細書で使用する回路という用語は、ハードウェア割込みコントローラ、ハード・ドライブ、ネットワーク・アダプタ、グラフィック・プロセッサ、ハードウェア・ベースのビデオ/オーディオ・コーデックのようなハードウェア・コンポーネント、およびかかるハードウェアを動作させるために用いるファームウェアを含むことができる。回路という用語はまた、マイクロ・プロセッサ、特定用途向け集積回路、およびプロセッサ、例えば、命令の読取と実行を行い、ファームウェアおよび/またはソフトウェアにより構成された、マルチコアの汎用演算装置のコアを含むことができる。プロセッサ(複数可)を、メモリ、例えば、RAM、ROM、ファームウェア、および/または大容量記憶からロードされる命令により構成して、機能(複数可)を実施するように当該プロセッサを構成するよう動作可能なロジックを具体化することができる。例示的な実施形態では、回路がハードウェアとソフトウェアの組合せを含む場合、実装者は、ハードウェアで実行できる機械可読なコードに後にコンパイルされるロジックを具体化する、ソース・コードを書き込むことができる。ハードウェア実装の機能とソフトウェア実装の機能には殆ど差異がないところまで最先端技術が発展していると当業者は理解できるので、本明細書で説明した機能を実現するためにハードウェアかソフトウェアのどちらを選択するかは設計上の選択にすぎない。換言すれば、ソフトウェア・プロセスを均等なハードウェア構造に変換でき、ハードウェア構造自体を均等なソフトウェア・プロセスに変換できると当業者は理解できるので、ハードウェア実装とソフトウェア実装のどちらを選択するかは実装者に委ねられている。
図1を参照すると、例示的なコンピュータ・システム100が示されている。コンピュータ・システム100は、プロセッサ102、例えば実行コアを含むことができる。1つのプロセッサ102を示しているが、他の実施形態ではコンピュータ・システム100が複数のプロセッサ、例えば、プロセッサ基板ごとに複数の実行コアおよび/または各々が複数の実行コアを有しうる複数のプロセッサ基板を有してもよい。図で示すように、様々なコンピュータ可読記憶媒体110を、様々なシステム・コンポーネントをプロセッサ102に接続する1つまたは複数のシステム・バスにより相互接続することができる。システム・バスは数種のバス構造のうち任意のものであってもよい。当該バス構造には、メモリ・バスまたはメモリ・コントローラ、周辺バス、および様々なバス・アーキテクチャのうち任意のものを用いるローカル・バスが含まれる。例示的な実施形態では、コンピュータ可読記憶媒体110は、例えば、RAM(random access memory)104、例えば電気機械ハード・ドライブ(electromechanical hard drive)、固体ハード・ドライブ、等のような記憶装置106、例えば、FLASH RAMまたはROMのようなファームウェア108、例えばCD−ROM、フロツピ・ディスク、DVD、FLASHドライブ、外部記憶装置、等のような取外し可能記憶装置118を含むことができる。磁気カセット、フラッシュ・メモリ・カード、および/またはデジタル・ビデオ・ディスクのような他種のコンピュータ可読記憶媒体を使用できることは当業者には理解されよう。
コンピュータ可読記憶媒体110は、プロセッサ実行可能命令122、データ構造、プログラム・モジュールおよび、実行可能命令のようなコンピュータ110に対する他のデータの、不揮発性記憶および揮発性記憶を提供することができる。BIOS(basic input/output system)120は、例えば起動時にコンピュータ・システム100内部の要素間での情報転送を支援する基本ルーチンを含み、ファームウェア108に格納することができる。オペレーティング・システムおよび/またはアプリケーション・プログラムを含めて、幾つかのプログラムを、ファームウェア108、記憶装置106、RAMl04、および/または取外し可能記憶装置118に格納してもよく、プロセッサ102により実行してもよい。
コマンドおよび情報をコンピュータ100により入力装置116を介して受け取ってもよい。当該入力装置116には、キーボードおよびポインティング・デバイスを含めることができるがこれらに限らない。他の入力装置には、マイクロフォン、ジョイスティック、ゲーム・パッド、スキャナ、等を含めてもよい。これらおよび他の入力装置はしばしば、システム・バスに接続されるシリアル・ポート・インタフェースを介してプロセッサ102に接続されるが、パラレル・ポート、ゲーム・ポート、またはUSB(universal serial bus)のような他のインタフェースにより接続してもよい。ディスプレイまたは他種のディスプレイ装置も、グラフィック演算装置112の一部であるかまたはグラフィック演算装置112に接続できるビデオ・アダプタのようなインタフェースを介して、システム・バスに接続することができる。ディスプレイに加えて、コンピュータは一般に、スピーカおよびプリンタ(図示せず)のような他の周辺出力装置を備える。図1の例示的なシステムはまた、ホスト・アダプタ、SCSI(Small Computer System Interface)バス、およびSCSIバスに接続された外部記憶装置を備えることができる。
コンピュータ・システム100を、リモート・コンピュータのような1つまたは複数のリモート・コンピュータへの論理接続を用いてネットワーク環境で動作させてもよい。リモート・コンピュータは、別のコンピュータ、サーバ、ルータ、ネットワークPC、ピア・デバイスまたは他の共通ネットワーク・ノードであってもよく、一般に、コンピュータ・システム100に関して上述した要素の多くまたは全部を含むことができる。
LANまたはWANのネットワーク環境で使用するとき、コンピュータ・システム100をネットワーク・インタフェース・カード114を介してLANまたはWANに接続することができる。NICl14は、内部または外部にあってもよく、システム・バスに接続することができる。ネットワーク環境では、コンピュータ・システム100に関して図示したプログラム・モジュール、またはその一部を、リモートのメモリ記憶装置に格納してもよい。ここで説明したネットワーク接続は例であって、コンピュータ間の通信リンクを確立する他の手段を使用してもよいことは理解されよう。さらに、本開示の多数の実施形態がコンピュータ化システムに特に良く適していると想定しているが、本明細書では何ら本開示をかかる実施形態に限定する意図はない。
図2を参照すると、仮想マシンの生成に使用できる例示的な仮想化プラットフォームが示されている。本実施形態では、ハイパバイザ・マイクロカーネル202を、コンピュータ・システム200のハードウェアを制御し当該ハードウェアへのアクセスを調停するように構成することができる。ハイパバイザ・マイクロカーネル202は、子パーティション1乃至子パーティションN(Nは1より大きい整数)のような、パーティションと呼ばれる実行環境を生成することができる。ここで、子パーティションとは、ハイパバイザ・マイクロカーネル202によりサポートされる基本的な隔離単位である。ハイパバイザ・マイクロカーネル202は、或るパーティション内のプロセスを隔離して別のパーティションのリソースにアクセスしないようにすることができる。各子パーティションを、ハイパバイザ・マイクロカーネル202の制御下にある、例えばメモリ、デバイス、プロセッサ・サイクル、等のような1組のハードウェア・リソースにマップすることができる。1実施形態では、ハイパバイザ・マイクロカーネル202は、スタンド・アロンのソフトウェア製品、オペレーティング・システムの一部であることができ、マザーボードのファームウェア、特殊集積回路、またはそれらの組合せに組み込むことができる。
ハイパバイザ・マイクロカーネル202は、物理コンピュータ・システムにおけるゲスト・オペレーティング・システムのメモリのビューを制限することによって、パーティション化を強制することができる。ハイパバイザ・マイクロカーネル202が仮想マシンをインスタンス化すると、ハイパバイザ・マイクロカーネル202は、システム物理メモリ(SPM)のページ、例えば、開始アドレスと終了アドレスを伴う固定長のメモリ・ブロックを、ゲスト物理メモリ(GPM)のような仮想マシンに割り当てることができる。ここで、ゲストの制限されたシステム・メモリのビューがハイパバイザ・マイクロカーネル202により制御される。ゲスト物理メモリという用語は、仮想マシンの視点からメモリのページを記述する省略的な方法であり、システム物理メモリという用語は、物理システムの視点からメモリのページを記述する省略的な方法である。したがって、仮想マシンに割り当てたメモリのページには、ゲスト物理アドレス(仮想マシンが用いるアドレス)とシステム物理アドレス(ページの実アドレス)が存在することになる。
ゲスト・オペレーティング・システムが、ゲスト物理メモリを仮想化してもよい。仮想メモリは、オペレーティング・システムがメモリをオーバコミットできるようにし、アプリケーションが連続的な作業用メモリに単独でアクセスできるようにする、管理技法である。仮想化環境では、ゲスト・オペレーティング・システムが1つまたは複数のページ・テーブルを使用して、仮想ゲスト・アドレスとして知られる仮想アドレスをゲスト物理アドレスに変換することができる。本例では、メモリ・アドレスがゲスト仮想アドレス、ゲスト物理アドレス、およびシステム物理アドレスを有してもよい。
図示した例では、親パーティション・コンポーネントが、Xenのオープン・ソースのハイパバイザのドメイン0に類似のものと考えることもでき、ホスト204を含むことができる。ホスト204はオペレーティング・システム(または1組の構成ユーティリティ)であることができ、ホスト204を、仮想化サービス・プロバイダ228(VSP)を用いることにより子パーティション1乃至Nで実行されているゲスト・オペレーティング・システムにリソースを提供するように構成することができる。VSP228は、オープン・ソースのコミュニティでは一般にバックエンド・ドライバと呼ばれ、仮想化サービス・クライアント(VSC)(オープン・ソースのコミュニティでは一般にフロントエンド・ドライバと呼ばれ、または、準仮想化デバイスと呼ばれる)によりハードウェア・リソースに対するインタフェースを多重化するために使用することができる。図に示すように、仮想化サービス・クライアントはゲスト・オペレーティング・システムのコンテキスト内で実行される。しかし、これらのドライバは、それらにゲストではなくハイパバイザを提供できる点で、ゲスト内の残りのドライバとは異なる。例示的な実施形態では、仮想化サービス・クライアント216および218と通信するために仮想化サービス・プロバイダ228により使用されるパスを、仮想化パスと考えることができる。
図に示すように、エミュレータ234、例えば、仮想化IDEデバイス、仮想化ビデオ・アダプタ、仮想化NIC、等を、ホスト204内部で実行するように構成することができ、それらはゲスト・オペレーティング・システム220および222に利用可能なリソースにアタッチされる。例えば、ゲストOSが、デバイスのレジスタが存在するはずの場所にマップされたメモリ・ロケーションまたはメモリ・マップされたデバイスにタッチすると、マイクロカーネル・ハイパバイザ202が当該要求をインターセプトして、ゲストが書き込もうとした値を関連するエミュレータに渡すことができる。ここで、本例でのリソースを、仮想デバイスが配置された場所と考えることができる。このようにエミュレータを使用することを、エミュレーション・パスと考えることができる。エミュレーション・パスは、仮想化パスと比較して非効率的である。なぜならば、当該エミュレーション・パスでは、デバイスをエミュレートするために、VSPとVSCの間でメッセージを渡すよりも多くのCPUリソースを必要とするからである。例えば、エミュレーション・パスを介して値をディスクに書き込むために利用されるレジスタにマップされる、メモリに対する何百ものアクションを、VSCからVSPへ仮想化パスで渡される1つのメッセージに縮減することができる。
各子パーティションは1つまたは複数の仮想プロセッサ(230および232)を含むことができる。ゲスト・オペレーティング・システム(220および222)は、当該1つまたは複数の仮想プロセッサ(230および232)で実行されるスレッドを管理し、スケジュールすることができる。一般に、仮想プロセッサとは、物理プロセッサの表現に特定のアーキテクチャを与える、実行可能命令および関連する状態情報である。例えば、或る仮想マシンが、インテルx86プロセッサの特徴を有する仮想プロセッサを有してもよく、別の仮想プロセッサがPowerPCプロセッサの特徴を有してもよい。本例での仮想プロセッサを、仮想プロセッサを実現する命令がプロセッサにより支援されるように、コンピュータ・システムのプロセッサにマップすることができる。したがって、複数のプロセッサを含む実施形態では、仮想プロセッサをプロセッサにより同時に実行することができ、一方で、例えば、他のプロセッサがハイパバイザの命令を実行することができる。仮想プロセッサとパーティション内のメモリの組合せを、仮想マシンと考えることができる。
ゲスト・オペレーティング・システム(220および222)は、例えば、Microsoft(登録商標)、Apple(登録商標)、オープン・ソースのコミュニティ、等からのオペレーティング・システムのような、任意のオペレーティング・システムであることができる。ゲスト・オペレーティング・システムは、ユーザ/カーネルの動作モードを含むことができ、スケジューラ、メモリ・マネージャ、等を含みうるカーネルを備えることができる。一般的に、カーネル・モードは、少なくとも特権プロセッサ命令へのアクセスを付与する、プロセッサ内の実行モードを含むことができる。各ゲスト・オペレーティング・システムは、ターミナル・サーバ、eコマース・サーバ、電子メール・サーバ、等のようなものに格納されたアプリケーション、およびゲスト・オペレーティング・システム自体を有しうる、関連するファイル・システムを有することができる。ゲスト・オペレーティング・システムは仮想プロセッサで実行するためのスレッドをスケジュールすることができ、かかるアプリケーションのインスタンスを実現することができる。
次に図3を参照すると、図2で上述したものに対する代替的な仮想化プラットフォームが示されている。図3は図2と同様なコンポーネントを示すが、この例示的な実施形態では、ハイパバイザ302は、マイクロカーネル・コンポーネントと、仮想化サービス・プロバイダ228およびデバイス・ドライバ224のような図2のホスト204におけるコンポーネントと類似したコンポーネントを備えることができ、管理オペレーティング・システム304が、例えば、ハイパバイザ302を構成するために使用される構成ユーティリティを含んでもよい。本アーキテクチャでは、ハイパバイザ302は図2のハイパバイザ・マイクロカーネル202と同一または類似の機能を実施できるが、本アーキテクチャでは、ハイパバイザ304を、子パーティション内で実行されるゲスト・オペレーティング・システムにリソースを提供するように構成することができる。図3のハイパバイザ302は、スタンド・アロンのソフトウェア製品、オペレーティング・システムの一部であることができ、マザーボードのファームウェアに組み込むことができ、または、ハイパバイザ302の一部を特殊集積回路により実現することができる。
次に図4を参照すると、仮想デスクトップ・サーバ400の高レベルなブロック図が示されている。1実施形態では、仮想デスクトップ・サーバ400を、仮想デスクトップ・セッション(VDS)をクライアント、例えば、スマートフォンのようなモバイル装置、図1に示したコンポーネントと類似のコンポーネントを有するコンピュータ・システム、等に展開するように構成することができる。簡潔に述べると、仮想デスクトップ技術により、ユーザは仮想マシン内で実行されているゲスト・オペレーティング・システムとリモートに対話することができる。リモート・デスクトップ・セッションと異なり、仮想デスクトップ・セッションでは、1人のユーザのみがゲスト・オペレーティング・システムにログインし、ユーザはゲスト・オペレーティング・システムを完全に制御することができる。例えば、ユーザは管理者として実行し、ゲストに対して完全な権限を有する。図示した例では、仮想デスクトップ・サーバ400は図2または図3のコンピュータ・システム200または300と類似したコンポーネントを有することができる。仮想化プラットフォーム402は、図2および図3で上述した仮想化インフラ・コンポーネントの論理的な抽象化である。下記のセクションで仮想化プラットフォーム402「内部」として説明する機能を、図2または図3に示した1つまたは複数の要素で実装することができる。例えば、3Dグラフィック・サービス・マネージャ404は、下記の段落でより詳細に説明されるが、これを図2のホスト204で実装することができる。より具体的な例では、3Dグラフィック・サービス・マネージャ404を、親パーティションで実行されているホスト・オペレーティング・システムで実装することができる。
仮想デスクトップ・セッションを開始するには、ゲスト・オペレーティング・システムを仮想マシン内部でインスタンス化する必要がある。例示的な実施形態では、仮想デスクトップ・マネージャ、例えば、プロセッサ実行可能命令のモジュールが要求に応答して(ゲスト・オペレーティング・システム428をブートできる)仮想マシン414を起動することができる。仮想デスクトップ・マネージャは、プロセッサで実行することができ、仮想化プラットフォーム402、例えばマイクロカーネル・ハイパバイザ202に指示してメモリをパーティションに割り当てることができる。仮想化プラットフォーム402は、仮想デバイスを仮想マシン414のメモリ内部で実行し構成することができ、VM414に割り当てたメモリにブート・ローダ・プログラムをロードすることができる。ブート・ローダ・プログラムは(次にプロセッサで実行できる)仮想プロセッサで実行することができ、ゲスト・オペレーティング・システム428を仮想マシン414内部にロードすることができる。セッション・マネージャ408をゲスト・オペレーティング・システム428によりロードすることができ、セッション・マネージャ408は、オペレーティング・システム・コア410のようなカーネル・モード部分を含みうるランタイム・サブシステム426のような環境サブシステムをロードすることができる。1実施形態における環境サブシステムを、サービスのサブセットをアプリケーション・プログラムに公開し、アクセス・ポイントをカーネル420に提供するように構成することができる。ゲスト・オペレーティング・システム428がロードされると、ブート・ローダ・プログラムは終了し、仮想マシン414の制御をゲスト・オペレーティング・システム428に引き渡す。ゲスト・オペレーティング・システム428は、図4に示した様々なモジュールを実行することができ、仮想デスクトップ・セッションをホストするように自分自身を構成することができる。例えば、ゲスト・オペレーティング・システム428は、リモート・プレゼンテーション・エンジン406、セッション・マネージャ408、等にブート時に起動させる、レジストリ値を含むことができる。
ゲスト・オペレーティング・システム428の実行を開始した後の何らかの時点で、ゲスト・オペレーティング・システム428はクライアントから接続要求を受信することができる。受信する接続要求を最初にリモート・プレゼンテーション・エンジン406により処理することができ、リモート・プレゼンテーション・エンジン406を、接続メッセージをリッスンするように構成することができる。接続メッセージが受け取られると、リモート・プレゼンテーション・エンジン406はスタック・インスタンスを生成することができる。リモート・プレゼンテーション・エンジン406は、当該セッションに対するプロトコル・スタック・インスタンスを実行することができ、(下記の段落でより詳細に説明する)仮想化プラットフォーム402により描画される3Dグラフィック・ユーザ・インタフェースをリモート・ディスプレイ・サブシステム418により受信して、上記プロトコル・スタック・インスタンスを介してクライアントに送信することができる。一般に、ユーザ・インタフェースの出力を関連するクライアントに転送し、当該関連するクライアントから受信したユーザ入力をオペレーティング・システム・コア410に転送するように、プロトコル・スタック・インスタンスを構成することができる。簡潔に述べると、オペレーティング・システム・コア410を、スクリーン出力を管理し、キーボード、マウス、および他のデバイスからの入力を収集するように構成することができる。
ユーザの資格情報、例えばユーザ名/パスワードの組合せを、リモート・プレゼンテーション・エンジン406により受け取って、セッション・マネージャ408に渡すことができる。セッション・マネージャ408は当該資格情報をログオン手続に渡すことができる。当該ログオン手続は、当該資格情報を認証サブシステム424に転送して検証することができる。認証サブシステム424は、ユーザの資格情報が妥当であり仮想デスクトップ・セッションを開始できること、即ち、ユーザがゲスト・オペレーティング・システム428にログインできることを判定することができる。
認証サブシステム424はまた、システム・トークンを生成することができる。ユーザがプロセスまたはスレッドを実行するためのセキュリティ証明書を有しているか否かを判定するためのプロセスの実行を当該ユーザが試みるときはいつでも、当該システム・トークンを使用することができる。例えば、プロセスまたはスレッドがアクセスの取得、例えばオブジェクト、例えばファイル、設定、またはアプリケーションのオープン、クローズ、削除、および/または修正を試みるとき、当該スレッドまたはプロセスをセキュリティ・サブシステム422により認証することができる。セキュリティ・サブシステム422は、上記オブジェクトに関連付けられたアクセス・コントロール・リストに対してセキュリティ・トークンをチェックし、システム・トークン内の情報とアクセス・コントロール・リストの比較に基づいてスレッドがパーミッションを有するか否かを判定することができる。スレッドが認証されたとセキュリティ・サブシステム422が判定する場合は、スレッドが上記オブジェクトにアクセスすることを許可することができる。
図4の説明を続けると、1実施形態では、オペレーティング・システム・コア410がグラフィック・ディスプレイ・インタフェース(GDI)416および入力サブシステム412を備えることができる。例示的な実施形態では、入力サブシステム412を、仮想デスクトップ・セッション向けのプロトコル・スタック・インスタンスを介してユーザ入力をクライアントから受け取り、当該入力をオペレーティング・システム・コア410に送信するように構成することができる。幾つかの実施形態では、ユーザ入力が、絶対的および/または相対的なマウス移動コマンド、マウス座標、マウス・クリック、キーボード信号、ジョイスティック移動信号、等を示す信号を含むことができる。ユーザ入力、例えば、アイコンに対するマウスのダブルクリック、をオペレーティング・システム・コア410により受信することができ、当該ダブルクリックに関連付けられた座標にアイコンが配置されていると判定するように入力サブシステム412を構成することができる。次いで、入力サブシステム412を、アイコンに関連付けられたアプリケーションに関するプロセスを実行できるランタイム・サブシステム426に通知を送信するように構成することができる。
図5を参照すると、仮想マシン(414、414B、および/または414C)に対して3Dグラフィックを描画し、3D GPU504、504B、および/または504Cのようなグラフィック演算装置に関して仮想マシンの負荷分散を行うように仮想デスクトップ・サーバ400を構成するために使用できる、追加のコンポーネントが示されている。この図示した実施形態では、仮想デスクトップ・サーバ400は、三次元グラフィカル・ユーザ・インタフェースを示すイメージを、クライアント520、520B、および/または520Cのようなクライアントにストリーミングすることができる。簡潔に述べると、各クライアントに、仮想デスクトップ・セッションを実行するように構成したゲスト・オペレーティング・システムを実行する仮想マシン(414、414B、または414C)を関連付けることができる。クライアント520、520B、および/または520Cは、図1に示したコンポーネントと類似するコンポーネント、モバイル装置、および/またはシン・クライアントを有するコンピュータ・システムを備えることができる。例えば、シン・クライアントが、汎用的なハードウェアおよび、当該ハードウェア、ユーザ入力および出力を管理しインターネットに接続するように構成されたモノリシックなウェブ・ブラウザを有してもよい。本例では、シン・クライアントがユーザ・インタフェース522、例えばディスプレイ、およびマウスのようなユーザ入力装置を備えてもよい。
仮想デスクトップ・サーバ400を、起動時に3Dグラフィックを描画するように構成することができる。例えば、仮想デスクトップ・サーバ400を実行するとき、3Dグラフィック・サービス・マネージャ404のような3Dグラフィック・サービス・マネージャのインスタンスを開始することができる。3Dグラフィック・サービス・マネージャ404は、下記の段落でより詳細に説明するが、プロセッサで実行することができ、受信する仮想デスクトップ・セッション接続を待機することができる。簡潔に述べると、3Dグラフィック・サービス・マネージャ404を、どこに各仮想マシンを割り当てるかを判定し、性能情報に基づいて仮想マシンを移動させることによって、グラフィック演算装置に関して仮想マシンの負荷分散を行うように構成することができる。
仮想マシンに対する3Dサービスを開始する要求を受信する前に、3Dグラフィック・サービス・マネージャ404を、システム内の各グラフィック演算装置に問い合わせてその機能を特定し、その機能を示す情報をテーブルに格納するように構成することができる。後に機能情報を使用して、グラフィック演算装置の使用を調整することができる。例示的な実施形態では、グラフィック演算装置の機能は、サーフェイス・テクスチャの共有をサポートするかまたは最小バージョンの3DグラフィックAPI(application program interface)をサポートする能力のような、1組の機能、即ち、ハードウェア機能を含むことができる。さらに、グラフィック演算装置の機能が、グラフィック演算装置のハードウェア識別子、プロパティのリスト、および3Dグラフィック演算装置が制御するグラフィックRAM(random access memory)、即ち、3Dグラフィック演算装置を収容するアダプタに埋め込んだメモリの量、を含むことができる。例えば、グラフィック・ランダム・アクセス・メモリを使用して、スクリーン・イメージのビットマップ、(3Dグラフィックの深度座標を管理する)Zバッファ、テクスチャ、頂点バッファ、およびコンパイルされたシェーダ・プログラムを格納することができる。例示的な実施形態では、グラフィック・メモリは、ビデオRAM、ダイナミック・ランダム・アクセス・メモリ、または、DDR(double data rate)2、およびグラフィックDDR(GDDR3、GDDR4、および/またはGDDR5)といったDDR技術を基礎とするランダム・アクセス・メモリのような、高速のまたはマルチポートのメモリであることができる。
仮想デスクトップ・セッション接続を受け取ったときに3Dグラフィック・サービス・マネージャ404に通知することができ、3Dグラフィック・サービス・マネージャ404は、(下記の段落でより詳細に説明する)グラフィック描画モジュールのインスタンスを開始し、3Dコンポーネントをゲスト・オペレーティング・システム428にロードするための信号を3D−GPUサービス・プロバイダ512に送信することができる。簡潔に述べると、3Dグラフィック・サービス・マネージャ404は、仮想マシンごとにグラフィック描画モジュールのインスタンスをロードし、グラフィック描画モジュールをどのGPUで実行するかを判定し、グラフィック描画モジュールに判定されたグラフィック演算装置のデバイス識別子を渡すことができる。グラフィック描画モジュールは次いで、3D GPUにバインドし、その関連する仮想マシンの代わりに3D GPUに対して描画することができる。図示した例では、グラフィック描画モジュール506は仮想マシン414に対応する。仮想マシン414に対してグラフィカル・ユーザ・インタフェースを生成するために用いる頂点データ、テクスチャ、等を、仮想マシン414からグラフィック描画モジュール506に入力することができる。これは、仮想化プラットフォーム402によって、グラフィカル・ユーザ・インタフェースを生成するプロセスとして扱われる。大抵の3Dグラフィック演算装置は、数個のプロセスに対して数個のグラフィカル・ユーザ・インタフェースを一度に同時に生成するように設計されているので、多数のグラフィック描画モジュールが実行されているインスタンスでは、GPUが容易に過負荷となりリセットされうることは、当業者には理解されよう。
初期化手続を続けると、3D−GPUサービス・プロバイダ512は、3Dグラフィック・サービス・クライアント514をゲスト・オペレーティング・システム428内で生成させることができる。例えば、仮想マシン414内の仮想マザーボードのメモリ・アドレスにより、IOデバイスにマップされる特定のアドレスにインターセプトを設定することができる。ゲスト・オペレーティング・システム428が開始すると、プラグインプレイ・モジュールを実行し、当該プラグインプレイ・モジュールがIOにマップされたメモリ・アドレスを問い合わせることができる。ハイパバイザ、例えば図2のハイパバイザ202は、当該読出しをインターセプトして、プラグインプレイ・モジュールに3Dグラフィック・サービス・クライアント514をロードさせるデバイス識別子で応答することができる。3Dグラフィック・サービス・クライアント514は、1つまたは複数のメモリ・ページを共有としてマップすることで3D−GPUサービス・プロバイダ512に対する通信チャネルを構成し、当該マップを3D−GPUサービス・プロバイダ512に渡すことができる。当該メモリ・ページ内部に、メッセージ・パッシング通信チャネル516を確立することができる。原則として、メッセージ・パッシング通信チャネル516は、3D GPUサービス・プロバイダ/クライアントがメッセージを読書きできる共有メモリ領域である。
3Dグラフィック・サービス・クライアント514はまた、仮想デバイス・ドライバ518を生成させることができる。仮想デバイス・ドライバ518はまた、仮想マシン414と仮想化プラットフォーム402の間で共有されるグラフィック・アパーチャ526を確立することができる。例示的な実施形態では、仮想デバイス・ドライバ518は、1群のゲスト・メモリ・ページを割り当て、接続要求とメモリ・ページのアドレスを含む信号を3Dグラフィック・サービス・クライアント514に送信することができる。グラフィック描画モジュール506は、当該接続要求と当該メモリ・ページのアドレスを受信することができる。グラフィック描画モジュール506は、ハイパバイザに当該1群のメモリ・ページ内にグラフィック・アパーチャ526を生成するように指示する信号をハイパバイザに送信することができる。ハイパバイザは当該ページをシステムの物理アドレスにマップし、当該メモリの範囲内部にあるグラフィック・アパーチャ526を実行することができる。本例では、仮想デバイス・ドライバ518を、DMAバッファをゲスト・メモリ・アドレスの範囲に書き込むように構成することができる。データがゲスト・メモリ・アドレスの範囲に書き込まれると、グラフィック・アパーチャ526がDMAバッファをグラフィック描画モジュール506に転送する。
例示的な実施形態では、仮想デバイス・ドライバ518は、ゲスト・オペレーティング・システム428には3D可能なグラフィック演算装置のデバイス・ドライバとして表すことで、例えばAPI(application program interface)524のインスタンスをロードすることによって、ゲスト・オペレーティング・システム428が3Dグラフィックをサポートするように自分自身を構成することができる。仮想デバイス・ドライバ518を、API524とインタフェースするように構成することができる。API524により、3Dアプリケーション528は3Dグラフィックを生成することができる。3Dアプリケーション528、例えば、オペレーティング・システムのグラフィカル・ユーザ・インタフェース、アプリケーション/ビデオゲームに対するユーザ・インタフェース、等はAPI524に命令を発行することができる。API524はMicrosoft(登録商標)のDirectXのようなAPIであることができる。簡潔に述べると、3DグラフィックAPI524は、グラフィック・アプリケーション、例えば、ビデオゲームと、ドライバ(この場合、仮想デバイス・ドライバ518)との間の抽象化層を提供する。一方では、API524は仮想デバイス・ドライバ518が公開するグラフィック演算装置のインタフェースに低レベルのインタフェースを提供し、他方では、アプリケーションによって呼び出せる3Dグラフィック・コマンドのライブラリを提供する。API524は、3Dグラフィック・コマンドのライブラリを、仮想デバイス・ドライバ518が公開するインタフェースにマップすることができ、したがって、ゲーム開発者が全てのグラフィック・ドライバの詳細を理解しなくてもよいようにすることができる。
動作に際して、API524はプリミティブ、例えば頂点と定数で表現された他の形状に対するビルディング・ブロックとしてコンピュータ・グラフィックにおいて用いられる基本的な幾何学形状を生成することができ、当該頂点を複数のDMA(direct memory access)バッファに格納することができる。API524がバッファに書き込むと、仮想デバイス・ドライバ518はDMAバッファに格納されたデータを再フォーマットし、それらを1つまたは複数のGPUトークンにパッケージ化し、グラフィック・アパーチャ526を介して当該GPUトークンをグラフィック描画モジュール506に送信することができる。同様に、API524がコマンドを発行すると、API524をDMAバッファに挿入し、API524をトークンでグラフィック描画モジュール506に転送することができる。
グラフィック描画モジュール506は当該トークンを受け取り、DMAバッファを抽出し、当該トークンを、仮想化プラットフォーム402に関連付けられたメモリのページに格納することができる。例示的な実施形態では、グラフィック描画モジュール506が、DMAバッファ内のコマンドとプリミティブを、3Dグラフィック・ドライバ510が処理できるAPIコンストラクトに変換し、当該コマンドを、仮想化プラットフォーム402内のDMAバッファのアドレスとともに、グラフィック・カーネル508に発行することができる。
グラフィック・カーネル508は、仮想デスクトップ・サーバ400内部のグラフィック演算装置での実行をスケジュールするように構成できるが、コマンドとDMAバッファのアドレスを受け取って、当該コマンドをいつ3Dグラフィック・ドライバ510に発行するかを決定することができる。様々なDMAバッファからのプリミティブを描画するとき、グラフィック・カーネル508は描画コマンドを3Dグラフィック・ドライバ510に送信することができる。3Dグラフィック・ドライバ510は、プロセッサで実行することができ、当該コマンドを実行してDMAバッファ内のデータを処理するようにグラフィック演算装置504に指示することができる。
グラフィック演算装置504を実行し、グラフィック演算装置504が、メモリ内のイメージ・フレームを示すビットマップ、例えば画素値の配列を生成することができる。グラフィック描画モジュール506は、当該ビットマップを捕捉し、当該ビットマップを圧縮モジュールに渡し、次いでグラフィック・アパーチャ526を介してリモート・プレゼンテーション・エンジン406に渡すことができる。リモート・プレゼンテーション・エンジン406は当該ビットマップを、1つまたは複数の情報パケットを介してクライアント520に送信することができる。
幾つかの事例では、1つまたは複数のグラフィック描画モジュールにより送信されるデータ・ストリームにより、グラフィック演算装置をリセットさせることができる。例えば、グラフィック演算装置が過負荷となっている、即ちGPUがあまりに多くのイメージを描画しなければならない場合では、グラフィック演算装置がタイムアウトする可能性があり、GPUはリセットされることになる。これにより、3Dグラフィック・ドライバ510がリセットされ、次いでグラフィック・カーネル508がこのGPUへの接続をリセットすることとなり、当該GPUにバインドされた任意のグラフィック描画モジュールが終了することになる。
例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、仮想デスクトップ・サーバ400内部のグラフィック演算装置に対する負荷を調整してリセットが発生する可能性を減らすように構成することができる。例えば、図6を参照すると、5つの仮想マシン(414乃至414F。ここで本例では、仮想マシン414を仮想マシン414Aと考えることができる。)を含む仮想デスクトップ・サーバ400の別の高レベルなブロック図が示されている。各仮想マシンは、仮想化プラットフォーム402で実行されている関連する描画プロセス(506乃至506F)を有することができる。図に示すように、各グラフィック描画モジュール(506乃至506F)を、グラフィック演算装置にバインド、例えばアタッチすることができる。例えば、仮想マシン414、414D、および414Eが3D GPU504にバインドされ、仮想マシン414Bが3D GPU504Bにバインドされ、仮想マシン414Cおよび414Fが3D GPU504Cにバインドされる。3Dグラフィック・サービス・マネージャ404が各仮想マシンを実行中に移動することができ、示した例における点線は、仮想マシン414を3D GPU504から3D GPU504Bに移動する具体的な例を示している。
3Dグラフィック・サービス・マネージャ404を、ラウンドロビン・アルゴリズムおよび/または動的配置アルゴリズムを用いてGPUを調整するように構成することができる。例えば、ラウンドロビン・アルゴリズムを用いて、グラフィック演算装置と、仮想マシンからグラフィックを描画するために当該グラフィック演算装置を割り当てるか否かを判定するための情報とを見つけることができる。グラフィック演算装置が過負荷であると当該情報が示す場合は、ラウンドロビン・アルゴリズムは次のGPUを発見し、同一の動作を実行することができる。追加または代替として、3Dグラフィック・サービス・マネージャ404を、当該情報を使用してグラフィック演算装置を選択し、各グラフィックを逐次的に検査することなく仮想マシンから当該グラフィックを描画するように構成することができる。
例示的な実施形態では、仮想マシンをGPU、例えば3D GPU504に割り当てるために用いる情報が、3Dグラフィック演算装置に利用可能なグラフィック・メモリの推定量を含むことができる。利用可能なグラフィック・メモリの推定量を使用して、GPUがタイムアウトして接続がリセットされるか否かを予測することができる。本例では、3Dグラフィック・サービス・マネージャ404を、利用可能なグラフィック・メモリの推定量を使用して閾値を設定するように構成することができる。3Dグラフィック・サービス・マネージャ404が仮想マシンの割当て要求を受信すると、3Dグラフィック・サービス・マネージャ404は、仮想マシンが使用を試みるグラフィック・メモリの量、または、少なくとも、仮想マシンに対して画像を適切に描画し、推定した量を閾値、例えばグラフィック演算装置に利用可能なグラフィック・メモリの推定量と比較し、仮想マシンが利用するグラフィック・メモリの推定量が閾値未満である場合にグラフィック描画プロセスをGPUに割り当てるために使用するために必要な量を推定することができる。
具体的な例では、3Dグラフィック演算装置504が4ギガバイトのキャッシュを制御し、3Dグラフィック・サービス・マネージャ404が、仮想マシン414Eが1ギガバイトのメモリを使用すると推定し、GPUにより制御される利用可能なグラフィック・メモリの推定量に対して閾値が設定され、仮想マシン414が利用するグラフィック・メモリの推定量が1ギガバイトであり、仮想マシン414Dが利用するグラフィック・メモリの推定量が512メガバイトであると仮定する。本例では、3Dグラフィック・サービス・マネージャ404は、仮想マシン414Eに対して利用される推定量(1ギガバイト)を推定された利用可能な量(およそ2.5ギガバイト)と比較して、GPUが仮想マシンに対処できると判定することができる。3Dグラフィック・サービス・マネージャ404は仮想マシンをGPUに割り当て、仮想マシン414Eに対して利用される推定量を差し引いて、GPUに対する推定された利用可能な量(およそ1.5ギガバイト)を取得して、当該値をテーブルに格納することができる。
例示的な実施形態では、閾値を、GPUが制御する利用可能なグラフィック・メモリの推定量に設定することができる。別の例示的な実施形態では、当該閾値を、グラフィック演算装置を長時間監視し、グラフィック演算装置がリセットしたときにどれくらい多くの利用可能なグラフィック・メモリが利用可能であると推定されるかを判定することによって設定することができる。例えば、グラフィック演算装置がリセットされる確率を、性能データから計算し、利用可能なグラフィック・メモリの推定量と関連付けることができる。例示的な実施形態では、利用可能なグラフィック・メモリの推定量を閾値として設定することができる。他の例示的な実施形態では、この利用可能なグラフィック・メモリの推定量にスカラ値を乗じて、拡大した利用可能なグラフィック・メモリの推定量を閾値として使用することができる。例えば、利用可能なグラフィック・メモリの推定量の80%を閾値として設定することができる。
例示的な実施形態では、3Dグラフィック・サービス・マネージャ404は、仮想マシンが使用できるグラフィック・メモリの量を情報に基づいて推定することができる。当該情報には、画素の次元、色深度、仮想マシンに対するディスプレイの数、スループット、圧縮率、仮想マシンに対して描画されるサーフェスの推定量、頂点を生成するために必要なプリミティブを格納するために必要なメモリの量、頂点に適用されるテクスチャを格納するために必要なメモリ、選択されたアンチエイリアシング効果をオブジェクトに適用するために必要なメモリ、等が含まれるがこれらに限らない。3Dグラフィック・サービス・マネージャ404を、仮想マシンが開始しているとの指示を受け取ったことに応答して当該仮想マシンが使用することとなるグラフィック・メモリの量を推定するように構成することができる。本例では、利用されるグラフィック・メモリの量を推定するために使用される情報の一部または全部を仮想マシンに関連付けられた構成ファイルに格納することができる。別の実施形態では、仮想マシンが実行時に使用するグラフィック・メモリの推定量を、3Dグラフィック・サービス・マネージャ404によって監視し、使用することができ、後の仮想デスクトップ・セッション中に使用するために構成ファイルに格納することができる。
以上に加えて、例示的な実施形態では、他の情報を使用して仮想マシンを適切なGPUに割り当てることができる。例えば、既にGPUに割り当てた仮想マシンの数を使用して、GPUが過負荷であるか否かを予測することができる。GPUに割り当てた仮想マシンの数を長時間監視することができ、バインドした仮想マシンの数を、グラフィック演算装置がリセットされるときに記録することができる。図6を参照すると、3Dグラフィック・サービス・マネージャ404が値をテーブルに含めることができる。当該値は、3D GPU504に3つの仮想マシンがアタッチされ、3D GPU504Bに1つの仮想マシンがアタッチされ、3D GPU504Cに2つの仮想マシンがアタッチされていることを反映する。3Dグラフィック演算装置のうち1つがリセットされた場合は、3Dグラフィック・サービス・マネージャ404は、3Dグラフィック演算装置がクラッシュしたときにどれだけ多くの仮想マシンがアタッチされていたかを当該テーブルから決定することができる。様々な種類のグラフィック演算装置がリセットされる確率を、長時間にわたって捕捉した性能データから計算し、アタッチされた仮想マシンの推定量に関連付けることができる。例示的な実施形態では、3Dグラフィック・サービス・マネージャ404がグラフィック・メモリの推定量を使用してGPUを選択し、利用可能なグラフィック・メモリの推定量が、アタッチされた仮想マシンの数より高い重みを有することができる。
同一または別の例示的な実施形態では、仮想マシンをGPUに割り当てるか否かを判定するために3Dグラフィック・サービス・マネージャ404が使用する情報が、グラフィック演算装置がコマンドに応答するために要する平均時間長、即ち待ち時間、を記述する情報を含むことができ、グラフィック演算装置にストレスがかかっているかどうかを判定するために使用することができる。1実施形態では、3Dグラフィック・サービス・マネージャ404が平均的な待ち時間をテーブルに格納でき、クラッシュの際に、3Dグラフィック・サービス・マネージャ404はコマンドの平均待ち時間を閾値と比較することができる。平均待ち時間が閾値未満である場合は、3Dグラフィック・サービス・マネージャ404を、仮想マシンをGPUに割り当てるように構成することができる。
当該閾値を管理者等により設定することができ、当該閾値は、使用されるグラフィック演算装置に依存することができる。例示的な実施形態では、様々な種類のGPUに、仮想マシンを、その数を増加させつつロードする実験を行うことができる。より多くの仮想マシンを追加する際、待ち時間を記録して、長時間にわたるリセット数を待ち時間が短いときの同一期間にわたるリセット数と比較することによって、リセットの確率を計算することができる。高確率のリセットに関する監視された待ち時間を使用して閾値を設定することができる。例示的な実施形態では、監視された待ち時間を閾値として設定することができる。他の例示的な実施形態では、監視された待ち時間にスカラ値を乗ずることができ、拡大した待ち時間を使用することができる。例えば、監視された待ち時間の80%を閾値として使用することができる。
例示的な実施形態では、待ち時間を、グラフィック・カーネル508が確認応答(「ACK」)を受信するまでコマンドをGPUに発行する時間から測定することができる。各ACKを受信した後、グラフィック・カーネル508は、当該要求に関連付けられた待ち時間を3Dグラフィック・サービス・マネージャ404に送信することができる。3Dグラフィック・サービス・マネージャ404は、GPUに対する平均待ち時間を反映する値を、テーブルにおいて更新することができる。
別の例示的な実施形態では、待ち時間を、仮想デバイス・ドライバ518がダイレクト・メモリ・アクセスのトランザクションを開始したときから測定することができる。例えば、API524がプリミティブをDMAバッファに書き込んでもよく、当該プリミティブを仮想デバイス・ドライバ518により捕捉し、グラフィック描画モジュール506に送信することができる。API524は最終的にコマンドを発行することができる。仮想デバイス・ドライバ518が当該コマンドを受信すると、仮想デバイス・ドライバ518はタイマを開始することができる。仮想デバイス・ドライバ518は当該コマンドをグラフィック描画モジュール506に送信することができ、グラフィック描画モジュール506が次いでコマンドをグラフィック・カーネル508に送信することができる。グラフィック・カーネル508は当該コマンドを3Dグラフィック・ドライバ510に送信することができ、3Dグラフィック・ドライバ510が、3Dグラフィック演算装置504にDMAバッファ内のプリミティブを処理させることができる。3D GPU504はACKを生成することができ、当該ACKを仮想デバイス・ドライバ518に戻し、仮想デバイス・ドライバ518がタイマを停止することができる。仮想デバイス・ドライバ518は次いで待ち時間を、メッセージ・パッシング通信チャネル516を介して3Dグラフィック・サービス・マネージャ404に送信することができる。3Dグラフィック・サービス・マネージャ404は、仮想マシンに対する平均待ち時間を反映する値を、テーブルにおいて更新することができる。
例えば、仮想デバイス・ドライバ518は、トランザクションの待ち時間を含むメッセージを3Dグラフィック・サービス・クライアント514に送信することができる。3D GPUサービス・プロバイダ512は、当該メッセージを受信し、当該メッセージを3Dグラフィック・サービス・マネージャ404に送信することができ、3Dグラフィック・サービス・マネージャ404がテーブルを更新することができる。本例では、トランザクションの待ち時間を使用して、仮想マシン414が発行するDMAトランザクションの平均待ち時間を決定することができる。当該平均待ち時間は、3D GPU504のリソースがオーバコミットされているか否かを反映する。
仮想マシンを生成した際に当該仮想マシンの負荷分散を行うことに加えて、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、現在の状態に応答して、仮想マシンを或る3D GPUから別の3D GPUに(その関連するグラフィック描画モジュールを再バインドすることで)移動するように構成することができる。例えば、図6は、3D GPU504から3D GPU504Bへ移動されているグラフィック描画モジュール506を示す。この例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、コンテキスト・スイッチを行って仮想化プラットフォーム402を実行するとき、仮想マシンの開始要求を検出したとき、および/または所定の時間が経過し割込みが発生したとき、に実行することができる。
この例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、何れかのGPUが過負荷となっているかどうか、例えばリセットの危険性があるかどうかを判定し、(移動動作により、GPUを過負荷にするリスクが減り、他のGPUをリセットさせるリスクを受け入れ難いほどは増大させない場合には)仮想マシンを移動するように構成することができる。例えば、3Dグラフィック・サービス・マネージャ404を、各3D GPUにバインドされた仮想マシンの数、3D GPUごとに利用可能なグラフィック・メモリの量、各3D GPUにバインドされた各仮想マシンにより開始されたDMAトランザクションの平均待ち時間、各グラフィック描画モジュールが3D GPUを使用する割合、各グラフィック描画モジュールに関連付けられたスループット、および/またはグラフィック・カーネル・コマンドの平均待ち時間、を決定するように構成することができる。3D GPUが過負荷であるとこの情報が示す場合には、3Dグラフィック・サービス・マネージャ404を、どの仮想マシンに最もストレスがかかっているかを示すように構成することができる。次いで3Dグラフィック・サービス・マネージャ404は、ストレスのかかった仮想マシンを別のグラフィック演算装置に割り当てることができる。この動作手続の割当て部分は、上述の割当てプロセスと同様である。
例示的な実施形態では、3Dグラフィック・サービス・マネージャ404は、移動コマンドを新たなGPUのデバイス識別子とともにグラフィック描画モジュール、例えばグラフィック描画モジュール506に送信することによって、移動動作を開始することができる。本例では、グラフィック描画モジュール506が当該コマンドを受け取って、新たな識別子に関連付けられたGPU、例えば3D GPU504Bを見つけることができる。本例では、グラフィック描画モジュールを、任意の内部バッファをコピーし、3D GPU504Bにバインドし、3D GPU504へのマッピングを取り外すように構成することができる。バインド動作を完了した後、グラフィック描画モジュールは、移動が発生したことを3Dグラフィック・サービス・マネージャ404に通知することができ、グラフィック・サービス・マネージャ404はそのテーブルを更新して、グラフィック描画モジュール506が3D GPU504Bにアタッチされていることを反映することができる。
図7を参照すると、例示的な実施形態では、移動動作を使用して、仮想マシンを別の仮想デスクトップ・サーバ(400B〜400D)に移動することができる。当該図に示すように、各仮想デスクトップ・サーバ(400〜400D)は、1組の1つまたは複数のグラフィック演算装置(704〜704D)と3Dグラフィック・サービス・マネージャ(404〜404D)のインスタンスを備えることができる。また、データセンタ700を制御するように構成できる管理システム702が示されている。管理システム702は、場合によっては、データセンタ700内の全ての他の3Dグラフィック・サービス・マネージャ(404〜404D)を制御できる、(任意であると考えられることを示すために点線で示した)マスタ3Dグラフィック・サービス・マネージャ706を備えることができる。
各仮想マシンを特定する一意な情報を使用して移動動作を実現することができる。例えば、各仮想マシンを開始したとき、VMが開始したサーバで実行されている3Dグラフィック・サービス・マネージャ、例えば3Dグラフィック・サービス・マネージャ404が、データセンタ700内部の仮想マシンに対して一意な識別子を生成することができる。当該一意な識別子は、仮想マシンが描画を行っているグラフィック演算装置の種類、当該仮想マシンが使用するグラフィック・メモリの推定量、等を含むことができる。例示的な実施形態では、仮想マシン414にストレスがかかり適切なGPUがサーバで利用できない場合には、3Dグラフィック・サービス・マネージャ404は当該一意な識別子をデータセンタ内部の各仮想デスクトップ・サーバに送信し、または場合によっては、管理システム702に送信することができる。
当該一意な識別子が各仮想デスクトップ・サーバに送信される例では、グラフィック・サービス・マネージャ(404〜404D)は、仮想マシンをグラフィック演算装置に割り当てることができるか否かを、前述の段落で説明した情報に基づいて判定することができる。グラフィック・サービス・マネージャ、例えばグラフィック・サービス・マネージャ404Cが、仮想マシン414を処理できると判定する場合には、仮想デスクトップ・サーバ400を、仮想マシン414を仮想デスクトップ・サーバ400Cに移動するように構成することができる。
上記一意な識別子がマスタ3Dグラフィック・サービス・マネージャ706に送信される例では、マスタ3Dグラフィック・サービス・マネージャ706を、データセンタ700内部の各3Dグラフィック・サービス・マネージャ(404〜404D)から全ての性能情報を含むように構成することができ、マスタ3Dグラフィック・サービス・マネージャ706が、仮想マシンをデータセンタ700内部の何れかのグラフィック演算装置に割り当てることができるか否かを前述の段落で説明した情報に基づいて判定することができる。
以下は、動作手続を示す一連の流れ図である。理解を容易にするため、当該流れ図は、最初の流れ図が、全体の「大局的な」観点からの実装を表し、それに続く流れ図が点線で示したさらなる追加および/または詳細を提供するように構成されている。さらに、点線で示した動作手続は任意と考えられることは当業者には理解されよう。
図8を参照すると、動作800、802、804、および806を含む、仮想マシン間のグラフィック・プロセッサの使用を調整するための動作手続が示されている。動作800は、動作手続の開始を示し、動作802は、3Dグラフィックを第1の3Dグラフィック演算装置で描画するための1群の仮想マシンを割り当てることを示す。例えば、図6を参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404がグラフィック演算装置で描画するための1群の仮想マシン、例えば3Dグラフィックを3Dグラフィック演算装置504で描画するための仮想マシン414、仮想マシン414D、および仮想マシン414Eを割り当てることができる。この具体的な例では、各仮想マシン(414〜414F)に、例えば図2のホスト204内部の、アプリケーション・プログラム・インタフェースの呼出しを介して3Dグラフィック演算装置504にバインドできる、仮想プラットフォーム402で実行されるグラフィック描画モジュール(506、506D、および506E)を関連付けることができる。本例では、グラフィック描画モジュール(506、506D、および506E)を、コマンドを示すプリミティブおよびAPIコンストラクトを含むDMAバッファを収集し、場合によっては当該コマンドを3Dグラフィック・ドライバ510が処理できるコマンドに変換し、当該コマンドを、DMAバッファを含むメモリのページとともにグラフィック・カーネル508に発行するように構成することができる。
図8の説明を続けると、動作804は、当該第1の3Dグラフィック演算装置がコマンドの応答に要した時間に少なくとも基づいて、第1の3Dグラフィック演算装置がオーバコミットされていると判定することを示す。例えば、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404をプロセッサ上で実行し、3Dグラフィック演算装置504がオーバコミットされている、例えば3Dグラフィック演算装置504が全てのその要求を処理するために十分なリソースを有さず、そのためにリセットすることができ、グラフィック描画モジュール(506、506D、および506E)が終了しうると、判定することができる。この具体的な例では、当該判定を、グラフィック演算装置、例えば3D GPU504がグラフィック・カーネル508にACKで応答するために要した平均時間に少なくとも基づいて行うことができる。本例では、3Dグラフィック・サービス・マネージャ404が制御するテーブルを、ハードウェアがグラフィック・カーネルのコマンドに応答するために要した待ち時間で更新することができ、3D GPU504に対して平均を計算することができる。当該平均を閾値の待ち時間の値と比較することができ、当該平均が当該閾値より大きい場合は、3Dグラフィック・サービス・マネージャ404を、3D GPU504がオーバコミットされていると判定するように構成することができる。
図8の説明を続けると、動作806は、第1の3Dグラフィック演算装置がオーバコミットされているとの判定に少なくとも応答して、上記1群の仮想マシンから第1の仮想マシンを第2のグラフィック演算装置に移動することを示す。例えば、図6を再度参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、第1の仮想マシン、例えば仮想マシン414を第2のグラフィック演算装置、例えば3D GPU504Bに移動するように構成することができる。1例では、仮想マシン414を3D GPU504Bに移動するには、グラフィック描画モジュール506を3D GPU504から3D GPU504Bに移動する必要がある。例えば、3Dグラフィック・サービス・マネージャ404は移動コマンドを3D GPU504Bのデバイス識別子とともにグラフィック描画モジュール506に送信することができる。グラフィック描画モジュール506は当該コマンドを受信し、内部バッファをコピーし、3D GPU504Bにバインドすることができる。バインド動作が完了した後、グラフィック描画モジュール506は3D GPU504へのマッピングを取り外し、完了信号を3Dグラフィック・サービス・マネージャ404に送信することができる。3Dグラフィック・サービス・マネージャ404はテーブルを更新して、仮想マシン414が3D GPU504Bにバインドされていることを反映することができる。先に進むと、グラフィック描画モジュール506は描画コマンドを3D GPU504Bへ発行することができ、平均コマンド待ち時間を3Dグラフィック・サービス・マネージャ404により監視することができる。
次に図9を参照すると、追加の動作/改良908〜916を含む図8の動作手続が示されている。動作908は、第2のグラフィック演算装置が制御する利用可能なグラフィック・メモリの推定量が閾値より大きいと判定したことに応答して、第1の仮想マシンを第2のグラフィック演算装置に移動することを示す。例えば、図6を参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、移動すべき3D GPU504にバインドされる仮想マシン、例えば仮想マシン414を選択するように構成することができる。本例では、仮想マシン414を3D GPU504Bに移動するとの判定を、3D GPU504Bに利用可能なグラフィック・メモリの推定量が閾値より大きいとの判定に少なくとも基づいて行うことができる。当該判定が、仮想マシン414に対してグラフィックを描画するために利用されるグラフィック・メモリの推定量に基づくこともできる。この場合、3Dグラフィック・サービス・マネージャ404を、3D GPU504が過負荷であるという判定と3D GPU504Bが仮想マシン414を収容できるとの判定に応答して、仮想マシン414を移動するように構成することができる。
図9の説明を続けると、動作910は、第1の仮想マシンが開始したダイレクト・メモリ・アクセスのトランザクションの平均待ち時間に基づいて、第1の3Dグラフィック演算装置がオーバコミットされていることを判定することが示されている。本例では、3Dグラフィック・サービス・マネージャ404が仮想マシン414を移動させることができる。なぜならば、仮想マシン414に関連付けられたDMAトランザクションの平均待ち時間が、例えば、3D GPU504にバインドされた全ての他のグラフィック描画モジュール(506Dおよび506E)よりも大きいからである。本例では、3Dグラフィック・サービス・マネージャ404を、先ずグラフィック・カーネル508が発行するコマンドの平均待ち時間を決定し、次いで、DMAトランザクションの当該平均待ち時間を使用して、仮想マシン414が当該GPUに関連付けられた最も高負荷の仮想マシンであると判定するように、構成することができる。
動作912に移ると、第2のグラフィック演算装置に割り当てた第2の仮想マシンに対するダイレクト・メモリ・アクセスのトランザクションの平均待ち時間が閾値未満であると判定したことに応答して、第1の仮想マシンを移動することが示されている。例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、3D GPU504Bにバインドされた1つまたは複数の仮想マシンに対するDMAトランザクションの平均応答時間が閾値未満であると判定したことに応答して、仮想マシン414を3D GPU504Bに移動すると判定するように構成することができる。例えば、3Dグラフィック・サービス・マネージャ404が、仮想マシン414Bに対するDMAトランザクションの平均応答時間を含むテーブルをチェックすることができる。3Dグラフィック・サービス・マネージャ404は、当該平均待ち時間を閾値と比較して、当該平均待ち時間が閾値未満であると判定することができる。これは、仮想マシン414B内部の負荷が低いことを示し、3D GPU504Bの負荷が低いことを推論的に示す。この場合、3Dグラフィック・サービス・マネージャ404を、本判定に少なくとも基づいてグラフィック描画モジュール506を移動するように構成することができる。
動作914を参照すると、第2のグラフィック演算装置に割り当てられた仮想マシンの数が閾値未満であると判定したことに応答して、第1の仮想マシンを移動することが示されている。例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、3D GPU504Bにバインドされた仮想マシンの数が閾値数未満であると判定したことに応答して、仮想マシン414を3D GPU504Bに移動すると判定するように構成することができる。本例では、3Dグラフィック・サービス・マネージャ404を、3D GPU504Bに現在バインドされている仮想マシンの数(図示した例では1)を示す値をそのテーブルから読み出し、現在バインドされている仮想マシンの数が閾値数、即ち性能データおよび/または管理者の好みに基づく値より少ないように構成することができる。この場合、3Dグラフィック・サービス・マネージャ404を、少なくとも当該判定に基づいてグラフィック描画モジュール506を移動するように構成することができる。
動作916を参照すると、第1のグラフィック演算装置と第2のグラフィック演算装置の機能を決定することが示されている。例えば、1実施形態では、3Dグラフィック・サービス・マネージャ404を、コンピュータ・システム内の各3Dグラフィック演算装置の機能を決定するように構成することができる。例えば、以前の例を続けると、3Dグラフィック・サービス・マネージャ404を、3Dグラフィック演算装置504、504B、および504Cの機能を決定するように構成することができる。本例では、当該機能を使用して、グラフィック演算装置が仮想マシンに対する3Dグラフィックを処理できるかどうかを判定することができる。例えば、3Dグラフィック・サービス・マネージャ404を、グラフィック・カードが共有のサーフェスとテクスチャをサポートするかどうか、グラフィック・カードが例えば或るバージョンのDirectX(登録商標)を少なくともサポートするかどうか、グラフィック演算装置に関連付けられたグラフィック・メモリの量、等をチェックするように構成することができる。本例では、当該情報を使用して、仮想マシン間のグラフィック演算装置の使用を調整するために使用できるテーブルを埋めることができる。
次に図10を参照すると、動作1000、1002、1004、1006、および1008を含む、仮想マシン間のグラフィック演算装置の使用を調整するための動作手続が示されている。動作1000を参照すると、動作1000で当該動作手続が開始し、動作1002は、第1のグラフィック演算装置と第2のグラフィック演算装置の機能を受信することを示す。例えば、図5を参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を実行し、3Dグラフィック・サービス・マネージャ404が第1の仮想マシン、例えば仮想マシン414を3Dグラフィック演算装置、例えば3D GPU504に割り当てる要求を受信することができる。本例では、当該要求は、クライアント520のようなクライアントが仮想デスクトップ・セッションを要求したことを示す信号であることができる。
図10の説明を続けると、動作1004は、第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を推定することを示す。例えば、1実施形態では、3Dグラフィック・サービス・マネージャ404が、仮想マシン414が3Dグラフィックを描画するために利用できるグラフィック・メモリの量、例えば、仮想マシンに対するグラフィックの適切な描画を少なくとも可能とするグラフィック・メモリの量を推定することができる。例えば、当該推定を、仮想マシン414に関連付けられた構成ファイルから取得した情報に基づいて行うことができる。当該情報は、例えば、最後に実行されていたときに仮想マシン414が使用したグラフィック・メモリの平均量を示す。別の例示的な実施形態では、仮想マシンに対してグラフィックを描画するために必要なグラフィック・メモリの推定量を、画像を表示するために必要なメモリの最小量を記述する情報から推定することができる。別の例示的な実施形態では、グラフィック・メモリの当該推定量が、プリミティブをキャッシュするために必要なメモリの推定量、等に基づくことができる。
動作1006は、第1の3Dグラフィック演算装置でグラフィックを描画するように割り当てられた1群の仮想マシンが発行したダイレクト・メモリ・アクセスのトランザクションに関連付けられた待ち時間の値が第1の閾値未満であり、3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量が第2の閾値未満であると判定したことに応答して、第1の3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択することを示す。例えば、3Dグラフィック・サービス・マネージャ404が、3D GPU504にバインドされた仮想マシンごとのDMAトランザクションの待ち時間の値を示す情報を格納することができる。例えば、仮想マシン414Dと414Eを、3Dグラフィック・サービス・マネージャ404が仮想マシン414を3D GPUに割り当てる要求を受け取ったときに3D GPU504にバインドしてもよい。本例では、3Dグラフィック・サービス・マネージャ404が当該テーブルから待ち時間の値を取得し、当該待ち時間の値を閾値と比較することができる。本例では、3Dグラフィック・サービス・マネージャ404はまた、仮想マシン414に対して3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量を閾値と比較することができる。仮想マシン414Dおよび414Eの平均待ち時間が閾値未満であり仮想マシン414に対して3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量が第2の閾値未満である場合には、3Dグラフィック・サービス・マネージャ404は3D GPU504を選択することができる。
例示的な実施形態では、第2の閾値、即ち、3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量に関連付けられた閾値は、3D GPU504が制御するグラフィック・メモリの総量、ならびに、仮想マシン414Dおよび414Eに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量に基づくことができる。例えば、仮想マシン414Dおよび414Eが開始したとき、3Dグラフィック・サービス・マネージャ404が、仮想マシン414Dおよび414Eに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量を計算し、その値をテーブルに格納しておくことができる。3Dグラフィック・サービス・マネージャ404が仮想マシン414Dおよび414Eの各々に対して3D GPU504を選択したとき、3Dグラフィック・サービス・マネージャ404は、それに関連する、3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量を、GPU504が制御する利用可能なグラフィック・メモリの推定量から差し引き、その値をテーブルに格納しておくことができる。次にこの値を第2の闘値として使用することができ、または、当該第2の閾値が当該値に少なくとも部分的に基づくことができる。
動作1008は、第1の3Dグラフィック演算装置で3Dグラフィックを描画するための第1の仮想マシンを割り当てることを示す。例えば、図6を再度参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、グラフィック描画モジュール506をインスタンス化し、3Dグラフィック演算装置504にバインドするコマンドをグラフィック描画モジュール506に送信するように構成することができる。グラフィック描画モジュール506は、当該コマンドを受信して、3Dグラフィック演算装置504にバインドすることができる。グラフィック描画モジュール504が3Dグラフィック演算装置504にバインドし、通信チャネルが仮想マシン414とグラフィック描画モジュール506の間で確立された後、グラフィック描画モジュール506は頂点のDMAバッファを受け取って、それらを3Dグラフィック演算装置504で描画することができる。
図11を参照すると、追加の動作1110〜1118を含む図11の動作手続が示されている。動作1110は、第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、当該1群内の仮想マシンごとに画素の次元を特定する情報から推定することを示す。例えば、1実施形態では、仮想マシンごとに3Dグラフィックを描画するために利用されるグラフィック・メモリの量が、当該仮想マシンに関連付けられた画素の次元に基づくことができる。例えば、仮想マシンがインスタンス化されたとき、当該仮想マシンに対して望ましいディスプレイ解像度のような情報を含む構成ファイルを受信することができる。3Dグラフィック・サービス・マネージャ404は、当該情報を受け取って、当該情報を使用して当該仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を推定することができる。
例えば、画素の次元は、モニタで表示できる各次元における相違なる画素の数を記述する。モニタは2次元の表面であるので、当該次元として2つの次元のみが使用される(高さと幅)。例示的な実施形態では、画素の次元に画素の深度を乗じて8で除すことができる。その結果、画像を所望のディスプレイ解像度で描画するために利用できるグラフィック・メモリの量が記述される。
図11の説明を続けると、動作1112は、第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、第1の3Dグラフィック演算装置が使用する圧縮率を特定する情報から推定することを示す。例えば、1実施形態では、圧縮率、即ち圧縮画像のサイズと未圧縮画像のサイズの間の割合を用いて、仮想マシンに対して画像を適切に描画するためにどれくらい多くのグラフィック・メモリを仮想マシンが使用するかを推定することができる。例えば、3Dグラフィック演算装置を、圧縮されたテクスチャを用いてそのサイズを減ずるように構成することができる。3Dグラフィック・サービス・マネージャ404がハードウェアに問い合わせると、3Dグラフィック・サービス・マネージャ404はテクスチャ圧縮が可能であるか否かおよびどの圧縮率が達成されるかを判定することができる。3Dグラフィック・サービス・マネージャ404はこの情報を使用して、仮想マシンが使用するグラフィック・メモリの量を推定することができる。
動作1114を参照すると、動作1114は、第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、第1の仮想マシンに対して描画すべきサーフェスの推定数を特定する情報から推定することを示す。例えば、1実施形態では、仮想マシンが描画を試みるサーフェスの推定数を使用して、仮想マシンに対して3Dグラフィックを適切に描画するために仮想マシンが使用することとなるグラフィック・メモリの量を推定することができる。
動作1116を参照すると、動作1116は、グラフィック・カーネルが発行した少なくとも1つのコマンドの待ち時間が第3の閾値未満であると判定したことに応答して、第1の3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択することを示す。例えば、図6を参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404をプロセッサで実行し、3Dグラフィック・サービス・マネージャ404は、少なくとも、グラフィック演算装置、例えば3D GPU504が、グラフィック・カーネル508が発行した少なくとも1つのコマンドにACKで応答するために要した時間が閾値未満であると判定したことに応答して、3Dグラフィック演算装置504で描画するための仮想マシン414を割り当てることができる。本例では、3Dグラフィック・サービス・マネージャ404が制御するテーブルを、ハードウェアがグラフィック・カーネルのコマンドに応答するために要した待ち時間で更新することができ、例示的な実施形態では、当該待ち時間を使用でき、または、平均を3D GPU504に対して計算することができる。当該平均を使用する例では、当該平均を閾値の待ち時間の値と比較し、当該平均が当該閾値より大きい場合は、3Dグラフィック・サービス・マネージャ404を、3D GPU504がオーバコミットされていると判定するように構成することができる。
次に動作1118を参照すると、動作1118は、第1の3Dグラフィック演算装置に現在割り当てられている仮想マシンの数が第4の閾値未満であると判定したことに応答して、第1の3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択することを示す。3Dグラフィック・サービス・マネージャ404を、3Dグラフィック演算装置504にバインドされた仮想マシンの数が閾値数未満であると判定したことに応答して、仮想マシン414に対してグラフィックを描画するための3Dグラフィック演算装置504を選択すると判定するように構成することができる。本例では、3Dグラフィック・サービス・マネージャ404を、3Dグラフィック演算装置504に現在バインドされている仮想マシンの数(図示した例では2)を示す値をそのテーブルから読み出し、現在バインドされた仮想マシンの数が閾値数、即ち性能データおよび/または管理者の好みに基づく数未満であると判定するように構成することができる。
図12を参照すると、図12は、動作1200、1202、1204、1206、および1208を含む動作手続を示す。動作1200で当該動作手続が開始し、動作1202は、少なくとも、仮想マシンに対してグラフィックを描画するために利用されるグラフィック・メモリの量を推定することを示す。例えば、1実施形態では、3Dグラフィック・サービス・マネージャ404が、仮想マシン、例えば仮想マシン414がインスタンス化されているとの指示を受信することができ、3Dグラフィック・サービス・マネージャ404が動作手続を開始して、それを実行するためのグラフィック演算装置、例えば3Dグラフィック演算装置504を選択することができる。本例では、当該動作手続が、仮想マシン414に対してグラフィックを適切に描画するために使用されるグラフィック・メモリの量を推定することを含むことができる。例えば、グラフィック・メモリの推定量を、仮想マシンには実行時にどれだけメモリが集約的となるかを示すものとして使用することができる。
利用されるグラフィック・メモリの量を前述のように推定することを、画像を表示するために必要なメモリの最小量に基づいて行うことができる。別の例示的な実施形態では、グラフィック・メモリの推定量が、頂点を生成するために必要なプリミティブを格納するために必要なメモリの推定量、頂点に適用されるテクスチャ、頂点がどの色であるべきか、アンチエイリアス技法をオブジェクトに適用するためのメモリ、等に基づくことができる。1例では、この推定が静的である、即ち、期待される利用に基づいて管理者が設定することができ、または、この推定が動的であることができる。例えば、仮想マシン414が利用または利用を試みるグラフィック・メモリの量を、長時間にわたって、即ち、仮想デスクトップ・セッションにわたって監視することができ、当該推定値を用いて当該推定を改良することができる。
次に動作1204を参照すると、動作1204は、グラフィック・メモリの推定量を、複数の3Dグラフィック演算装置が制御する利用可能なグラフィック・メモリの推定量と比較することを示す。例えば、3Dグラフィック・サービス・マネージャ404を、仮想マシン414が利用するグラフィック・メモリの推定量を仮想デスクトップ・サーバ400にアタッチされたグラフィック演算装置ごとに利用可能なグラフィック・メモリの推定量と比較するように構成することができる。本例では、3Dグラフィック・サービス・マネージャ404は、前もって、グラフィック演算装置を収容するグラフィック・カード内に統合されたグラフィック・メモリの量を取得し、当該情報をテーブルに格納しておくことができる。さらに、仮想マシンがグラフィック演算装置にバインドされる度に、3Dグラフィック・サービス・マネージャ404を、仮想マシンが使用するグラフィック・メモリの推定量を、合計値から差し引き、その値をテーブルに格納するように構成することができる。ここで、3Dグラフィック・サービス・マネージャ404は、仮想マシン414が必要とするグラフィック・メモリの推定量を、3D GPU504、3D GPU504B、および3D GPU504Cで利用可能なグラフィック・メモリの推定量と比較することができる。
図12の説明を続けると、動作1206は、当該比較に従って、仮想マシンに対して3Dグラフィックを描画するための3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択することを示す。例えば、3Dグラフィック・サービス・マネージャ404は、仮想マシンをバインドするGPU、例えば3D GPU506を、少なくとも当該比較の結果に基づいて選択することができる。例えば、以前の例を続けると、3Dグラフィック・サービス・マネージャ404は、3D GPU504が仮想マシン414をホストできることを、3D GPU504が十分なグラフィック・メモリを有すると推定されるという事実に少なくとも部分的に基づいて判定することができる。次に動作1208を参照すると、動作1208は、仮想マシンに対して3Dグラフィックを描画するための選択された3Dグラフィック演算装置を割り当てることを示す。例えば、図6を再度参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404を、グラフィック描画モジュール506をインスタンス化し、3Dグラフィック演算装置504にバインドするコマンドをグラフィック描画モジュール506に送信するように構成することができる。グラフィック描画モジュール506は、当該コマンドを受け取って、3Dグラフィック演算装置504にバインドすることができる。
図13を参照すると、追加の動作1310〜1322を含む図13の動作手続が示されている。動作1310は、少なくとも、仮想マシンが開始したダイレクト・メモリ・アクセスのグラフィック・トランザクションの平均待ち時間に基づいて、3Dグラフィック演算装置がオーバコミットされていることを判定したことに応答して、仮想マシンを第2のグラフィック演算装置に移動することを示す。例えば、図6を参照すると、例示的な実施形態では、3Dグラフィック・サービス・マネージャ404をプロセッサで実行し、3Dグラフィック・サービス・マネージャ404が、3Dグラフィック演算装置504がオーバコミットされている、例えば、3Dグラフィック演算装置504がその全ての要求に応える十分なリソースがなくリセットされ、グラフィック描画モジュール(506、612、および614)が終了することとなると判定することができる。この具体的な例では、当該判定は、仮想マシン414が開始したDMAグラフィック・トランザクションの平均待ち時間に基づくことができる。本例では、仮想マシンの平均待ち時間を閾値と比較することができ、3Dグラフィック・サービス・マネージャ404を、3D GPU504のリソースがオーバコミットされていることを少なくともこの情報に基づいて判定するように構成することができる。当該判定に応答して、3Dグラフィック・サービス・マネージャ404を、グラフィック描画モジュール506を3D GPU504Bまたは504Cのような別のGPUに移動するように構成することができる。
図13の説明を続けると、動作1312は、グラフィック・カーネルが3Dグラフィック演算装置に発行したグラフィック・コマンドの平均待ち時間に少なくとも基づいて、3Dグラフィック演算装置がオーバコミットされていることを判定したことに応答して、仮想マシンを第2のグラフィック演算装置に移動することを示す。例えば、例示的な実施形態では、グラフィック・カーネル508がACKを受信する前にコマンドを発行するために要した平均時間の長さを記述する情報を使用して、3D GPU504がオーバコミットされているかどうかを判定することができる。本例では、3Dグラフィック・サービス・マネージャ404が制御するテーブルを、グラフィック・カーネルのコマンドの待ち時間で更新することができ、平均を3D GPU504に対して計算することができる。当該平均を閾値の待ち時間の値と比較し、当該平均が当該閾値より大きい場合は、3Dグラフィック・サービス・マネージャ404を、3D GPU504がオーバコミットされていると判定するように構成することができる。当該判定に応答して、3Dグラフィック・サービス・マネージャ404を、グラフィック描画モジュール506を3D GPU504Bまたは504Cのような別のGPUに移動するように構成することができる。
動作1314を参照すると、選択された3Dグラフィック演算装置に現在割り当てられている仮想マシンの数が閾値未満であると判定することを示す。3Dグラフィック・サービス・マネージャ404を、3D GPU504Bにバインドされた仮想マシンの数が閾値数未満であると判定したことに応答して仮想マシン414を3D GPU504Bに移動すると決定するように構成することができる。本例では、3Dグラフィック・サービス・マネージャ404を、3D GPU504Bに現在バインドされている仮想マシンの数(図示した例では1)を示す値をそのテーブルから読み出し、現在バインドされている仮想マシンの数が閾値数、即ち、性能データおよび/または管理者の好みに基づく数より少ないと判定するように構成することができる。この場合、3Dグラフィック・サービス・マネージャ404を、少なくとも当該判定に基づいてグラフィック描画モジュール506を移動するように構成することができる。
動作1316を参照すると、動作1316は、複数の3Dグラフィック演算装置における各3Dグラフィック演算装置のハードウェア機能を決定することを示す。例えば、1実施形態では、3Dグラフィック・サービス・マネージャ404を、コンピュータ・システム内の各3Dグラフィック演算装置の機能を決定するように構成することができる。例えば、以前の例を続けると、3Dグラフィック・サービス・マネージャ404を、3Dグラフィック演算装置504と3Dグラフィック演算装置B616の機能を決定するように構成することができる。本例では、当該機能を使用して、グラフィック演算装置が仮想マシンに対する3Dグラフィックを処理できるかどうかを判定することができる。例えば、3Dグラフィック・サービス・マネージャ404を、グラフィック・カードが共有のサーフェスとテクスチャをサポートするかどうか、グラフィック・カードが例えば或るバージョンのDirectX(登録商標)を少なくともサポートするかどうか、グラフィック演算装置に関連付けられたグラフィック・メモリの量、等をチェックすると決定することができる。本例では、当該情報を使用して、仮想マシン間のグラフィック演算装置の使用を調整するために使用できる、3Dグラフィック・サービス・マネージャ404が制御するテーブルを埋めることができる。
動作1318を参照すると、動作1318は、仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、仮想マシンに対する画素の次元を特定する情報から推定することを示す。例えば、1実施形態では、仮想マシンごとにグラフィックを描画するために利用されるグラフィック・メモリの量が、当該仮想マシンに関連付けられた画素の次元に基づくことができる。例えば、仮想マシンがインスタンス化されたとき、当該仮想マシンに対する所望のディスプレイ解像度のような情報を含む構成ファイルを受信することができる。3Dグラフィック・サービス・マネージャ404は、当該情報を受け取って、当該情報を使用してこの仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を推定することができる。
動作1320を参照すると、動作1320は、仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、選択された3Dグラフィック演算装置が使用する圧縮率を特定する情報から推定することを示す。例えば、1実施形態では、圧縮率、即ち圧縮画像のサイズと未圧縮画像のサイズの間の割合を用いて、仮想マシンに対して画像を適切に描画するためにどれくらい多くのグラフィック・メモリを仮想マシンが使用するかを推定することができる。例えば、第1の3Dグラフィック演算装置を、圧縮されたテクスチャを用いてそのサイズを減ずるように構成することができる。3Dグラフィック・サービス・マネージャ404がハードウェアに問い合わせると、3Dグラフィック・サービス・マネージャ404はテクスチャ圧縮が可能であるか否かおよびどの圧縮率が達成されるかを判定することができる。3Dグラフィック・サービス・マネージャ404はこの情報を使用して、仮想マシンが使用するグラフィック・メモリの量を推定することができる。
動作1322は、仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、当該仮想マシンに対して描画すべきサーフェスの推定数を特定する情報から推定することを示す。例えば、1実施形態では、仮想マシンが描画を試みるサーフェスの推定数を使用して、仮想マシンに対して3Dグラフィックを適切に描画するために仮想マシンが使用するグラフィック・メモリの量を推定することができる。例えば、サーフェスは、3Dグラフィック内のオブジェクトを表現する1つの方法であり、バッファに格納される。
以上の詳細な説明では、種々の例および/または動作図を通じてシステムおよび/またはプロセスの様々な実施形態を説明した。かかるブロック図および/または種々の例が1つまたは複数の機能および/または動作を含む限り、かかるブロック図または種々の例における各機能および/または動作を、個別におよび/または集合的に、広範囲のハードウェア、ソフトウェア、ファームウェア、または事実上それらの任意の組合せで実装できることは当業者には理解されよう。
本明細書に記載の本発明の特定の態様を図示および説明したが、本明細書の教示事項に基づいて、本明細書に記載の主題およびその広範囲の態様から逸脱しない変更および修正を行ってもよく、したがって添付の特許請求の範囲が、その範囲において、全てのかかる変更および修正を、それらが本明細書に記載の本発明の真の趣旨と範囲内にあるように包含するものであることは当業者には明らかであろう。

Claims (15)

  1. 仮想マシン間でグラフィック・プロセッサの利用を調整するように構成されたコンピュータ・システムであって、
    プロセッサと、
    第1の3Dグラフィック演算装置と、
    第2の3Dグラフィック演算装置と、
    前記コンピュータ・システムが動作するときに少なくとも前記プロセッサと通信するメモリであって、前記メモリは、実行時に前記プロセッサに、
    第1の3Dグラフィック演算装置で3Dグラフィックを描画するための1群の仮想マシンを割り当てさせ、
    前記第1の3Dグラフィック演算装置がオーバコミットされていることを、少なくとも、前記第1の3Dグラフィック演算装置がコマンドに応答するために要する時間に基づいて判定させ、
    少なくとも前記第1の3Dグラフィック演算装置がオーバコミットされていると判定したことに応答して、第1の仮想マシンを前記1群の仮想マシンから第2のグラフィック演算装置に移動させる
    コンピュータ可読命令を格納する、メモリと、
    を備えたことを特徴とするコンピュータ・システム。
  2. 実行時に前記プロセッサに前記第1の仮想マシンを前記第2のグラフィック演算装置に移動させる前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第2のグラフィック演算装置が制御する利用可能なグラフィック・メモリの推定量が閾値より大きいと判定したことに応答して、前記第1の仮想マシンを前記第2のグラフィック演算装置に移動させるコンピュータ可読命令をさらに含むことを特徴とする請求項1に記載のコンピュータ・システム。
  3. 実行時に前記プロセッサに前記第1の3Dグラフィック演算装置がオーバコミットされていると判定させる前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の3Dグラフィック演算装置がオーバコミットされていると、前記第1の仮想マシンが開始したダイレクト・メモリ・アクセスのトランザクションの平均待ち時間に基づいて判定させるコンピュータ可読命令をさらに含むことを特徴とする請求項1に記載のコンピュータ・システム。
  4. 実行時に前記プロセッサに前記第1の仮想マシンを前記第2のグラフィック演算装置に移動させる前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第2のグラフィック演算装置に割り当てられた第2の仮想マシンに対するダイレクト・メモリ・アクセスのトランザクションの平均待ち時間が閾値未満であると判定したことに応答して、前記第1の仮想マシンを移動させるコンピュータ可読命令をさらに含むことを特徴とする請求項1に記載のコンピュータ・システム。
  5. 実行時に前記プロセッサに前記第1の仮想マシンを前記第2のグラフィック演算装置に移動させる前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第2のグラフィック演算装置に割り当てられる仮想マシンの数が閾値未満であると判定したことに応答して、前記第1の仮想マシンを移動させるコンピュータ可読命令をさらに含むことを特徴とする請求項1に記載のコンピュータ・システム。
  6. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1のグラフィック演算装置および前記第2のグラフィック演算装置の機能を決定させるコンピュータ可読命令をさらに含むことを特徴とする請求項1に記載のコンピュータ・システム。
  7. 仮想マシン間でグラフィック演算装置の利用を調整するためのコンピュータ可読命令を含むコンピュータ可読記憶媒体であって、前記コンピュータ可読記憶媒体は、実行時に前記プロセッサに、
    第1の仮想マシンを第1の3Dグラフィック演算装置に割り当てる要求を受信させ、
    前記第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を推定させ、
    前記第1のグラフィック演算装置でグラフィックを描画するために割り当てられた1群の仮想マシンが発行したダイレクト・メモリ・アクセスのトランザクションに関連付けられる待ち時間の値が第1の閾値未満であると判定したことと、3Dグラフィックを描画するために利用されるグラフィック・メモリの推定量が第2の閾値未満であると判定したこととに応答して、前記第1の3Dグラフィック演算装置を複数の3Dグラフィック演算装置から選択させ、
    前記第1の3Dグラフィック演算装置で3Dグラフィックを描画するための前記第1の仮想マシンを割り当てさせる
    命令を含むことを特徴とするコンピュータ可読記憶媒体。
  8. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、前記1群内の仮想マシンごとの画素の次元を特定する情報から推定させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  9. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、前記第1の3Dグラフィック演算装置が使用する圧縮率を特定する情報から推定させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  10. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の仮想マシンに対して3Dグラフィックを描画するために利用されるグラフィック・メモリの量を、少なくとも、前記第1の仮想マシンに対して描画するためのサーフェスの推定数を特定する情報から推定させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  11. 実行時に前記プロセッサに前記第1の3Dグラフィック演算装置を選択させる前記コンピュータ可読命令は、実行時に前記プロセッサに、グラフィック・カーネルが発行した少なくとも1つのコマンドの待ち時間が第3の閾値未満であると判定したことに応答して、前記第1の3Dグラフィック演算装置を前記複数の3Dグラフィック演算装置から選択させるコンピュータ可読命令を含むことを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  12. 実行時に前記プロセッサに前記第1の3Dグラフィック演算装置を選択させる前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の3Dグラフィック演算装置に現在割り当てられている仮想マシンの数が第4の閾値未満であると判定したことに応答して、前記第1の3Dグラフィック演算装置を前記複数の3Dグラフィック演算装置から選択させるコンピュータ可読命令を含むことを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  13. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の3Dグラフィック演算装置がオーバコミットされていることを、少なくとも、前記第1の仮想マシンが開始したダイレクト・メモリ・アクセスのグラフィック・トランザクションの平均待ち時間に基づいて判定したことに応答して、前記第1の仮想マシンを第2のグラフィック演算装置に移動させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  14. 前記コンピュータ可読命令は、実行時に前記プロセッサに、前記第1の3Dグラフィック演算装置がオーバコミットされていることを、少なくとも、グラフィック・カーネルが前記第1の3Dグラフィック演算装置に発行したグラフィック・コマンドの平均待ち時間に基づいて判定したことに応答して、前記第1の仮想マシンを第2のグラフィック演算装置に移動させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
  15. 前記コンピュータ可読命令は、実行時に前記プロセッサに、複数の3Dグラフィック演算装置内の各3Dグラフィック演算装置のハードウェア機能を決定させることを特徴とする請求項7に記載のコンピュータ可読記憶媒体。
JP2013531625A 2010-09-30 2011-09-14 Gpu利用可能仮想マシンの負荷分散技法 Active JP5902175B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/895,605 US9069622B2 (en) 2010-09-30 2010-09-30 Techniques for load balancing GPU enabled virtual machines
US12/895,605 2010-09-30
PCT/US2011/051656 WO2012050718A2 (en) 2010-09-30 2011-09-14 Techniques for load balancing gpu enabled virtual machines

Publications (2)

Publication Number Publication Date
JP2014500535A true JP2014500535A (ja) 2014-01-09
JP5902175B2 JP5902175B2 (ja) 2016-04-13

Family

ID=45884692

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013531625A Active JP5902175B2 (ja) 2010-09-30 2011-09-14 Gpu利用可能仮想マシンの負荷分散技法

Country Status (5)

Country Link
US (1) US9069622B2 (ja)
EP (1) EP2622470B1 (ja)
JP (1) JP5902175B2 (ja)
CN (1) CN102402462B (ja)
WO (1) WO2012050718A2 (ja)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016099184A1 (ko) * 2014-12-18 2016-06-23 권영민 가상화 멀티 세션 지원을 위한 서버 구조
JP2017079062A (ja) * 2015-10-21 2017-04-27 インテル コーポレイション モバイルエッジコンピュート動的アクセラレーション割り当て
JP2017111499A (ja) * 2015-12-14 2017-06-22 コニカミノルタ株式会社 画像形成装置および画像形成装置で実行されるプログラム
KR20190000822U (ko) * 2017-03-10 2019-04-02 이브이지에이 코포레이션 디스플레이 카드 무선 모니터링 장치
KR20190044097A (ko) * 2016-09-05 2019-04-29 후아웨이 테크놀러지 컴퍼니 리미티드 가상 머신을 위한 그래픽처리장치의 할당
KR20190117801A (ko) * 2015-08-10 2019-10-16 아마존 테크놀로지스, 인크. 제공자 네트워크에서의 그래픽 처리 가상화
US11210759B2 (en) 2015-11-11 2021-12-28 Amazon Technologies, Inc. Placement optimization for virtualized graphics processing
US11710206B2 (en) 2017-02-22 2023-07-25 Amazon Technologies, Inc. Session coordination for auto-scaled virtualized graphics processing

Families Citing this family (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5733318B2 (ja) * 2010-11-12 2015-06-10 株式会社日立製作所 計算機システム
US8910154B2 (en) * 2010-12-23 2014-12-09 Mitel Networks Corporation Obtaining diagnostic information in a virtual environment
US9130899B1 (en) 2011-04-27 2015-09-08 Cisco Technology, Inc. Integrated user interface for unified communications applications
US9183030B2 (en) 2011-04-27 2015-11-10 Microsoft Technology Licensing, Llc Virtual processor allocation techniques
US8990292B2 (en) * 2011-07-05 2015-03-24 Cisco Technology, Inc. In-network middlebox compositor for distributed virtualized applications
US8902248B1 (en) 2011-07-14 2014-12-02 Vmware, Inc. Method and system for measuring display performance of a remote application
US20130104149A1 (en) * 2011-10-25 2013-04-25 Handong Lnc Co., Ltd. Selective data processing method between docked terminals and selective data processing system using the same
US20130210522A1 (en) * 2012-01-12 2013-08-15 Ciinow, Inc. Data center architecture for remote graphics rendering
US9055139B1 (en) 2012-03-12 2015-06-09 Cisco Technology, Inc. Display protocol interception in the network for services and network-based multimedia support for VDI
US20150212859A1 (en) * 2012-05-29 2015-07-30 Qatar Foundation Graphics processing unit controller, host system, and methods
US8813240B1 (en) 2012-05-30 2014-08-19 Google Inc. Defensive techniques to increase computer security
US9015838B1 (en) * 2012-05-30 2015-04-21 Google Inc. Defensive techniques to increase computer security
CN102902576B (zh) * 2012-09-26 2014-12-24 北京奇虎科技有限公司 一种渲染网页的方法、服务器和系统
TWI482118B (zh) * 2012-10-18 2015-04-21 Wistron Corp 處理圖形運算負載平衡之方法及系統
US9135052B2 (en) 2012-11-06 2015-09-15 Red Hat Israel, Ltd. Distributed multiple monitor display split using multiple client devices in a virtualization system
US8959514B2 (en) * 2012-11-06 2015-02-17 Red Hat Israel, Ltd. Virtual machine monitor display split using multiple client devices in a virtualization system
JP2016508757A (ja) * 2012-12-21 2016-03-24 ジェイソン スペンサー, 医療データのグラフィカル処理のためのシステムおよび方法
CN103970555B (zh) * 2013-01-31 2017-09-12 中兴通讯股份有限公司 自适应的虚拟机启动控制方法及装置
CN103984669A (zh) 2013-02-07 2014-08-13 辉达公司 一种用于图像处理的系统和方法
CN104053019A (zh) * 2013-03-12 2014-09-17 中兴通讯股份有限公司 基于虚拟桌面的视频播放、处理方法及装置
US9525586B2 (en) 2013-03-15 2016-12-20 Intel Corporation QoS based binary translation and application streaming
US9430258B2 (en) * 2013-05-10 2016-08-30 Vmware, Inc. Efficient sharing of identical graphics resources by multiple virtual machines using separate host extension processes
TW201445500A (zh) * 2013-05-16 2014-12-01 Hon Hai Prec Ind Co Ltd 顯示適配器控制系統、控制方法及電腦裝置
US9600774B1 (en) * 2013-09-25 2017-03-21 Amazon Technologies, Inc. Predictive instance suspension and resumption
US9734546B2 (en) * 2013-10-03 2017-08-15 Nvidia Corporation Split driver to control multiple graphics processors in a computer system
US9332046B2 (en) 2013-10-17 2016-05-03 Cisco Technology, Inc. Rate-adapted delivery of virtual desktop image elements by an edge server in a computer network environment
CN104580124B (zh) 2013-10-29 2019-04-05 华为技术有限公司 协议栈选择方法、装置及设备
US9674265B2 (en) 2013-11-04 2017-06-06 Vmware, Inc. Filtering unnecessary display updates for a networked client
US9604139B2 (en) 2013-11-11 2017-03-28 Amazon Technologies, Inc. Service for generating graphics object data
US9641592B2 (en) 2013-11-11 2017-05-02 Amazon Technologies, Inc. Location of actor resources
US9805479B2 (en) * 2013-11-11 2017-10-31 Amazon Technologies, Inc. Session idle optimization for streaming server
US20150130815A1 (en) * 2013-11-11 2015-05-14 Amazon Technologies, Inc. Multiple parallel graphics processing units
US9596280B2 (en) 2013-11-11 2017-03-14 Amazon Technologies, Inc. Multiple stream content presentation
US9634942B2 (en) 2013-11-11 2017-04-25 Amazon Technologies, Inc. Adaptive scene complexity based on service quality
US9578074B2 (en) 2013-11-11 2017-02-21 Amazon Technologies, Inc. Adaptive content transmission
US9582904B2 (en) 2013-11-11 2017-02-28 Amazon Technologies, Inc. Image composition based on remote object data
CN105830026B (zh) * 2013-11-27 2020-09-15 英特尔公司 用于调度来自虚拟机的图形处理单元工作负荷的装置和方法
US9674518B2 (en) 2013-12-20 2017-06-06 Vmware, Inc. Measuring remote video display with embedded pixels
CN104754464A (zh) * 2013-12-31 2015-07-01 华为技术有限公司 一种音频播放方法、终端及系统
GB201406392D0 (en) * 2014-04-09 2014-05-21 Advanced Risc Mach Ltd Data processing systems
GB2525003B (en) 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data Processing Systems
GB2525002B (en) * 2014-04-09 2021-06-09 Advanced Risc Mach Ltd Data processing systems
US9898794B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based GPU resource scheduling
US9898795B2 (en) * 2014-06-19 2018-02-20 Vmware, Inc. Host-based heterogeneous multi-GPU assignment
CN104123452B (zh) * 2014-07-18 2017-10-10 西北工业大学 基于模糊决策的gpu负载综合评判方法
CN104102546B (zh) * 2014-07-23 2018-02-02 浪潮(北京)电子信息产业有限公司 一种实现cpu和gpu负载均衡的方法及系统
DE102014221247A1 (de) * 2014-10-20 2016-04-21 Continental Automotive Gmbh Computersystem für ein Kraftfahrzeug
CN107111498B (zh) * 2014-11-12 2020-12-29 英特尔公司 利用图形虚拟化从/向主机计算机进行虚拟机的实时迁移
CN104333607B (zh) * 2014-11-25 2019-12-13 武汉理工数字传播工程有限公司 一种实现虚拟云端图形工作站海量传输装置及传输方法
US9928094B2 (en) * 2014-11-25 2018-03-27 Microsoft Technology Licensing, Llc Hardware accelerated virtual context switching
CN107533463A (zh) * 2015-03-18 2018-01-02 英特尔公司 用于软件不可知多gpu处理的设备和方法
CN106296564B (zh) * 2015-05-29 2019-12-20 展讯通信(上海)有限公司 嵌入式soc片上系统
WO2017049538A1 (en) * 2015-09-24 2017-03-30 Intel Corporation Apparatus and method for pattern driven self-adaptive virtual graphics processor units
US9886737B2 (en) 2015-11-11 2018-02-06 Amazon Technologies, Inc. Local-to-remote migration for virtualized graphics processing
US9904973B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Application-specific virtualized graphics processing
US9904975B2 (en) 2015-11-11 2018-02-27 Amazon Technologies, Inc. Scaling for virtualized graphics processing
WO2017099061A1 (ja) * 2015-12-08 2017-06-15 日本電気株式会社 仮想マシンの配置を計画するための計画システム、計画方法、及び、計画用プログラムを記録する記録媒体
CN107102957A (zh) * 2016-02-22 2017-08-29 深圳市知穹科技有限公司 一种基于gpu与nic之间的内存高速直接交换的方法及系统
US10181172B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset delivery for virtualized graphics
US10181173B1 (en) 2016-06-08 2019-01-15 Amazon Technologies, Inc. Disaggregated graphics asset management for virtualized graphics
CN107483390B (zh) * 2016-06-08 2020-10-16 成都云创互联信息技术有限公司 一种云渲染网络部署子系统、系统及云渲染平台
US10423463B1 (en) 2016-06-09 2019-09-24 Amazon Technologies, Inc. Computational task offloading for virtualized graphics
US9990211B2 (en) 2016-06-15 2018-06-05 Vmware, Inc. Tracking window position in a VDI environment
US10592279B2 (en) * 2016-06-23 2020-03-17 Advanced Micro Devices, Inc. Multi-processor apparatus and method of detection and acceleration of lagging tasks
US10102605B1 (en) 2016-08-26 2018-10-16 Amazon Technologies, Inc. Graphics library virtualization for virtualized graphics processing
US10200249B1 (en) 2016-12-09 2019-02-05 Amazon Technologies, Inc. Network traffic management for virtualized graphics devices
US10373284B2 (en) 2016-12-12 2019-08-06 Amazon Technologies, Inc. Capacity reservation for virtualized graphics processing
US10430911B1 (en) 2016-12-16 2019-10-01 Amazon Technologies, Inc. Graphics overlays with virtualized graphics processing
US10482561B1 (en) 2017-01-11 2019-11-19 Amazon Technologies, Inc. Interaction monitoring for virtualized graphics processing
US10255652B2 (en) 2017-01-18 2019-04-09 Amazon Technologies, Inc. Dynamic and application-specific virtualized graphics processing
US10692168B1 (en) 2017-01-26 2020-06-23 Amazon Technologies, Inc. Availability modes for virtualized graphics processing
US10204392B2 (en) * 2017-02-02 2019-02-12 Microsoft Technology Licensing, Llc Graphics processing unit partitioning for virtualization
US10169841B1 (en) 2017-03-27 2019-01-01 Amazon Technologies, Inc. Dynamic interface synchronization for virtualized graphics processing
US10043232B1 (en) * 2017-04-09 2018-08-07 Intel Corporation Compute cluster preemption within a general-purpose graphics processing unit
US10074206B1 (en) 2017-05-23 2018-09-11 Amazon Technologies, Inc. Network-optimized graphics library for virtualized graphics processing
US10459751B2 (en) * 2017-06-30 2019-10-29 ATI Technologies ULC. Varying firmware for virtualized device
US10699364B2 (en) * 2017-07-12 2020-06-30 Citrix Systems, Inc. Graphical rendering using multiple graphics processors
CN107423019B (zh) * 2017-07-31 2020-11-10 山东超越数控电子股份有限公司 一种基于飞腾平台控制3d图形加速的实现方法
GB2565770B (en) * 2017-08-15 2019-09-18 Advanced Risc Mach Ltd Data processing systems
US10649790B1 (en) 2017-08-24 2020-05-12 Amazon Technologies, Inc. Multithreaded rendering for virtualized graphics processing
US10338847B1 (en) 2017-08-28 2019-07-02 Amazon Technologies, Inc. Coherent buffer mapping for virtualized graphics processing
US10908940B1 (en) 2018-02-26 2021-02-02 Amazon Technologies, Inc. Dynamically managed virtual server system
CN110278235A (zh) * 2018-03-16 2019-09-24 上海远动科技有限公司 基于云技术的scada移动监控桌面系统
US11182189B2 (en) * 2018-08-24 2021-11-23 Vmware, Inc. Resource optimization for virtualization environments
US11126452B2 (en) * 2018-08-24 2021-09-21 Vmware, Inc. Performance modeling for virtualization environments
CN109656714B (zh) * 2018-12-04 2022-10-28 成都雨云科技有限公司 一种虚拟化显卡的gpu资源调度方法
CN111381914B (zh) * 2018-12-29 2021-07-30 中兴通讯股份有限公司 一种云桌面虚机实现3d能力的方法和系统
CN109840135B (zh) * 2019-01-30 2022-02-18 郑州云海信息技术有限公司 一种负载均衡方法、装置及电子设备
CN110557624A (zh) * 2019-07-16 2019-12-10 西安万像电子科技有限公司 数据传输方法、装置及服务器
CN110545415A (zh) * 2019-07-16 2019-12-06 西安万像电子科技有限公司 数据传输方法、装置及服务器
CN111475256A (zh) * 2020-03-18 2020-07-31 西安万像电子科技有限公司 资源分配方法、装置及系统
US11886898B2 (en) * 2020-03-30 2024-01-30 Vmware, Inc. GPU-remoting latency aware virtual machine migration
CN111935471B (zh) * 2020-08-14 2021-04-06 北京泽塔云科技股份有限公司 基于云服务的远程立体图形生成系统及方法
CN113419845A (zh) * 2021-02-22 2021-09-21 阿里巴巴集团控股有限公司 计算加速方法和装置、计算系统、电子设备及计算机可读存储介质
US11915060B2 (en) * 2021-03-25 2024-02-27 Dell Products L.P. Graphics processing management system
CN113094015A (zh) * 2021-04-19 2021-07-09 上海跃影科技有限公司 全息多屏显示实现方法、系统、计算机设备和存储介质
CN113342534B (zh) * 2021-06-29 2024-01-02 天翼云科技有限公司 图形处理资源调配方法、装置、设备及存储介质
CN113590263B (zh) * 2021-07-01 2022-07-05 深圳大学 虚拟机调度方案获得方法、装置、终端设备以及存储介质
US11595321B2 (en) 2021-07-06 2023-02-28 Vmware, Inc. Cluster capacity management for hyper converged infrastructure updates
CN116954929B (zh) * 2023-09-20 2023-12-01 四川并济科技有限公司 一种实时迁移的动态gpu调度方法及系统
CN117331704B (zh) * 2023-11-30 2024-03-15 摩尔线程智能科技(北京)有限责任公司 图形处理器gpu调度方法、装置和存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
US20100115510A1 (en) * 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5675762A (en) 1992-04-03 1997-10-07 International Business Machines Corporation System for locking down part of portion of memory and updating page directory with entry corresponding to part of portion of the memory locked down
US5991856A (en) 1997-09-30 1999-11-23 Network Associates, Inc. System and method for computer operating system protection
JP2005062927A (ja) * 2003-08-11 2005-03-10 Hitachi Ltd 負荷制御方法および装置並びにその処理プログラム
US7075541B2 (en) 2003-08-18 2006-07-11 Nvidia Corporation Adaptive load balancing in a multi-processor graphics processing system
JP2007508623A (ja) 2003-10-08 2007-04-05 ユニシス コーポレーション 複数のノードにわたってシステムリソースを割り当てて管理する仮想データセンタ
US7263690B1 (en) 2003-11-14 2007-08-28 Sun Microsystems, Inc. Mechanism for safe byte code in a tracing framework
US7446773B1 (en) * 2004-12-14 2008-11-04 Nvidia Corporation Apparatus, system, and method for integrated heterogeneous processors with integrated scheduler
US8060683B2 (en) 2004-12-17 2011-11-15 International Business Machines Corporation System, method and program to preserve a cache of a virtual machine
US8341624B1 (en) * 2006-09-28 2012-12-25 Teradici Corporation Scheduling a virtual machine resource based on quality prediction of encoded transmission of images generated by the virtual machine
WO2006134691A1 (ja) 2005-06-17 2006-12-21 Nec Corporation 情報処理装置、復旧装置、プログラム及び復旧方法
US20070143762A1 (en) 2005-12-16 2007-06-21 Arnold Kevin M Assigning tasks in a distributed system based on ranking
US7360022B2 (en) 2005-12-29 2008-04-15 Intel Corporation Synchronizing an instruction cache and a data cache on demand
US7594042B2 (en) 2006-06-30 2009-09-22 Intel Corporation Effective caching mechanism with comparator coupled to programmable registers to store plurality of thresholds in order to determine when to throttle memory requests
US7444459B2 (en) 2006-12-12 2008-10-28 Lsi Logic Corporation Methods and systems for load balancing of virtual machines in clustered processors using storage related load information
US7673113B2 (en) 2006-12-29 2010-03-02 Intel Corporation Method for dynamic load balancing on partitioned systems
JP4882845B2 (ja) 2007-04-19 2012-02-22 株式会社日立製作所 仮想計算機システム
US7797587B2 (en) 2007-06-06 2010-09-14 Dell Products L.P. System and method of recovering from failures in a virtual machine
EP2527980A3 (en) 2007-06-19 2013-01-09 VirtualLogix SA Load balancing
US8330762B2 (en) 2007-12-19 2012-12-11 Advanced Micro Devices, Inc. Efficient video decoding migration for multiple graphics processor systems
CN101918921B (zh) 2008-01-27 2013-12-04 思杰系统有限公司 用于远程提供三维图形的方法和系统
US20090322784A1 (en) 2008-02-27 2009-12-31 Gabriele Sartori System and method for virtual 3d graphics acceleration and streaming multiple different video streams
US8230069B2 (en) * 2008-03-04 2012-07-24 International Business Machines Corporation Server and storage-aware method for selecting virtual machine migration targets
US10127059B2 (en) 2008-05-02 2018-11-13 Skytap Multitenant hosted virtual machine infrastructure
US8266618B2 (en) 2008-11-21 2012-09-11 International Business Machines Corporation Graphics hardware resource usage in a fully virtualized computing environment
US8751654B2 (en) * 2008-11-30 2014-06-10 Red Hat Israel, Ltd. Determining the graphic load of a virtual desktop
CN101452406B (zh) 2008-12-23 2011-05-18 北京航空航天大学 一种对操作系统透明的机群负载平衡方法
US8405666B2 (en) * 2009-10-08 2013-03-26 Advanced Micro Devices, Inc. Saving, transferring and recreating GPU context information across heterogeneous GPUs during hot migration of a virtual machine
US8589921B2 (en) * 2009-11-30 2013-11-19 Red Hat Israel, Ltd. Method and system for target host optimization based on resource sharing in a load balancing host and virtual machine adjustable selection algorithm
US8413144B1 (en) 2010-07-30 2013-04-02 Symantec Corporation Providing application-aware high availability of virtual machines
US8970603B2 (en) 2010-09-30 2015-03-03 Microsoft Technology Licensing, Llc Dynamic virtual device failure recovery
US8830245B2 (en) * 2010-12-14 2014-09-09 Amazon Technologies, Inc. Load balancing between general purpose processors and graphics processors

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009223793A (ja) * 2008-03-18 2009-10-01 Fujitsu Ltd 情報処理装置、情報処理装置の制御方法及びコンピュータプログラム
US20100115510A1 (en) * 2008-11-03 2010-05-06 Dell Products, Lp Virtual graphics device and methods thereof

Cited By (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20160074168A (ko) * 2014-12-18 2016-06-28 권영민 가상화 멀티 세션 지원을 위한 서버 구조
KR101647099B1 (ko) * 2014-12-18 2016-08-09 권영민 가상화 멀티 세션 지원을 위한 서버 구조
WO2016099184A1 (ko) * 2014-12-18 2016-06-23 권영민 가상화 멀티 세션 지원을 위한 서버 구조
US20190158892A1 (en) * 2014-12-18 2019-05-23 Young Min Kwon Server structure for supporting multiple sessions of virtualization
US10560727B2 (en) 2014-12-18 2020-02-11 Ermind Co., Ltd Server structure for supporting multiple sessions of virtualization
KR102174221B1 (ko) 2015-08-10 2020-11-04 아마존 테크놀로지스, 인크. 제공자 네트워크에서의 그래픽 처리 가상화
US11145271B2 (en) 2015-08-10 2021-10-12 Amazon Technologies, Inc. Virtualizing graphics processing in a provider network
KR20190117801A (ko) * 2015-08-10 2019-10-16 아마존 테크놀로지스, 인크. 제공자 네트워크에서의 그래픽 처리 가상화
JP2017079062A (ja) * 2015-10-21 2017-04-27 インテル コーポレイション モバイルエッジコンピュート動的アクセラレーション割り当て
US10929189B2 (en) 2015-10-21 2021-02-23 Intel Corporation Mobile edge compute dynamic acceleration assignment
US11210759B2 (en) 2015-11-11 2021-12-28 Amazon Technologies, Inc. Placement optimization for virtualized graphics processing
JP2017111499A (ja) * 2015-12-14 2017-06-22 コニカミノルタ株式会社 画像形成装置および画像形成装置で実行されるプログラム
KR102202258B1 (ko) * 2016-09-05 2021-01-13 후아웨이 테크놀러지 컴퍼니 리미티드 가상 머신을 위한 그래픽처리장치의 할당
KR20190044097A (ko) * 2016-09-05 2019-04-29 후아웨이 테크놀러지 컴퍼니 리미티드 가상 머신을 위한 그래픽처리장치의 할당
US11321111B2 (en) 2016-09-05 2022-05-03 Huawei Technologies Co., Ltd. Allocation of graphics processing units for virtual machines
US11710206B2 (en) 2017-02-22 2023-07-25 Amazon Technologies, Inc. Session coordination for auto-scaled virtualized graphics processing
KR200490426Y1 (ko) * 2017-03-10 2019-11-08 이브이지에이 코포레이션 디스플레이 카드 무선 모니터링 장치
KR20190000822U (ko) * 2017-03-10 2019-04-02 이브이지에이 코포레이션 디스플레이 카드 무선 모니터링 장치

Also Published As

Publication number Publication date
JP5902175B2 (ja) 2016-04-13
CN102402462A (zh) 2012-04-04
US9069622B2 (en) 2015-06-30
EP2622470A2 (en) 2013-08-07
US20120084774A1 (en) 2012-04-05
WO2012050718A2 (en) 2012-04-19
CN102402462B (zh) 2015-02-25
EP2622470B1 (en) 2022-06-08
EP2622470A4 (en) 2015-01-07
WO2012050718A3 (en) 2012-05-31

Similar Documents

Publication Publication Date Title
JP5902175B2 (ja) Gpu利用可能仮想マシンの負荷分散技法
US8970603B2 (en) Dynamic virtual device failure recovery
US9110702B2 (en) Virtual machine migration techniques
US10691363B2 (en) Virtual machine trigger
US20120054740A1 (en) Techniques For Selectively Enabling Or Disabling Virtual Devices In Virtual Environments
EP2622461B1 (en) Shared memory between child and parent partitions
US8872835B2 (en) Prevention of DoS attack by a rogue graphics application
US20180157519A1 (en) Consolidation of idle virtual machines
US20120154375A1 (en) Techniques For Enabling Remote Management Of Servers Configured With Graphics Processors
JP2006190281A (ja) グラフィックサブシステムを仮想化するシステムおよび方法
US9792136B2 (en) Hardware assisted inter hypervisor partition data transfers
US20070253436A1 (en) Communicating in a virtual environment
US9104452B2 (en) Hybrid remote sessions
WO2022041507A1 (zh) 3d渲染方法及系统
WO2010077424A1 (en) Command remoting
KR102001641B1 (ko) 가상화 환경에서의 gpu 자원 관리 방법 및 장치
JP6728370B2 (ja) 下位互換性のためのレガシーバス動作のシミュレーション

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140902

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A711

Effective date: 20150523

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150930

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20151006

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160105

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160209

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160309

R150 Certificate of patent or registration of utility model

Ref document number: 5902175

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250