Irgendwelche Ideen, ob Sie eine Windows-VM über IronHide zur Beschleunigung von Grafikkarten ausführen können? Ich möchte mit meiner Grafikkarte Spiele spielen / Unschärfe usw. ansehen.
Irgendwelche Ideen, ob Sie eine Windows-VM über IronHide zur Beschleunigung von Grafikkarten ausführen können? Ich möchte mit meiner Grafikkarte Spiele spielen / Unschärfe usw. ansehen.
Antworten:
Vielleicht hilft hier eine Erklärung zwischen Grafiken in einem virtuellen Gast und dem tatsächlichen Host-Betriebssystem.
Alles in einem virtuellen Gast ist eine Abstraktion. Dies bedeutet, dass jedes Gerät und jeder Treiber in einem virtuellen Gast-Betriebssystem nicht vom tatsächlichen Host-Gerät und Treiber abhängt.
Um Ihnen ein einfaches Beispiel zu geben. Eine Maus wird als ein bestimmtes Gerät angesehen - der Linux-Kernel sieht dieses Gerät und ermöglicht dem Gastbetriebssystem, dieses Gerät zu verwenden. Dieses "virtuelle Gerät" wird vom Virtualisierungstool - VirtualBox, VMWare, Xen usw. - dem realen physischen Gerät zugeordnet. Somit muss das Gastbetriebssystem nie verstehen, was die physische Maus ist, sondern nur sehen, was das Virtualisierungstool ihr zugeordnet hat . Der Vorteil dieses Ansatzes besteht darin, dass Sie den virtuellen Gast auf verschiedene Hosts verschieben können. Er funktioniert auf die gleiche Weise, da keine direkte Abhängigkeit vom Host selbst besteht.
Um dies in der Praxis zu zeigen, können Sie lsusb
sowohl auf dem Host als auch auf dem Gast ausgeführt werden. 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 sieht oneiric O / SI die folgenden USB-Geräte - 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 Gast-Betriebssystem, ob Windows oder Linux, sieht nur dieses virtuelle Gastgerät.
Dies gilt auch für Grafiken.
Meine Hostgrafiken sind:
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 können sehen, dass sie nicht mit dem Host identisch ist:
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 - ein Windows-Gastbetreiber sieht nur ein ähnliches virtuelles Gastgerät.
In der trüben Welt von VirtualBox installieren die Guest Additions, die Sie manuell installieren können (oder in 11.10 - Jockey sieht und empfiehlt die Installation), zusätzliche Kernelmodule (oder Gerätetreiber für Windows-Gäste), um dem Gastbetreiber einen erweiterten Zugriff zu ermöglichen Ihre Host-O / S-Grafiken. Auch hier handelt es sich nicht um eine direkte Zuordnung, sondern um die Anzeige von 3D-beschleunigten Grafiken.
Wenn eine Anwendung in Ihrer virtuellen Maschine 3D-Funktionen über die OpenGL-Programmierschnittstelle (oder für ein Windows-Gastbetriebssystem - seine DirectX-Aufrufe) verwendet, versucht VirtualBox, die Funktionen Ihres Hosts zu verwenden, anstatt sie in Software zu emulieren (was langsam wäre) 3D-Hardware.
Ich betone erneut, dass das Gast-Betriebssystem Ihre eigentliche Grafikkarte nicht sieht, sondern nur den OpenGL- (oder DirectX-) Anruf vom Gast direkt an die Host-Hardware weiterleitet, um sie zu verarbeiten.
In den VirtualBox-Einstellungen sollten Sie den Grafikkartenspeicher und die 3D-Grafikkarteneinstellung ändern. Ihr Gastbetreiber sieht dann eine "3D Accelerated Card" mit 128 MB RAM. Es spielt keine Rolle, ob Ihre Host-Grafikkarte besser als diese ist - Ihr Gastbetreiber sieht nur diese "einfache" abstrahierte virtuelle Grafikkarte.
Da Sie erwähnt haben, dass Sie ein Windows Guest-Betriebssystem verwenden, gilt das Kontrollkästchen 2D für Sie, da eine ähnliche Weitergabe von Programmierschnittstellenaufrufen durchgeführt wird.
Bumblebee / IronHide ist ein entweder / oder Grafik-Schaltmechanismus - Sie verwenden entweder integrierte Grafik oder NVidia / ATI-Grafik mit höherer Kapazität, aber nicht beide gleichzeitig.
Da die OpenGL- (oder DirectX-) Fähigkeit der höher umschaltbaren Grafik größer ist als die des integrierten Chipsatzes, werden Sie bei grafikintensiven Guest O / S-Anwendungen eine relativ verbesserte Grafikleistung feststellen. Diese Verbesserung ist jedoch nicht so dramatisch wie das native Ausführen derselben Anwendung auf dem Host, da sie immer noch unter den Einschränkungen des virtuellen Gastgrafikgeräts mit 128 MB funktioniert.
Eine Antwort über https://askubuntu.com/a/85138/38052 erklärt, wie alles, was der Gastbetreiber sieht, eine Art Abstraktion ist. Während dies früher völlig wahr war, glaube ich, dass sich die Dinge ändern und es möglicherweise nicht mehr ganz wahr ist.
Einige neuere Prozessoren unterstützen auch die E / A-MMU-Virtualisierung. Die Technologien heißen Intel VT-d für die Intel-Version und AMD-Vi für die AMD-Version. So zitieren Sie den Wikipedia-Artikel zur x86-Virtualisierung:
Intels I / O-MMU-Virtualisierung (AMD-Vi und VT-d) Hauptartikel: IOMMU
Eine IOMMU (Input / Output Memory Management Unit) ermöglicht es virtuellen Gastmaschinen, Peripheriegeräte wie Ethernet, beschleunigte Grafikkarten und Festplattencontroller über DMA und Interrupt-Remapping direkt zu verwenden. 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 kann bereits einige Probleme vorhersehen. Zum einen rendert der Intel IGP in Optimus-Laptops immer die endgültige Bildschirmausgabe. Mir ist nicht klar, wie das Guest O / S und das Host O / S das IGP steuern werden. Ein Gedanke ist, dass, wenn es möglich ist, den Host ohne Grafiken auszuführen, während Gäste ausgeführt werden, dies funktionieren könnte, aber mir ist unklar, wie man dies tatsächlich tun würde.
OK, ich war neugierig, also habe ich es versucht.
QEMU und jetzt VirtualBox unterstützen die Weitergabe 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. Dies ist bei einem Desktop-Rig mit zwei Grafikkarten der Fall. Der Geräte-Manager würde "NVIDIA GTX ... was auch immer" anzeigen, anstatt "Virualbox Graphics Adapter" zu sagen.
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äte-Manager als "3D-Video-Controller" angezeigt. Ich konnte jedoch keine Windows-Treiber installieren, um dies zu unterstützen. Das Vorhandensein der Intel-Grafiken scheint eine Voraussetzung zu sein.
Sarang hatte Recht, misstrauisch zu sein. Es sieht so aus, als wäre der NVIDIA-Chip kein "Display-Adapter", wie er einen Monitor antreiben würde, sondern nur ein Beschleuniger für den integrierten Intel-Chip. Sie scheinen nicht als zwei separate Geräte unabhängig voneinander zu funktionieren.