VirtualBox VMを備えたIronHide / BumbleBee。物理カードへのビデオアクセラレーションを通過しますか?


8

グラフィックカードアクセラレーション用のIronHideを介してWindows VMを実行できるかどうかのアイデアはありますか?ビデオカードを使ってゲームをしたり、ブルーレイなどを見たいのですが。


1
マルハナバチでWindows VMを正常に実行しましたが、目に見える効果はありませんが、もっと具体的なものを探していますか?
david.libremone

1
まあ、virtualboxがWindows VMからビデオアクセラレーションを通過してゲームをプレイしたり、ぼかしを観たりするのかどうか知りたい
mwjackson

1
私はいつか自分でテストすることを計画しています。他の誰かが最初に答えない場合の結果をお知らせします-おそらくあなたの質問をより具体的になるように調整しますか?
david.libremone

3DアクセラレーションのためにVMがnvidia GPUを使用するようにしたいですか?、VMを介してグラフィックハードウェアに直接アクセスするようなものですか?
Uri Herrera

回答:


9

おそらく、仮想ゲストのグラフィックと実際のホストのO / Sの間の説明が役立つでしょう。

まず基本:

仮想ゲストのすべては抽象的です。つまり、仮想ゲストO / Sのすべてのデバイスとドライバーは、実際のホストデバイスとドライバーに依存しないということです。

簡単な例を示します。マウスは特定のデバイスとして認識されます。Linuxカーネルはこのデバイスを認識し、ゲストオペレーティングシステムがそのデバイスを使用できるようにします。この「仮想デバイス」は、仮想化ツール(VirtualBox、VMWare、Xenなど)によって実際の物理デバイスにマップされます。したがって、ゲストオペレーティングシステムは、物理マウスが何であるかを理解する必要はなく、仮想化ツールがマップしたものだけを表示します。 。このアプローチの価値は、仮想ゲストを別のホストに移動できることです。ホスト自体に直接依存しないため、同じように動作します。

これを実際に示すlsusbには、ホストとゲストの両方で実行できます。私のホストでは、O / SIに次のUSBデバイスがあります。

Bus 002 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 003: ID 0402:9665 ALi Corp. 
Bus 001 Device 002: ID 8087:0020 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

私のゲストでは、oneiric O / SIは次のUSBデバイスを見ることができます-これらはホストとは異なります:

Bus 001 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 002: ID 80ee:0021 VirtualBox USB Tablet

WindowsまたはLinuxのいずれのゲストO / Sも、この仮想ゲストデバイスのみを認識します。

ホストグラフィックスとゲストグラフィックス

グラフィックについても同じです。

私のホストグラフィックは:

 sudo lshw -class display
  *-display               
       description: VGA compatible controller
       product: Core Processor Integrated Graphics Controller
       vendor: Intel Corporation
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 18
       width: 64 bits
       clock: 33MHz
       capabilities: msi pm vga_controller bus_master cap_list rom
       configuration: driver=i915 latency=0
       resources: irq:41 memory:90000000-903fffff memory:80000000-8fffffff ioport:3050(size=8)

私のゲストoneiric O / Sでは、次のグラフィックカードを見ることができます-それはホストと同じではないことがわかります。

sudo lshw -class display
  *-display UNCLAIMED     
       description: VGA compatible controller
       product: VirtualBox Graphics Adapter
       vendor: InnoTek Systemberatung GmbH
       physical id: 2
       bus info: pci@0000:00:02.0
       version: 00
       width: 32 bits
       clock: 33MHz
       capabilities: vga_controller bus_master
       configuration: latency=64
       resources: memory:e0000000-e7ffffff

同様に、WindowsゲストO / Sには、類似した仮想ゲストデバイスのみが表示されます。

VirtualBoxは、の暗い世界ではGuest Additionsの手動インストール(または11.10で-することができ騎手が見て、あなたがそれをインストールすることをお勧めし)へのゲストO / S強化のアクセスを許可する(Windowsゲスト用やデバイスドライバ)追加のカーネルモジュールをインストールしますホストのO / Sグラフィック。繰り返しになりますが、直接的なマッピングではありませんが、3Dアクセラレートされたグラフィックを表示できます。

仮想マシン内のアプリケーションがOpenGLプログラミングインターフェイス(またはWindowsゲストO / Sの場合、DirectX呼び出し)を介して3D機能を使用する場合、ソフトウェアでそれらをエミュレートするのではなく(遅い)、VirtualBoxはホストの3Dハードウェア。

もう一度強調しますが、ゲストO / Sは実際のグラフィックカードを認識しません。ゲストからOpenGL(またはDirectX)呼び出しを直接ホストハードウェアに渡して処理するだけです。

ここに画像の説明を入力してください

VirtualBox設定では、ビデオカードのメモリと3Dグラフィックカードの設定を変更する必要があります。ゲストO / Sには、128Mb RAMの「3D高速化カード」が表示されます。ホストグラフィックスカードがこれより優れているかどうかは問題ではありません。ゲストのO / Sには、この「単純な」抽象化された仮想グラフィックスカードのみが表示されます。

WindowsゲストO / Sを使用しているとのことですが、プログラミングインターフェイスコールの同様のパススルーが実行されるため、2Dチェックボックスを使用できます。

Bumblebee / IronHideは、グラフィックスの切り替えメカニズムです。統合グラフィックスまたは大容量のNVidia / ATIグラフィックスを同時に使用することはできません。

上位の切り替え可能なグラフィックスのOpenGL(またはDirectX)機能は、統合チップセットよりも優れているため、ゲストO / Sグラフィックスを多用するアプリケーションでは、グラフィックスのパフォーマンスが比較的向上します。ただし、128 MBの仮想ゲストグラフィックスデバイスの制約内で動作しているため、この改善はホスト上で同じアプリケーションをネイティブに実行するほど劇的ではありません。

ソース


さらに、VMwareとVirtualBoxの両方でバイナリを動作させるにはsetuidが必要であるため、現時点では仮想マシンでバンブルビー(nvidiaカードでレンダリング)を実行できません。
allquixotic

5

上記のhttps://askubuntu.com/a/85138/38052の回答は、ゲストO / Sが見るすべてのものがある種の抽象化であると説明しています。以前は完全に真実でしたが、状況は変化しており、もはや完全に真実ではない可能性があります。

一部の新しいプロセッサは、I / O MMU仮想化もサポートしています。テクノロジは、IntelのバージョンではIntel VT-d、AMDのバージョンではAMD-Viと呼ばれます。x86仮想化に関するウィキペディアの記事を引用するには:

IntelのI / O MMU仮想化(AMD-ViおよびVT-d)主な記事:IOMMU

入出力メモリ管理ユニット(IOMMU)により、ゲスト仮想マシンは、DMAおよび割り込み再マッピングを介して、イーサネット、アクセラレートグラフィックスカード、ハードドライブコントローラーなどの周辺デバイスを直接使用できます。これは、PCIパススルーと呼ばれることもあります。AMDとIntelの両方が仕様をリリースしました:

AMD's I/O Virtualization Technology, "AMD-Vi", originally called "IOMMU".
Intel's "Virtualization Technology for Directed I/O" (VT-d).

これはかなり興味深いように思えますが、私はすでにいくつかの問題を予測することができます。まず、Optimusラップトップでは、Intel IGPが常に最終的な画面出力をレンダリングします。ゲストO / SとホストO / Sの両方がIGPをどのように駆動するかは不明です。ゲストの実行中にグラフィックなしでホストを実行できる場合、これは機能する可能性があると考えられていますが、実際にこれをどのように実行するかは不明です。


1

OK、気になったので試してみました。

QEMUおよびVirtualBoxは、ゲストマシンへのPCIデバイスのパススルーをサポートしています。つまり、2つ目のグラフィックスカードがある場合、それをLinuxホスト上のWindowsゲストに渡し、仮想化されたWindows環境で完全な3Dパフォーマンス(ゲーム)を取得できます。これは、2つのグラフィックカードを備えたデスクトップリグの場合です。デバイスマネージャは、「Virualbox Graphics Adapter」ではなく、「NVIDIA GTX ...何でも」と表示します。

Optimusは常により複雑です。これをASUS UX501でテストしています。NVidiaチップをWindowsゲストに渡すことができ、デバイスマネージャーに「3Dビデオコントローラー」として表示されます。しかし、それをサポートするWindowsドライバーをインストールできませんでした。インテルグラフィックスの存在が前提条件のようです。

サランは疑わしいのは正しかった。nvidiaチップは、モニターを駆動するような「ディスプレイアダプター」ではなく、統合されたIntelチップの単なるアクセラレーターのようです。それらは独立して2つの別個のデバイスとして機能しているようには見えません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.