IronHide / BumbleBee mit einer VirtualBox-VM. Wird es durch Videobeschleunigung auf die physische Karte übertragen?

8

Irgendwelche Ideen, ob Sie eine Windows-VM über IronHide zur Beschleunigung von Grafikkarten ausführen können? Ich möchte mit meiner Grafikkarte Spiele spielen / Unschärfe usw. ansehen.

mwjackson
quelle
1
Ich habe erfolgreich eine Windows VM mit Hummel ausgeführt, aber ohne sichtbaren Effekt suchen Sie nach etwas Spezifischerem?
David.Libremone
1
Nun, ich würde gerne wissen, ob Virtualbox die Videobeschleunigung von der Windows-VM durchlaufen würde, um Spiele zu spielen /
Unschärfe zu
1
Ich habe vor, das irgendwann selbst zu testen. Ich werde Sie über die Ergebnisse informieren, wenn jemand anderes nicht zuerst antwortet - vielleicht passen Sie Ihre Frage genauer an?
David.Libremone
Ich bin ein bisschen verwirrt mit dem, was Sie gefragt haben. Möchten Sie, dass die VM die NVIDIA-GPU für ihre 3D-Beschleunigung verwendet? , wie direkter Zugriff auf die Grafikhardware über die VM?.
Uri Herrera
1
@jacko Sie möchten dies vielleicht auf forums.virtualbox.org
david.libremone

Antworten:

9

Vielleicht hilft hier eine Erklärung zwischen Grafiken in einem virtuellen Gast und dem tatsächlichen Host-Betriebssystem.

Zuerst die Grundlagen:

Alles in einem virtuellen Gast ist eine Abstraktion. Dies bedeutet, dass jedes Gerät und jeder Treiber in einem virtuellen Gast-Betriebssystem nicht vom tatsächlichen Host-Gerät und Treiber abhängt.

Um Ihnen ein einfaches Beispiel zu geben. Eine Maus wird als ein bestimmtes Gerät angesehen - der Linux-Kernel sieht dieses Gerät und ermöglicht dem Gastbetriebssystem, dieses Gerät zu verwenden. Dieses "virtuelle Gerät" wird vom Virtualisierungstool - VirtualBox, VMWare, Xen usw. - dem realen physischen Gerät zugeordnet. Somit muss das Gastbetriebssystem nie verstehen, was die physische Maus ist, sondern nur sehen, was das Virtualisierungstool ihr zugeordnet hat . Der Vorteil dieses Ansatzes besteht darin, dass Sie den virtuellen Gast auf verschiedene Hosts verschieben können. Er funktioniert auf die gleiche Weise, da keine direkte Abhängigkeit vom Host selbst besteht.

Um dies in der Praxis zu zeigen, können Sie lsusbsowohl auf dem Host als auch auf dem Gast ausgeführt werden. Auf meinem Host verfügt O / SI über die folgenden USB-Geräte:

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

Auf meinem Gast sieht oneiric O / SI die folgenden USB-Geräte - diese unterscheiden sich vom Host:

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

Jedes Gast-Betriebssystem, ob Windows oder Linux, sieht nur dieses virtuelle Gastgerät.

Hostgrafiken gegen Gastgrafiken

Dies gilt auch für Grafiken.

Meine Hostgrafiken sind:

 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)

Auf meinem Gast-Oneiric-Betriebssystem wird die folgende Grafikkarte angezeigt - Sie können sehen, dass sie nicht mit dem Host identisch ist:

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

Ebenso - ein Windows-Gastbetreiber sieht nur ein ähnliches virtuelles Gastgerät.

In der trüben Welt von VirtualBox installieren die Guest Additions, die Sie manuell installieren können (oder in 11.10 - Jockey sieht und empfiehlt die Installation), zusätzliche Kernelmodule (oder Gerätetreiber für Windows-Gäste), um dem Gastbetreiber einen erweiterten Zugriff zu ermöglichen Ihre Host-O / S-Grafiken. Auch hier handelt es sich nicht um eine direkte Zuordnung, sondern um die Anzeige von 3D-beschleunigten Grafiken.

Wenn eine Anwendung in Ihrer virtuellen Maschine 3D-Funktionen über die OpenGL-Programmierschnittstelle (oder für ein Windows-Gastbetriebssystem - seine DirectX-Aufrufe) verwendet, versucht VirtualBox, die Funktionen Ihres Hosts zu verwenden, anstatt sie in Software zu emulieren (was langsam wäre) 3D-Hardware.

Ich betone erneut, dass das Gast-Betriebssystem Ihre eigentliche Grafikkarte nicht sieht, sondern nur den OpenGL- (oder DirectX-) Anruf vom Gast direkt an die Host-Hardware weiterleitet, um sie zu verarbeiten.

Geben Sie hier die Bildbeschreibung ein

In den VirtualBox-Einstellungen sollten Sie den Grafikkartenspeicher und die 3D-Grafikkarteneinstellung ändern. Ihr Gastbetreiber sieht dann eine "3D Accelerated Card" mit 128 MB RAM. Es spielt keine Rolle, ob Ihre Host-Grafikkarte besser als diese ist - Ihr Gastbetreiber sieht nur diese "einfache" abstrahierte virtuelle Grafikkarte.

Da Sie erwähnt haben, dass Sie ein Windows Guest-Betriebssystem verwenden, gilt das Kontrollkästchen 2D für Sie, da eine ähnliche Weitergabe von Programmierschnittstellenaufrufen durchgeführt wird.

Bumblebee / IronHide ist ein entweder / oder Grafik-Schaltmechanismus - Sie verwenden entweder integrierte Grafik oder NVidia / ATI-Grafik mit höherer Kapazität, aber nicht beide gleichzeitig.

Da die OpenGL- (oder DirectX-) Fähigkeit der höher umschaltbaren Grafik größer ist als die des integrierten Chipsatzes, werden Sie bei grafikintensiven Guest O / S-Anwendungen eine relativ verbesserte Grafikleistung feststellen. Diese Verbesserung ist jedoch nicht so dramatisch wie das native Ausführen derselben Anwendung auf dem Host, da sie immer noch unter den Einschränkungen des virtuellen Gastgrafikgeräts mit 128 MB funktioniert.

Quelle

Fossfreiheit
quelle
Ergänzung: Wir können derzeit keine Hummeln (Rendern auf einer NVIDIA-Karte) in virtuellen Maschinen ausführen, da sowohl VMware als auch VirtualBox benötigen, dass ihre Binärdateien auf Funktion eingestellt sind.
Allquixotic
5

Eine Antwort über https://askubuntu.com/a/85138/38052 erklärt, wie alles, was der Gastbetreiber sieht, eine Art Abstraktion ist. Während dies früher völlig wahr war, glaube ich, dass sich die Dinge ändern und es möglicherweise nicht mehr ganz wahr ist.

Einige neuere Prozessoren unterstützen auch die E / A-MMU-Virtualisierung. Die Technologien heißen Intel VT-d für die Intel-Version und AMD-Vi für die AMD-Version. So zitieren Sie den Wikipedia-Artikel zur x86-Virtualisierung:

Intels I / O-MMU-Virtualisierung (AMD-Vi und VT-d) Hauptartikel: IOMMU

Eine IOMMU (Input / Output Memory Management Unit) ermöglicht es virtuellen Gastmaschinen, Peripheriegeräte wie Ethernet, beschleunigte Grafikkarten und Festplattencontroller über DMA und Interrupt-Remapping direkt zu verwenden. Dies wird manchmal als PCI-Passthrough bezeichnet. Sowohl AMD als auch Intel haben Spezifikationen veröffentlicht:

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

Das klingt ziemlich interessant, aber ich kann bereits einige Probleme vorhersehen. Zum einen rendert der Intel IGP in Optimus-Laptops immer die endgültige Bildschirmausgabe. Mir ist nicht klar, wie das Guest O / S und das Host O / S das IGP steuern werden. Ein Gedanke ist, dass, wenn es möglich ist, den Host ohne Grafiken auszuführen, während Gäste ausgeführt werden, dies funktionieren könnte, aber mir ist unklar, wie man dies tatsächlich tun würde.

Sarang
quelle
1

OK, ich war neugierig, also habe ich es versucht.

QEMU und jetzt VirtualBox unterstützen die Weitergabe von PCI-Geräten an den Gastcomputer. Das heißt, wenn Sie eine zweite Grafikkarte haben, können Sie diese an einen Windows-Gast auf einem Linux-Host weitergeben und in einer virtualisierten Windows-Umgebung die volle 3D-Leistung (Spiele) erhalten. Dies ist bei einem Desktop-Rig mit zwei Grafikkarten der Fall. Der Geräte-Manager würde "NVIDIA GTX ... was auch immer" anzeigen, anstatt "Virualbox Graphics Adapter" zu sagen.

Optimus ist immer komplizierter. Ich teste dies auf einem ASUS UX501. Ich konnte den NVidia-Chip an den Windows-Gast weitergeben und er wird im Geräte-Manager als "3D-Video-Controller" angezeigt. Ich konnte jedoch keine Windows-Treiber installieren, um dies zu unterstützen. Das Vorhandensein der Intel-Grafiken scheint eine Voraussetzung zu sein.

Sarang hatte Recht, misstrauisch zu sein. Es sieht so aus, als wäre der NVIDIA-Chip kein "Display-Adapter", wie er einen Monitor antreiben würde, sondern nur ein Beschleuniger für den integrierten Intel-Chip. Sie scheinen nicht als zwei separate Geräte unabhängig voneinander zu funktionieren.

Mathew Hart
quelle