GPU-Virtualisierung - GPU virtualization

GPU-Virtualisierung bezieht sich auf Technologien, die die Verwendung einer GPU ermöglichen , um Grafiken oder GPGPU- Anwendungen zu beschleunigen, die auf einer virtuellen Maschine ausgeführt werden . GPU-Virtualisierung wird in verschiedenen Anwendungen wie Desktop-Virtualisierung , Cloud-Gaming und Computational Science (z. B. Hydrodynamik- Simulationen) verwendet.

GPU-Virtualisierungsimplementierungen umfassen im Allgemeinen eine oder mehrere der folgenden Techniken: Geräteemulation, API-Remoting, fester Durchgang und vermittelter Durchgang. Jede Technik stellt verschiedene Kompromisse in Bezug auf virtuelle Maschine GPU Konsolidierungsverhältnis , Grafikbeschleunigung , Rendering Treue und Feature - Unterstützung, Portabilität auf unterschiedliche Hardware, Isolation zwischen virtuellen Maschinen und der Unterstützung für die Aussetzung / Wiederaufnahme und Live - Migration .

API-Remoting

In API - Remoting oder API - Weiterleitung, Anrufe zu grafischen APIs von Gast - Anwendungen werden an die Host weitergeleitet durch Remote Procedure Call , und die Host führt dann grafische Befehle von mehreren Gästen der Host-GPU als ein einzelnen Benutzer verwenden. Es kann als eine Form der Paravirtualisierung betrachtet werden, wenn es mit der Geräteemulation kombiniert wird. Diese Technik ermöglicht die gemeinsame Nutzung von GPU-Ressourcen zwischen mehreren Gästen und dem Host, wenn die GPU keine hardwareunterstützte Virtualisierung unterstützt. Es ist konzeptionell einfach zu implementieren, hat jedoch mehrere Nachteile:

  • Beim reinen API-Remoting besteht beim Zugriff auf grafische APIs nur eine geringe Isolation zwischen virtuellen Maschinen. Isolation kann durch Paravirtualisierung verbessert werden
  • Die Leistung reicht von 86 % bis zu 12 % der nativen Leistung in Anwendungen, die eine große Anzahl von Zeichenaufrufen pro Frame ausgeben
  • Eine große Anzahl von API- Einstiegspunkten muss weitergeleitet werden, und eine teilweise Implementierung von Einstiegspunkten kann die Wiedergabetreue verringern
  • Anwendungen auf Gastcomputern sind möglicherweise auf wenige verfügbare APIs beschränkt

Hypervisor verwenden normalerweise gemeinsam genutzten Speicher zwischen Gast und Host, um die Leistung zu maximieren und die Latenz zu minimieren. Mit Hilfe einer Netzwerk - Schnittstelle statt (ein gemeinsames Konzept in verteilten Rendering ), kann Software von Drittanbietern die Unterstützung für spezifische APIs (zB. RCUDA für CUDA ) oder Unterstützung hinzufügen , für typische APIs (zB. VMGL für OpenGL ) , wenn es nicht unterstützt wird das Softwarepaket des Hypervisors, obwohl Netzwerkverzögerung und Serialisierungs- Overhead die Vorteile überwiegen können.

Anwendungsunterstützung durch API-Remoting-Virtualisierungstechnologien
Technologie Direct3D OpenGL Vulkan OpenCL
VMware Virtual Shared Graphics Acceleration (vSGA) 11 4.1 Ja Nein
Parallels Desktop für Mac 3D-Beschleunigung 11 3.3 Nein Nein
Hyper-V RemoteFX vGPU 11 4.4 Nein 1.1
VirtualBox Guest Additions 3D-Treiber 8/9 2.1 Nein Nein
QEMU / KVM mit Virgil 3D Nein 4.3 Geplant Nein

Fester Durchgang

Beim Fixed-Pass-Through oder GPU-Pass-Through (ein Sonderfall von PCI- Pass-Through) wird ausschließlich und dauerhaft von einer einzelnen virtuellen Maschine direkt auf eine GPU zugegriffen. Diese Technik erreicht 96–100% der nativen Leistung und der hohen Wiedergabetreue, aber die von der GPU bereitgestellte Beschleunigung kann nicht von mehreren virtuellen Maschinen gemeinsam genutzt werden. Als solches hat es das niedrigste Konsolidierungsverhältnis und die höchsten Kosten, da jede grafikbeschleunigte virtuelle Maschine eine zusätzliche physische GPU benötigt.

Die folgenden Softwaretechnologien implementieren festes Pass-Through:

VirtualBox hat die Unterstützung für PCI-Passthrough in Version 6.1.0 entfernt.

QEMU/KVM

Bei bestimmten GPU-Modellen versuchen Nvidia- und AMD-Grafikkartentreiber zu erkennen, dass eine virtuelle Maschine auf die GPU zugreift, und deaktivieren einige oder alle GPU-Funktionen. NVIDIA hat kürzlich die Virtualisierungsregeln für Consumer-GPUs geändert, indem die Überprüfung im GeForce Game Ready-Treiber 465.xx und höher deaktiviert wurde.

Für NVIDIA können verschiedene Architekturen von Desktop- und Laptop-Consumer-GPUs auf verschiedene Arten durchlaufen werden. Bei Desktop-Grafikkarten kann Passthrough über den KVM erfolgen, wobei entweder die Legacy- oder die UEFI-BIOS-Konfiguration über SeaBIOS bzw. OVMF verwendet wird.

NVIDIA

Desktops

Bei Desktops können die meisten Grafikkarten übergeben werden. Bei Grafikkarten mit Pascal-Architektur oder älter muss das VBIOS der Grafikkarte in der virtuellen Maschine übergeben werden, wenn die GPU zum Starten des Hosts verwendet wird.

Laptops

Bei Laptops prüft der NVIDIA-Treiber das Vorhandensein eines Akkus über ACPI, und ohne Akku wird ein Fehler zurückgegeben. Um dies zu vermeiden, ist ein aus in Base64 konvertiertem Text erstellter kompatibler Text erforderlich, um eine Batterie zu fälschen und die Prüfung zu umgehen.

Pascal und früher

Bei Laptop-Grafikkarten, die Pascal und älter sind, variiert der Passthrough stark von der Konfiguration der Grafikkarte. Bei Laptops ohne NVIDIA Optimus, wie den MXM-Varianten, kann Passthrough mit herkömmlichen Methoden erreicht werden. Bei Laptops, auf denen NVIDIA Optimus aktiviert ist und die über den integrierten Grafik-Framebuffer der CPU gerendert werden, ist das Passthrough komplizierter und erfordert eine Remote-Rendering-Anzeige oder einen Remote-Rendering-Dienst, die Verwendung von Intel GVT-g sowie die Integration der VBIOS in die Boot-Konfiguration, da das VBIOS im System-BIOS des Laptops und nicht in der GPU selbst vorhanden ist. Bei Laptops mit einer GPU mit NVIDIA Optimus und einem dedizierten Framebuffer können die Konfigurationen variieren. Wenn NVIDIA Optimus ausgeschaltet werden kann, ist Passthrough auf herkömmliche Weise möglich. Wenn jedoch Optimus die einzige Konfiguration ist, ist das VBIOS höchstwahrscheinlich im System-BIOS des Laptops vorhanden und erfordert die gleichen Schritte wie das Laptop-Rendering nur auf dem integrierten Grafik-Framebuffer, aber ein externer Monitor ist auch möglich.

Vermittelter Pass-Through

Bei der vermittelten Geräte-Pass-Through- oder vollständigen GPU-Virtualisierung stellt die GPU-Hardware Kontexte mit virtuellen Speicherbereichen für jeden Gast über IOMMU bereit und der Hypervisor sendet grafische Befehle von den Gästen direkt an die GPU. Diese Technik ist eine Form der hardwaregestützten Virtualisierung und erreicht eine nahezu native Leistung und hohe Wiedergabetreue. Wenn die Hardware Kontexte als vollständige logische Geräte bereitstellt, können Gäste jede beliebige API verwenden. Andernfalls müssen APIs und Treiber die zusätzliche Komplexität von GPU-Kontexten verwalten. Als Nachteil besteht möglicherweise eine geringe Isolation zwischen virtuellen Maschinen beim Zugriff auf GPU-Ressourcen.

Die folgenden Software- und Hardwaretechnologien implementieren vermitteltes Pass-Through:

  • VMware Virtual Shared Pass-Through-Grafikbeschleunigung mit Nvidia vGPU oder AMD MxGPU
  • Citrix XenServer gemeinsam genutzte GPU mit Nvidia vGPU, AMD MxGPU oder Intel GVT-g
  • Xen und KVM mit Intel GVT-g
  • Thincast Workstation - Virtuelle 3D-Funktion (Direct X 12 & Vulkan 3D API)


Während API-Remoting im Allgemeinen für aktuelle und ältere GPUs verfügbar ist, erfordert das vermittelte Pass-Through Hardware-Unterstützung, die nur auf bestimmten Geräten verfügbar ist.

Hardwareunterstützung für vermittelte Pass-Through-Virtualisierung
Verkäufer Technologie Dedizierte Grafikkarte Familien Integrierte GPU- Familien
Server Fachmann Verbraucher
Nvidia vGPU NETZ , Tesla Quadro Nein
AMD MxGPU FirePro-Server , Radeon Instinct Radeon Pro Nein Nein
Intel GVT-g Broadwell und neuer

Geräteemulation

GPU-Architekturen sind sehr komplex und ändern sich schnell, und ihre internen Details werden oft geheim gehalten. Es ist im Allgemeinen nicht möglich, neue GPU-Generationen vollständig zu virtualisieren, sondern nur ältere und einfachere Generationen. Zum Beispiel PCem , ein spezialisierter Emulator der IBM - PC - Architektur kann ein emulieren S3 ViRGE / DX Grafikgerät, die unterstützt Direct3D 3 und ein 3dfx Voodoo2 , die unterstützt Glide , unter anderem.

Bei Verwendung eines virtuellen VGA- oder SVGA- Grafikadapters hat der Gast möglicherweise keine 3D-Grafikbeschleunigung und bietet nur minimale Funktionen, um den Zugriff auf das Gerät über ein Grafikterminal zu ermöglichen. Das emulierte Gerät kann Gästen nur grundlegende 2D-Grafikmodi zur Verfügung stellen. Der Virtual Machine Manager kann auch gängige API-Implementierungen unter Verwendung von Software-Rendering bereitstellen , um 3D-Grafikanwendungen auf dem Gast zu ermöglichen, wenn auch mit Geschwindigkeiten, die unter 3 % der hardwarebeschleunigten nativen Leistung liegen können. Die folgenden Softwaretechnologien implementieren Grafik-APIs mithilfe von Software-Rendering:

Siehe auch

Anmerkungen

Verweise