まず基本から:

まず基本から:

グラフィック カードの高速化のために IronHide 経由で Wi​​ndows VM を実行できるかどうか、ご存知ですか? ビデオ カードを利用してゲームをしたり、ブルーレイを観たりしたいのですが。

答え1

おそらく、仮想ゲストのグラフィックスと実際のホスト 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の曖昧な世界では、ゲスト追加手動でインストールできます(または11.10では騎手検出され、インストールを推奨される) は、追加のカーネル モジュール (または Windows ゲストのデバイス ドライバー) をインストールして、ゲスト O/S がホスト O/S グラフィックスに拡張アクセスできるようにします。これも直接のマッピングではありませんが、3D アクセラレーション グラフィックスを表示できます。

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

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

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

VirtualBox の設定で、ビデオ カード メモリと 3D グラフィック カードの設定を変更する必要があります。ゲスト O/S は、128 MB RAM の「3D アクセラレーション カード」を認識するようになります。ホスト グラフィック カードがこれより高性能であっても問題ありません。ゲスト O/S は、この「単純な」抽象化された仮想グラフィック カードのみを認識することになります。

WindowsゲストOSを使用しているとのことなので、2Dチェックボックスはあなたにも適用できます。パススループログラミング インターフェイス呼び出しが実行されます。

Bumblebee/IronHide は、どちらか一方のグラフィック切り替えメカニズムです。つまり、統合グラフィックまたはより大容量の NVidia/ATI グラフィックのいずれかを使用しますが、両方を同時に使用することはできません。

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

ソース

答え2

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

新しいプロセッサの中には、I/O MMU 仮想化をサポートするものもあります。このテクノロジは、Intel 版では Intel VT-d、AMD 版では AMD-Vi と呼ばれています。x86 仮想化に関する Wikipedia の記事を引用します。

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 つの考えは、ゲストの実行中にホストをグラフィックスなしで実行できる場合、これを機能させることができるということですが、実際にどのように実行するかは不明です。

答え3

はい、興味があったのでこれを試してみました。

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

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

sarang が疑うのは正しい。どうやら、nvidia チップはモニターを駆動する「ディスプレイ アダプタ」ではなく、統合された Intel チップのアクセラレータにすぎないようだ。これらは 2 つの別々のデバイスとして独立して機能しているようには見えない。

答え4

https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28

場合によっては、DGPU をパススルーすることが可能です (上記リンクを参照)。私は、Ubuntu ホストから Windows10 ゲストにパススルーされた Quadro m5000m DGPU を搭載した Dell 7710 でこれを管理しました。

ただし、私の知る限り、このカードからの出力をハードウェア経由でメインのラップトップ画面に表示することはできません。現時点では、Looking Glass がおそらく最良の選択肢であり、次にホーム ストリーミング/RDP などで Steam が続くと思います。

多重化ラップトップで Mux を制御して、IGPU と DGPU を自由に切り替えることができない理由を知りたいです。VGA Switcheroo 経由でこれを試みましたが、DPU を経由してゲスト OS に渡す前であっても、mux をまったく制御できませんでした。

おそらく、Mux のないラップトップでは、どの GPU がフレーム バッファーのどのビットに書き込むかを制御するために、少なくともゲストとホスト間の通信が必要になるため、より困難になると思います。私の理解を超えています。

関連情報