Wie bringe ich den VirtualBox-Gast dazu, die NVidia-Grafiken zu verwenden?
Host-Setup:
Windows 7 x64
NVidia Optimus
In der NVIDIA-Systemsteuerung habe ich den Hochleistungs-NVIDIA-Prozessor explizit ausgewählt für:
C:\Program Files\oracle\VirtualBox\VirtualBox.exe C:\Program Files\Oracle\VirtualBox\VBoxSVC.exe
Wenn VirtualBox ausgeführt wird, wird es von der NVidia-Software nicht als Anwendung aufgeführt, die die NVidia-GPU verwendet. Daher gehe ich davon aus, dass VirtualBox die Nvidia-GPU in der Tat nicht verwendet.
Gast:
Windows 7 x64 (dh dasselbe wie der Host)
Gastzusätze installiert
3D-Beschleunigung in den VirtualBox-Einstellungen aktiviert: Anzeige / Video / 3D-Beschleunigung aktivieren
Was Rhinoceros , eine OpenGL-fähige Anwendung, als Videoadapter meldet:
Humper Chromium OpenGL version: 2.1 Chromium 1.9 Render version: 2.0 Shading Language: 1.40 - Intel Build 9.17.10.3517 Driver Date: NA Driver Version: NA Maximum Texture size: 8192 x 8192 Z-Buffer depth: 32bits Maximum Viewport size: 8192 x 8192 Total Video Memory: 64 MB
Für mich sieht es so aus, als ob die virtuelle Maschine die 3D-Hardwarebeschleunigung des Hosts verwendet, aber leider die von Intel.
Antworten:
Mir ist klar, dass ein paar Jahre vergangen sind, aber ich wollte antworten, da dieser Beitrag ziemlich hoch erscheint, wenn Sie nach "virtualbox 3d multiple GPU" googeln. In der vergangenen Zeit sind die Dinge viel einfacher und besser geworden.
Leute, die über diesen Thread stolpern, werden wahrscheinlich hier landen, weil sie einen Laptop oder PC mit zwei GPUs haben, was heutzutage sehr verbreitet ist - besonders bei Gaming-Laptops. Die integrierte Intel-GPU wird zum Rendern von Fenstern und allgemeinen Anwendungen verwendet. Anwendungen, die die GPU-3D-Funktionalität verwenden, sollten dies jedoch über die leistungsstärkere Nvidia-GPU tun.
Heute habe ich eine Ubuntu-VM auf meinem Laptop erstellt, um eine plattformübergreifende Entwicklung durchzuführen. Bis auf die extrem langsame Gast-VM war alles in Ordnung, und es gab keine Erklärung dafür, da CPU, Arbeitsspeicher und Festplatte alle eine geringe Auslastung aufwiesen.
Es dauerte nicht lange, um herauszufinden, dass die Videoleistung das Problem verursachte. Das Starten von Anwendungen, das Maximieren / Minimieren von Fenstern - alles, was wir 2019 für selbstverständlich hielten, aber eine 3D-Beschleunigung benötigen, um mit einer angemessenen Geschwindigkeit zu arbeiten - verwendete GPU 0.
Dies konnte leicht festgestellt werden, da Windows 10 jetzt die Möglichkeit hat, die GPU-Auslastung mithilfe des "Task-Managers" und anschließend der Registerkarte "Leistung" anzuzeigen. Und ich konnte sehen, wie ich Fenster bewegte, maximierte und minimierte, die über die GPU auf dem Host ausgeführt wurden. Diese GPU auf dem Host ist die integrierte Intel HD GPU, und ich wollte die NVidia GTX-1050ti verwenden, bei der es sich um die GPU1 handelte.
Nach dem Durchsuchen habe ich nicht wirklich irgendwo einen Ort gefunden, an dem Sie die zu verwendende GPU angeben können. Aber dieser Thread und einige andere haben mich daran erinnert, dass Sie bei solchen Setups in die NVidia-Systemsteuerung gehen müssen, dann "3d-Einstellungen verwalten" und dann die Registerkarte "Programmeinstellungen".
Sie werden "Virtualbox" wahrscheinlich nicht in der Liste finden. Sie können jedoch auf die Schaltfläche "Hinzufügen" klicken und virtualbox.exe hinzufügen. Möglicherweise müssen Sie das Laufwerk / den Pfad angeben, auf dem sich Ihre Virtualbox-Installation befindet. Stellen Sie nach dem Hinzufügen sicher, dass in den folgenden Einstellungen Punkt 2 ausgewählt ist. "Wählen Sie den bevorzugten Grafikprozessor für dieses Programm aus" ist auf die GPU eingestellt, die verwendet werden soll, in meinem Fall "Hochleistungs-NVIDIA-Prozessor". .
Stellen Sie es nicht auf auto und schon gar nicht auf integrated ein. Natürlich müssen Sie die VM-Einstellungen mit aktiviertem 3D-Beschleunigungsfeld festlegen und die Gastzusätze auf dem Host installieren. Nachdem Sie die Einstellungen für Host-Video-3D wie oben beschrieben festgelegt haben, fahren Sie die Gast-VM herunter, beenden Sie die virtuelle Box und starten Sie anschließend die virtuelle Box und die VM neu.
Wenn Sie task manager | performacne verwenden und den Prozess "virtualbox manager" betrachten und beobachten, welche GPU verwendet wird, wenn Sie in der Benutzeroberfläche der Gast-VM navigieren, sollten Sie feststellen, dass diese jetzt die bessere GPU verwendet. Siehe das Bild unten eingefügt.
Erwarten Sie jedoch nicht, dass Sie Spiele auf einer Gast-VM ausführen können. Die 3D-Beschleunigung ist noch nicht ganz so weit. Sie können jedoch erwarten, dass Ihr Gast ein modernes Betriebssystem und eine moderne Benutzeroberfläche hat und dass Sie eine akzeptable Erfahrung machen. Man könnte ältere Spiele in der Gast-VM spielen, wie alles, was auf DirectX9 basiert. Leider entwickelt sich die 3D-Gaming-Technologie mit der Entwicklung der Fähigkeit zur Virtualisierung der GPU schneller.
quelle
Es ist wahrscheinlich nicht möglich, dem Gast vollständigen GPU-Zugriff zu gewähren. Wenn eine virtuelle Maschine direkten Zugriff auf Ihre GPU hatte, während Ihr Host sie verwendete, würde Bad Things TM passieren, da die gemeinsame Nutzung des Speichers zwischen zwei effektiv verschiedenen Computern keine Sache ist. Zeiger und Adressen und so weiter wären sehr unterschiedlich zwischen ihnen. (Keine für Endverbraucher verfügbare Karte unterstützt die gleichzeitige Wartung von zwei Computern.)
Es gibt jedoch einige Dinge, die Sie ausprobieren können. Stellen Sie zunächst Ihren bevorzugten Grafikprozessor in der NVidia-Systemsteuerung auf den guten ein ( 3D-Einstellungen → 3D-Einstellungen verwalten → Bevorzugter Grafikprozessor ). Das könnte dazu führen, dass VirtualBox mit der NVidia-Karte für OpenGL läuft.
Wenn dies nicht hilft, versuchen Sie , Guest Additions im abgesicherten Modus auf dem Gast zu installieren .
Schließlich auf Linux - Hosts , können Sie versuchen , die GPU durch dem die virtuelle Maschine passieren, aber das wird nur Arbeit für PCI - Karten , und ich war nicht in der Lage zu finden , ob Ihr PCI ist, und auch so, haben Sie eine gute Chance, Rippen Sie die GPU vom Host weg oder verursachen Sie andere Probleme. Finden Sie zuerst die PCI-Adresse (Bus, Gerät und Funktion) für die gute Karte. Stellen Sie den Chipsatz Ihrer VM auf ICH9 ein. Das hat nichts sofort kaputt gemacht, als ich es ausprobiert habe. Verwenden Sie dann das VBoxManage-Dienstprogramm, um die Karte anzuhängen:
Bei
Your VM Name
Bedarf ersetzen .BB
ist die Busnummer Ihrer GPU auf dem Host;DD
ist das Gerät;F
ist die Funktion. Nach dem@
dem PCI - Steckplatz, geben Sie , dass es auf dem Gast sein wird. Beispielsweise:Im Allgemeinen ist GPU-Passthrough auf einem Linux-Host mit höherer Wahrscheinlichkeit möglich. Siehe So richten Sie einen Spielcomputer mit GPU-Passthrough ein .
quelle