2014-07-09 20:41:04 +0000 2014-07-09 20:41:04 +0000
30
30

NVidia-GPU von VirtualBox verwenden?

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

Host-Setup:

  • Windows 7 x64

  • NVidia Optimus

  • In der NVIDIA-Systemsteuerung habe ich explizit Hochleistungs-NVIDIA-Prozessorfür ausgewählt:

  • Wenn VirtualBox läuft, dann listet die NVidia-Software sie nicht als Anwendung, die die NVidia-GPU verwendet. Daher gehe ich davon aus, dass VirtualBox die Nvidia-GPU tatsächlich nicht verwendet.

Guest:

  • Windows 7 x64 (d.h. gleich wie der Host)

  • Guest Additions installiert

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

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

Antworten (2)

22
22
22
2019-01-18 20:23:51 +0000

Ich weiß, dass ein paar Jahre vergangen sind, aber ich wollte antworten, da dieser Beitrag ziemlich weit oben erscheint, wenn man nach “virtualbox 3d multiple GPU” googelt. In der Zeit, die vergangen ist, sind die Dinge viel einfacher und besser geworden.

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

Heute habe ich eine Ubuntu-VM auf meinem Laptop erstellt, um plattformübergreifend zu entwickeln, und alles war in Ordnung, außer dass die Gast-VM extrem langsam war, und es gab keine Erklärung dafür, denn CPU, Speicher und Festplatte zeigten alle eine geringe Auslastung an.

Es dauerte nicht lange, um herauszufinden, dass das Problem durch die Videoleistung verursacht wurde. Das Starten von Anwendungen, Maximieren/Minimieren von Fenstern - alles, was wir im Jahr 2019 als selbstverständlich ansehen, aber 3D-Beschleunigung benötigt, um mit einer vernünftigen Geschwindigkeit zu arbeiten - beanspruchte die GPU 0.

Es war einfach, dies festzustellen, da Windows 10 jetzt die Möglichkeit hat, die GPU-Auslastung über den “Task-Manager” und dann die Registerkarte “Leistung” zu sehen. Und ich konnte sehen, wie ich Fenster verschob, maximierte und minimierte, was durch die GPU auf dem Host geschah. Diese GPU auf dem Host ist die integrierte Intel HD GPU, und ich wollte die NVidia GTX-1050ti verwenden, die GPU1 war.

Nachdem ich herumgesucht hatte, fand ich nirgends, wo man angeben konnte, welche GPU man verwenden wollte. Aber dieser Thread und einige andere erinnerten mich daran, dass man bei dieser Art von Setups in die NVidia-Systemsteuerung gehen muss, dann “3d-Einstellungen verwalten”, dann den Reiter “Programmeinstellungen”.

Sie werden “Virtualbox” wahrscheinlich nicht in der Liste finden. Aber Sie können die Schaltfläche “Hinzufügen” drücken und virtualbox.exe hinzufügen. Möglicherweise müssen Sie das Laufwerk/den Pfad, auf dem sich Ihre Virtualbox-Installation befindet, heraussuchen. Wenn Sie es hinzugefügt haben, stellen Sie in den Einstellungen unten sicher, dass Punkt 2. “Wählen Sie den bevorzugten Grafikprozessor für dieses Programm” auf die GPU eingestellt ist, die Sie verwenden möchten, was in meinem Fall “HIgh-performance NVIDIA processor” war.

Stellen Sie es nicht auf auto, und schon gar nicht auf integrated. Natürlich muss in den VM-Einstellungen das Kästchen für die 3D-Beschleunigung aktiviert sein, und die Gast-Erweiterungen müssen auf dem Host installiert sein. Aber wenn Sie die Host-Video-3D-Einstellungen wie oben beschrieben eingestellt haben, fahren Sie die Gast-VM herunter, beenden Sie Virtualbox und starten Sie dann Virtualbox und die VM neu.

Wenn Sie den Task-Manager|Performacne verwenden und sich den “virtualbox manager”-Prozess ansehen und beobachten, welche GPU verwendet wird, wenn Sie in der Benutzeroberfläche der Gast-VM navigieren, sollten Sie sehen, dass sie jetzt die bessere GPU verwendet. Siehe das unten eingefügte Bild.

Erwarten Sie also nicht, dass Sie Spiele in einer Gast-VM ausführen können. Das Durchlaufen der 3D-Beschleunigung ist noch nicht ganz so weit. Aber Sie können erwarten, ein modernes Betriebssystem und UI in Ihrem Gast zu haben und eine akzeptable Erfahrung zu haben. Man wäre in der Lage, ältere Spiele in der Gast-VM zu spielen, wie alles, was auf directX9 basiert. Leider entwickelt sich die 3D-Gaming-Technologie schneller als die Fähigkeit, GPUs zu virtualisieren.

17
17
17
2015-12-31 17:15:00 +0000

Dem Gast vollen Zugriff auf die GPU zu geben, ist wahrscheinlich nicht möglich. Wenn eine virtuelle Maschine direkten Zugriff auf Ihre GPU hätte, während Ihr Host sie nutzt, würden schlimme DingeTM passieren, weil die gemeinsame Nutzung des Speichers zwischen zwei effektiv verschiedenen Computern keine Sache ist; Zeiger und Adressen und was auch immer wären sehr unterschiedlich zwischen ihnen. (Keine im Handel erhältliche Karte unterstützt die gleichzeitige Bedienung von zwei Computern.)

Es gibt jedoch einige Dinge, die Sie versuchen können. Stellen Sie zunächst in der NVidia-Systemsteuerung Ihren bevorzugten Grafikprozessor auf den guten ein (3D-EinstellungenVerwalten von 3D-EinstellungenBevorzugter Grafikprozessor). Das könnte VirtualBox dazu bringen, die NVidia-Karte für OpenGL zu verwenden.

Wenn das nicht hilft, versuchen Sie Installation von Guest Additions im abgesicherten Modus auf dem Gast.

Schließlich können Sie auf Linux-Hosts versuchen, die GPU an die virtuelle Maschine weiterzuleiten, aber das funktioniert nur bei PCI-Karten, und ich konnte nicht herausfinden, ob Ihre Karte PCI ist, und selbst dann besteht eine gute Chance, dass Sie die GPU vom Host wegreißen oder andere Probleme verursachen. Finden Sie zunächst die PCI-Adresse (Bus, Gerät und Funktion) für die gute Karte. Setzen Sie den Chipsatz Ihrer VM auf ICH9; als ich es ausprobierte, hat das 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 Name wie zutreffend. 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, an dem er sich auf dem Gast befindet. Zum Beispiel:

vboxmanage modifyvm "Windows 7 x64" --pciattach 01:00.0@03.01.0

Im Allgemeinen ist GPU-Passthrough eher auf einem Linux-Host möglich. Siehe How to setup a gaming machine with GPU passthrough .