it-swarm.com.de

NVidia-GPU von VirtualBox verwenden?

Wie bringe ich den VirtualBox-Gast dazu, die NVidia-Grafiken zu verwenden?

Host-Setup:

  • Windows 7 x64

  • NVidia Optimus

  • In NVIDIA Control Panel habe ich explizit Hochleistungs-NVIDIA-Prozessor 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 (d. H. Dasselbe wie Host)

  • Guest Additions installiert

  • 3D-Beschleunigung in den VirtualBox-Einstellungen aktiviert: Anzeige/Video/3D-Beschleunigung aktivieren

  • Was Rhinoceros , meldet eine OpenGL-fähige Anwendung als Videoadapter:

    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.

23
feklee

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 - insbesondere 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 ein Ubuntu VM auf meinem Laptop erstellt, um eine plattformübergreifende Entwicklung durchzuführen. Bis auf den Gast VM war alles in Ordnung, und es gab keine Erklärung dafür da CPU, Speicher 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 war leicht festzustellen, 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 man bei solchen Setups in die NVidia-Systemsteuerung gehen muss, 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 angekreuztem 3D-Beschleunigungsfeld vornehmen und die Gastzusätze auf dem Host installieren. Nachdem Sie die Host-Video-3D-Einstellungen wie oben beschrieben vorgenommen 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 beim Navigieren in der Benutzeroberfläche der Gast-VM verwendet wird, 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.

Screenshot

13
Thomas Carlisle

Es ist wahrscheinlich nicht möglich, dem Gast vollständigen GPU-Zugriff zu gewähren. Wenn eine virtuelle Maschine während der Verwendung durch Ihren Host direkten Zugriff auf Ihre GPU hatte, lautet die Meldung "Bad Things" (Böse Dinge)TM würde passieren, weil das Teilen 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 in der NVidia-Systemsteuerung 3D-Einstellungen 3D-Einstellungen verwalten Bevorzugt den richtigen Grafikprozessor ein Grafikprozessor ). Das könnte dazu führen, dass VirtualBox mit der NVidia-Karte für OpenGL läuft.

Wenn dies nicht hilft, versuchen Sie , die Guest Additions im abgesicherten Modus auf dem Gast zu installieren.

Schließlich können Sie auf Linux-Hosts versuchen, die GPU an die virtuelle Maschine weiterzuleiten. Dies funktioniert jedoch nur für PCI-Karten, und ich konnte nicht feststellen, ob Ihre PCI ist. und trotzdem haben Sie eine gute Chance, die GPU vom Host zu entfernen oder andere Probleme zu verursachen. 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. Dies hat nichts sofort kaputt gemacht, als ich es versuchte. Verwenden Sie dann das VBoxManage-Dienstprogramm, um die Karte anzuhängen:

vboxmanage modifyvm "Your VM Name" --pciattach BB:[email protected]:dd.f

Ersetzen Sie Your VM Name entsprechend. BB ist die Busnummer Ihrer GPU auf dem Host. DD ist das Gerät; F ist die Funktion. Geben Sie nach dem @ den PCI-Steckplatz ein, der sich auf dem Gast befinden soll. Zum Beispiel:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:[email protected]

Im Allgemeinen ist ein GPU-Passthrough auf einem Linux-Host mit größerer Wahrscheinlichkeit möglich. Siehe Einrichten eines Spielautomaten mit GPU-Passthrough .

16
Ben N