
Irgendwelche Ideen, ob Sie eine Windows-VM über IronHide ausführen können, um die Grafikkarte zu beschleunigen? Ich möchte mit meiner Grafikkarte Spiele spielen/Blu-rays usw. ansehen.
Antwort1
Vielleicht würde hier eine Erklärung zwischen den Grafiken in einem virtuellen Gast und dem tatsächlichen Host-Betriebssystem hilfreich sein.
Zunächst die Grundlagen:
In einem virtuellen Gast ist alles eine Abstraktion. Dies bedeutet, dass die einzelnen Geräte und Treiber in einem virtuellen Gastbetriebssystem nicht vom tatsächlichen Hostgerät und -treiber abhängig sind.
Ein einfaches Beispiel: Eine Maus wird als bestimmtes Gerät angesehen – der Linux-Kernel erkennt dieses Gerät und erlaubt dem Gastbetriebssystem, dieses Gerät zu verwenden. Dieses „virtuelle Gerät“ wird vom Virtualisierungstool – VirtualBox, VMWare, Xen usw. – dem realen physischen Gerät zugeordnet. Das Gastbetriebssystem muss also nie wissen, was die physische Maus ist, es sieht nur, was das Virtualisierungstool ihr zugeordnet hat. Der Vorteil dieses Ansatzes besteht darin, dass Sie den virtuellen Gast auf verschiedene Hosts verschieben können – er wird auf die gleiche Weise funktionieren, da keine direkte Abhängigkeit vom Host selbst besteht.
Um dies in der Praxis zu zeigen, können Sie es lsusb
sowohl auf dem Host als auch auf dem Gast ausführen. 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 kann Oneiric O/SI die folgenden USB-Geräte sehen – 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 Gastbetriebssystem, egal ob Windows oder Linux, sieht nur dieses virtuelle Gastgerät.
Hostgrafiken vs. Gastgrafiken
Dasselbe gilt auch für Grafiken.
Meine Hostgrafik ist:
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 sehen, dass es sich nicht um dieselbe Karte wie auf dem Host handelt:
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 erkennt ein Windows-Gastbetriebssystem nur ein ähnliches virtuelles Gastgerät.
In der trüben Welt von VirtualBox, dieGastbeiträgedie Sie manuell installieren können (oder in 11.10 -Jockeysieht und empfiehlt Ihnen, es zu installieren) installiert zusätzliche Kernelmodule (oder Gerätetreiber für Windows-Gäste), um dem Gastbetriebssystem einen verbesserten Zugriff auf die Grafiken Ihres Hostbetriebssystems zu ermöglichen. Auch hier handelt es sich nicht um eine direkte Zuordnung, aber es ermöglicht die Anzeige beschleunigter 3D-Grafiken.
Wenn eine Anwendung in Ihrer virtuellen Maschine 3D-Funktionen über die OpenGL-Programmierschnittstelle (oder bei einem Windows-Gastbetriebssystem über dessen DirectX-Aufrufe) verwendet, versucht VirtualBox, die 3D-Hardware Ihres Hosts zu verwenden, anstatt sie in Software zu emulieren (was langsam wäre).
Ich betone noch einmal, dass das Gastbetriebssystem Ihre tatsächliche Grafikkarte nicht erkennt, sondern den OpenGL- (oder DirectX-)Aufruf vom Gast direkt an die Host-Hardware zur Verarbeitung weiterleitet.
In den VirtualBox-Einstellungen sollten Sie den Grafikkartenspeicher und die 3D-Grafikkarteneinstellungen ändern. Ihr Gastbetriebssystem wird dann eine „3D-beschleunigte Karte“ mit 128 MB RAM sehen. Es spielt keine Rolle, ob Ihre Host-Grafikkarte besser ist – Ihr Gastbetriebssystem wird nur diese „einfache“ abstrahierte virtuelle Grafikkarte sehen.
Da Sie erwähnt haben, dass Sie ein Windows-Gastbetriebssystem verwenden, ist das 2D-Kontrollkästchen für Sie anwendbar, da ein ähnlichesDurchgangvon Programmierschnittstellenaufrufen durchgeführt.
Bumblebee/IronHide ist ein Entweder-oder-Grafikumschaltmechanismus – Sie verwenden entweder die integrierte Grafik oder die NVidia/ATI-Grafik mit höherer Kapazität, aber nicht beides gleichzeitig.
Da die OpenGL- (oder DirectX-)Fähigkeit der höherwertigen umschaltbaren Grafik größer ist als die des integrierten Chipsatzes, werden Sie bei grafikintensiven Anwendungen des Gastbetriebssystems eine relativ verbesserte Grafikleistung feststellen. Diese Verbesserung ist jedoch nicht so dramatisch wie bei der nativen Ausführung derselben Anwendung auf dem Host, da diese immer noch innerhalb der Beschränkungen des 128 MB großen virtuellen Gastgrafikgeräts arbeitet.
Antwort2
Eine Antwort obenhttps://askubuntu.com/a/85138/38052erklärt, dass alles, was das Gastbetriebssystem sieht, eine Art Abstraktion ist. Das war früher völlig richtig, aber ich glaube, die Dinge ändern sich und es stimmt vielleicht nicht mehr ganz.
Einige neuere Prozessoren unterstützen auch I/O-MMU-Virtualisierung. Die Technologien heißen Intel VT-d für die Intel-Version und AMD-Vi für die AMD-Version. Um den Wikipedia-Artikel zur x86-Virtualisierung zu zitieren:
Intels I/O MMU-Virtualisierung (AMD-Vi und VT-d) Hauptartikel: IOMMU
Eine Input/Output Memory Management Unit (IOMMU) ermöglicht virtuellen Gastmaschinen die direkte Nutzung von Peripheriegeräten wie Ethernet, beschleunigten Grafikkarten und Festplattencontrollern über DMA und Interrupt-Remapping. 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 sehe schon jetzt einige Probleme voraus. Zum einen rendert bei Optimus-Laptops der Intel IGP immer die endgültige Bildschirmausgabe. Mir ist nicht klar, wie das Gast- und das Host-Betriebssystem den IGP gleichzeitig steuern sollen. Eine Überlegung ist, dass es funktionieren könnte, wenn es möglich ist, den Host ohne Grafik auszuführen, während Gäste laufen, aber mir ist nicht klar, wie man das tatsächlich anstellen soll.
Antwort3
OK, ich war neugierig, also habe ich das ausprobiert.
QEMU und jetzt auch VirtualBox unterstützen die Durchleitung 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. Das ist bei einem Desktop-Rig mit zwei Grafikkarten der Fall. Der Gerätemanager würde „NVIDIA GTX … was auch immer“ anzeigen, anstatt „Virualbox-Grafikadapter“.
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ätemanager als „3D-Videocontroller“ angezeigt. Ich konnte jedoch keine Windows-Treiber installieren, die ihn unterstützen. Die Anwesenheit der Intel-Grafik scheint eine Voraussetzung zu sein.
Sarang hatte Recht, misstrauisch zu sein. Es sieht so aus, als wäre der Nvidia-Chip kein „Grafikadapter“, wie er einen Monitor ansteuern würde, sondern nur ein Beschleuniger für den integrierten Intel-Chip. Sie scheinen nicht unabhängig voneinander als zwei separate Geräte zu funktionieren.
Antwort4
https://gist.github.com/Misairu-G/616f7b2756c488148b7309addc940b28
In einigen Fällen ist es möglich, die DGPU zu passieren (siehe Link oben). Ich habe dies auf meinem Dell 7710 mit Quadro m5000m geschafft, wobei die DGPU vom Ubuntu-Host zum Windows10-Gast durchgereicht wurde.
Allerdings ist es meines Wissens nach nicht möglich, die Ausgabe dieser Karte über die Hardware auf dem Hauptbildschirm des Laptops anzuzeigen. Ich denke, dass Looking Glass derzeit wahrscheinlich die beste Option ist, gefolgt von Steam in Home-Streaming/RDP usw.
Ich würde gerne wissen, warum es nicht möglich ist, den Mux in gemuxten Laptops einfach so zu steuern, dass nach Belieben zwischen IGPU und DGPU umgeschaltet werden kann. Ich habe dies über VGA Switcheroo versucht, konnte den Mux jedoch überhaupt nicht steuern, auch nicht, bevor ich ihn über die DPU an ein Gastbetriebssystem weitergeleitet habe.
Ich schätze, dass Laptops ohne Mux eine größere Herausforderung darstellen würden, da zumindest eine gewisse Kommunikation zwischen Gast und Host erforderlich wäre, um zu steuern, welche GPU in welchen Teil des Frame-Puffers schreibt. Das geht weit über meinen Horizont.