NVidia-GPU von VirtualBox verwenden?

NVidia-GPU von VirtualBox verwenden?

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

Host-Setup:

  • Windows 7 x64

  • NVidia Optimus

  • InNVIDIA-SystemsteuerungIch habe explizit ausgewähltLeistungsstarker NVIDIA-Prozessor 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 tatsächlich nicht verwendet.

Gast:

  • Windows 7 x64 (also dasselbe wie Host)

  • GastbeiträgeEingerichtet

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

  • WasNashorn, eine OpenGL-fähige Anwendung meldet 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.

Antwort1

Mir ist klar, dass ein paar Jahre vergangen sind, aber ich wollte antworten, da dieser Beitrag ziemlich weit oben angezeigt wird, wenn man nach „Virtualbox 3D mehrere GPU“ googelt. In der Zwischenzeit sind die Dinge viel einfacher und besser geworden.

Leute, die über diesen Thread stolpern, landen wahrscheinlich hier, weil sie einen Laptop oder PC mit zwei GPUs haben, was heutzutage recht üblich ist – insbesondere bei Gaming-Laptops. Die integrierte Intel-GPU wird zum Rendern von Fenstern und allgemeinen Anwendungen verwendet, aber Anwendungen, die die GPU-3D-Funktionalität nutzen, sollten dies über die leistungsstärkere Nvidia-GPU tun.

Heute habe ich auf meinem Laptop eine Ubuntu-VM erstellt, um plattformübergreifende Entwicklung durchzuführen. Alles war in Ordnung, außer dass die Gast-VM extrem langsam war. Dafür gab es keine Erklärung, da CPU, Speicher und Festplatte alle eine geringe Auslastung zeigten.

Es dauerte nicht lange, bis klar wurde, dass das Problem an der Videoleistung lag. Beim Starten von Anwendungen und beim Maximieren/Minimieren von Fenstern – also bei allem, was wir im Jahr 2019 für selbstverständlich halten, aber 3D-Beschleunigung benötigt, um mit einer vernünftigen Geschwindigkeit zu funktionieren – wurde GPU 0 verwendet.

Dies war leicht festzustellen, da Windows 10 nun die Möglichkeit bietet, die GPU-Auslastung über den „Task-Manager“ und dann über die Registerkarte „Leistung“ anzuzeigen. Und ich konnte sehen, dass beim Verschieben, Maximieren und Minimieren von Fenstern dies über die GPU auf dem Host erfolgte. Diese GPU auf dem Host ist die integrierte Intel HD GPU, und ich wollte die NVidia GTX-1050ti verwenden, die GPU1 war.

Nach einigem Suchen habe ich nirgends eine Stelle gefunden, an der man angeben kann, welche GPU verwendet werden soll. 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“ auswählen muss.

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 durchsuchen, auf dem sich Ihre Virtualbox-Installation befindet. Nachdem Sie sie hinzugefügt haben, stellen Sie in den folgenden Einstellungen sicher, dass Punkt 2. „Wählen Sie den bevorzugten Grafikprozessor für dieses Programm aus“ auf die GPU eingestellt ist, die verwendet werden soll, was in meinem Fall „Hochleistungs-NVIDIA-Prozessor“ war.

Stellen Sie es nicht auf Automatisch und schon gar nicht auf Integriert ein. Natürlich müssen die VM-Einstellungen mit dem Kontrollkästchen 3D-Beschleunigung festgelegt sein und die Gasterweiterungen müssen auf dem Host installiert sein. Sobald Sie jedoch die 3D-Videoeinstellungen des Hosts wie oben beschrieben festgelegt haben, fahren Sie die Gast-VM herunter, beenden Sie VirtualBox und starten Sie VirtualBox und die VM neu.

Wenn Sie den Task-Manager|die Leistung verwenden und den Prozess „Virtualbox Manager“ betrachten und beobachten, welche GPU verwendet wird, wenn Sie durch die Benutzeroberfläche der Gast-VM navigieren, sollten Sie sehen, dass jetzt die bessere GPU verwendet wird. Siehe das unten eingefügte Bild.

Erwarten Sie dennoch nicht, dass Sie Spiele in einer Gast-VM ausführen können. 3D-Beschleunigungs-Passthrough ist noch nicht so weit fortgeschritten. Sie können jedoch davon ausgehen, dass Ihr Gast ein modernes Betriebssystem und eine moderne Benutzeroberfläche hat und eine akzeptable Erfahrung macht. Man könnte ältere Spiele in der Gast-VM spielen, wie alles, was auf DirectX9 basiert. Leider entwickelt sich die 3D-Gaming-Technologie schneller, während die Fähigkeit zur Virtualisierung von GPUs voranschreitet.

Bildschirmfoto

Antwort2

Dem Gast vollen GPU-Zugriff zu gewähren, ist wahrscheinlich nicht möglich. Wenn eine virtuelle Maschine direkten Zugriff auf Ihre GPU hätte, während Ihr Host sie verwendet, würden schlimme Dinge passieren , da die gemeinsame Nutzung von Speicher zwischen zwei effektiv unterschiedlichen Computern nicht möglich ist; Zeiger, Adressen und dergleichen wären bei beiden sehr unterschiedlich. (Keine für Verbraucher erhältliche Karte unterstützt die gleichzeitige Bedienung von zwei Computern.)

Es gibt jedoch einige Dinge, die Sie ausprobieren können. Stellen Sie zunächst in der NVidia-Systemsteuerung Ihren bevorzugten Grafikprozessor auf den richtigen ein (3D-Einstellungen3D-Einstellungen verwaltenBevorzugter Grafikprozessor). Das könnte dazu führen, dass VirtualBox die NVidia-Karte für OpenGL verwendet.

Wenn das nicht hilft, versuchen SieInstallieren von Gasterweiterungen im abgesicherten Modusauf den Gast.

Endlich,auf Linux-HostsSie können versuchen, die GPU an die virtuelle Maschine weiterzuleiten, aber das funktioniert nur mit PCI-Karten und ich konnte nicht herausfinden, ob Ihre Karte PCI ist. Trotzdem besteht eine gute Chance, dass Sie die GPU vom Host trennen oder andere Probleme verursachen. Suchen Sie zuerst die PCI-Adresse (Bus, Gerät und Funktion) für die funktionierende Karte. Stellen Sie den Chipsatz Ihrer VM auf ICH9 ein; das hat bei meinem Versuch nicht sofort etwas kaputt gemacht. Verwenden Sie dann das Dienstprogramm VBoxManage, um die Karte anzuschließen:

vboxmanage modifyvm "Your VM Name" --pciattach BB:DD.F@bb:dd.f

Ersetzen Sie Your VM Namenach Bedarf. BBist die Busnummer Ihrer GPU auf dem Host; DDist das Gerät; Fist die Funktion. Geben Sie nach dem @den PCI-Steckplatz ein, in dem sie sich auf dem Gast befinden wird. Beispiel:

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

Im Allgemeinen ist GPU-Passthrough auf einem Linux-Host wahrscheinlicher möglich. SieheSo richten Sie eine Spielkonsole mit GPU-Passthrough ein.

verwandte Informationen