Getty Images
Virtuelle Maschinen sind ein effizienter und portabler Mechanismus zur Ausführung des Codes, aus dem sich Anwendungen und Services zusammensetzen. Herkömmliche CPUs eignen sich hervorragend für logische Operationen, sind aber für die Verarbeitung von Gleitkomma- und anderen komplexen mathematischen Berechnungen ungeeignet. Mit dem Aufkommen der Grafikprozessoren (GPUs) wurde diese Einschränkung behoben. Sie ermöglichen es Anwendungen, Spiele und andere anspruchsvolle Visualisierungen auszuführen.
Die zusätzliche GPU-Unterstützung für VMs ermöglicht es virtualisierten Arbeitslasten On-Premises und in der Cloud, die anspruchsvollen Berechnungen für Aufgaben wie Echtzeitdatenvisualisierung und virtuelle Desktopgrafiken effizient zu bewältigen.
Die GPU-Unterstützung erfolgt jedoch nicht automatisch. Hypervisoren unterstützen GPUs entweder im Pass-Through- oder im virtuellen GPU-Modus (vGPU). Die GPU-Unterstützung muss oft bewusst aktiviert und zu VM-Konfigurationen hinzugefügt werden, bevor die VM diese GPU-Funktionen nutzen kann. Sehen wir uns die GPU-Unterstützung genauer an und prüfen wir die Schritte zur Integration von GPUs in Hypervisoren wie VMware.
Was ist ein GPU Pass-Through?
Ein Pass-Through-Modus ermöglicht den Zugriff, die Steuerung und die Nutzung eines gesamten Geräts. Wenn ein Grafikprozessor im Pass-Through-Modus arbeitet, weist der Hypervisor einen GPU einer VM zu. Die VM kann dann den GPU vollständig nutzen und 100 Prozent der Fähigkeiten des GPUs, einschließlich der Verarbeitungsleistung und des zugehörigen Grafikspeichers, ausschöpfen. Diese Technik wird manchmal auch als Virtual Dedicated Graphics Acceleration (vDGA) bezeichnet. Andere VMs können jedoch nicht auf diesen GPU zugreifen oder von ihm profitieren.
Pass-Through funktioniert auf Chipebene, nicht auf Kernebene. Das bedeutet, dass ein GPU-Chip viele Kerne an Bord haben kann, aber Pass-Through weist den gesamten GPU-Chip – und alle seine Kerne – der zugehörigen VM zu. Pass-Through kann verschiedenen VMs innerhalb desselben GPU-Chips keine unterschiedlichen Kerne zuweisen.
Moderne Grafikkarten unterstützen jedoch häufig mehrere GPU-Chips, und jeder GPU-Chip kann verschiedenen VMs zugewiesen werden. So verfügt beispielsweise der Nvidia M6 über einen physischen Grafikprozessor, der Nvidia M60 über zwei physische Grafikprozessoren und der Nvidia M10 über vier Grafikprozessoren, obwohl ein Grafikadapter wie der M10 2.560 Nvidia CUDA-Kerne (Compute Unified Device Architecture) hostet. Ein Unternehmen kann zahlreiche physische Server mit jeweils einem Multi-GPU-Grafikadapter einsetzen, um GPU-Unterstützung für viele VMs bereitzustellen.
Der Pass-Through-Modus ist ideal für zentral gehostete VMs, die die anspruchsvollsten oder grafikintensivsten Anwendungen ausführen. Dieser Modus bietet die beste Leistung und ein hervorragendes Preis-Leistungs-Verhältnis, wenn viele Anwender die VM gemeinsam nutzen.
Verwendung von vGPU
Die alternative Möglichkeit zur Virtualisierung von GPUs ist der vGPU-Modus. Dieser Ansatz schafft eine Time-Sharing-Umgebung, die es mehreren VMs ermöglicht, die Ressourcen des Grafikprozessors gemeinsam zu nutzen. Wenn ein GPU beispielsweise in zehn vGPUs virtualisiert wird und jede vGPU einer von zehn VMs zugewiesen wird, hat jede VM für zehn Prozent der Zeit Zugriff auf den GPU – und seine CUDA-Kerne. Diese Technik wird manchmal als Virtual Shared Graphics Acceleration oder vSGA gezeichnet.
Die grundsätzliche Beziehung zwischen GPU, Hypervisor und VMs ist im folgenden Diagramm dargestellt.
Hyper-V unterstützt zum Zeitpunkt der Veröffentlichung dieses Artikels noch keine vGPU, aber Citrix XenServer und VMware ESXi können einen virtuellen GPU-Manager ausführen. Der Manager verwaltet die Aufteilung einer physischen GPU in vGPUs und weist diese vGPUS den VMs zu. Dadurch wird der Time-Sharing-Mechanismus eingerichtet, der es den VMs ermöglicht, den Grafikprozessor gemeinsam zu nutzen. Ein Grafiktreiber in jeder VM verbindet die Arbeitslast der VM mit der vGPU.
Der Grafikspeicher ist nicht gemeinsam nutzbar. Der in der GPU-Adapterkarte enthaltene Videospeicher wird zwischen den VMs aufgeteilt, die eine vGPU verwenden. Wenn die Grafikkarte beispielsweise über 32 GB verfügt und auf zehn VM-vGPU-Paare aufgeteilt wird, hat jede vGPU Zugriff auf 3,2 GB. Diese Kombination aus GPU-Time-Sharing und nicht gemeinsam genutztem Videospeicher stellt eine praktische Grenze für die Anzahl der VMs dar, die sich eine GPU teilen können. Je mehr VMs sich einen Grafikprozessor teilen und je höher die Grafikanforderungen dieser VMs sind, desto geringer wird die vGPU-Leistung.
Administratoren können die Leistung durch Konfiguration der vGPU-Ressourcen anpassen. Dadurch werden einer VM mehr oder weniger Zeit-Einheiten zugewiesen, so dass anspruchsvollere VMs mehr GPU-Zeit erhalten können, während weniger anspruchsvolle oder Test-VMs weniger GPU-Zeit erhalten können.
Meistens wird der vGPU-Modus für alltägliche leichte Grafikaufgaben verwendet, wie zum Beispiel für die Unterstützung von Desktop-Grafiken in VDI-Umgebungen (Virtual Desktop Infrastructure), in denen viele VM-Desktops eine begrenzte Anzahl von Grafikprozessoren gemeinsam nutzen und davon profitieren.
Zuweisung und Aktivierung von vGPUs in VMs
Hinweis des Autors: Diese Reihe von Schritten soll nur einen kurzen Überblick über den Prozess bieten. Detailliertere Schritte und Anleitungen zur Installation der GPU-Software, zur GPU-Einrichtung und zur vGPU-Zuweisung finden Sie in der Dokumentation von Nvidia und VMware. Wenn andere GPU- oder Hypervisor-Produkte verwendet werden, lesen Sie die entsprechenden Dokumentationen für spezifische Schritte und Details.
Bevor vGPUs zu VMs hinzugefügt werden, sollten Administratoren prüfen, ob wichtige Voraussetzungen erfüllt sind, zum Beispiel:
- Stellen Sie einen Server mit einem geeigneten Hypervisor, Hypervisor-Verwaltungs-Tool und einem Grafikadapter – mit mindestens einem GPU-Chip – bereit, der vGPU-Verwaltungs-Tools unterstützen kann.
- Installieren Sie vGPU-Verwaltungs-Tools für den richtigen Hypervisor, zum Beispiel Citrix XenServer oder VMware vSphere Hypervisor und ESXi.
- Wenn die vGPU VDI-Bereitstellungen unterstützt, installieren Sie die gewünschte virtuelle Desktop-Software, beispielsweise Citrix XenDesktop oder VMware Horizon.
- Erstellen Sie die VMs, die vGPU-Unterstützung erhalten sollen, installieren Sie die gewünschten Gastbetriebssysteme auf diesen VMs.
Sobald die Voraussetzungen gegeben sind, fahren Sie mit der Installation und Konfiguration fort. Im Folgenden finden Sie ein Beispiel für das allgemeine Verfahren zur Konfiguration von Nvidia vGPUs mit VMware vSphere:
- Halten Sie den ESXi-Host an.
- Installieren Sie das neueste Nvidia-Virtual-GPU-Manager-Paket für vSphere.
- Verwenden Sie den vSphere Web Client, um sich bei vCenter Server anzumelden, und klicken Sie dann auf Configure – Graphics – Host Graphics – Edit, um den Standard-Grafiktyp in vSphere auf vGPU zu ändern – einen Shared-Direct-Grafiktyp – ,bevor Sie eine vGPU konfigurieren.
- Übernehmen Sie die Änderungen, um den Grafiktyp auf Shared Direct zu setzen.
- Verwenden Sie die Registerkarte Graphics Devices, um die Konfiguration jeder GPU zu überprüfen, auf der vGPUs konfiguriert werden sollen. Konfigurieren Sie alle GPUs, die noch auf Shared eingestellt sind, auf Shared Direct um.
- Starten Sie den ESXi-Host neu.
Die VM-Konsole im VMware vSphere Web Client ist für VMs, auf denen eine vGPU ausgeführt wird, nicht verfügbar. Stellen Sie daher vor der Konfiguration einer vGPU eine alternative Zugriffsmöglichkeit auf die VM bereit, zum Beispiel VMware Horizon oder VNC-Server.
Gehen Sie folgendermaßen vor, um eine vSphere-VM mit einer Nvidia vGPU zu konfigurieren:
- Halten Sie die gewünschte VM an.
- Öffnen Sie die vCenter-Webschnittstelle.
- Klicken Sie mit der rechten Maustaste auf die gewünschte VM und wählen Sie die Schaltfläche Edit Settings.
- Wählen Sie die Registerkarte Virtual Hardware.
- Wählen Sie in der Liste New Device die Option Shared PCI Device und klicken Sie auf Add. Im Feld PCI Device sollte bereits Nvidia GRID vGPU angezeigt werden.
- Verwenden Sie das Dropdown-Menü GPU Profile, um den Typ der zu konfigurierenden vGPU auszuwählen, und klicken Sie auf OK.
- Verwenden Sie die vCenter-Webschnittstelle, um zu überprüfen, ob für VMs, die eine vGPU ausführen, der gesamte Gastspeicher reserviert ist.
- Übernehmen Sie alle Änderungen und starten Sie die neu konfigurierte VM.
- Verwenden Sie VMware Horizon oder VNC, um auf die VM zuzugreifen.
Installieren Sie schließlich den Grafiktreiber in der VM, zum Beispiel den Nvidia-vGPU-Software-Grafiktreiber, damit die VM mit der GPU interagieren kann. Verwenden Sie den für das jeweilige Gastbetriebssystem vorgesehenen Grafiktreiber.
Zuweisung und Aktivierung von GPU-Pass-Through in VMs
VMware vSphere ermöglicht vDGA, das den direkten Zugriff auf einen gesamten Grafikprozessor ermöglicht. Der allgemeine Prozess zur Konfiguration einer VM für die Verwendung eines Grafikprozessors im Pass-Through-Modus umfasst die folgenden Schritte:
- Schalten Sie die VM aus.
- Öffnen Sie die vCenter-Webschnittstelle.
- Wählen Sie den ESXi-Host aus und wählen Sie Settings.
- Suchen Sie das Menü Hardware, wählen Sie PCI Devices und wählen Sie Edit.
- Wählen Sie alle Nvidia-GPUs aus und klicken Sie auf OK.
- Starten Sie den ESXi-Host neu.
- Kehren Sie zur vCenter-Webschnittstelle zurück, klicken Sie mit der rechten Maustaste auf die gewünschte VM und wählen Sie Edit Settings.
- Wählen Sie im Menü New Device die Option PCI Devices und dann Add.
- Wählen Sie den Grafikprozessor aus der Dropdown-Liste New Device aus.
- Wählen Sie die Option zum Reservieren des gesamten Speichers und klicken Sie auf OK.
- Starten Sie die VM neu.
Sobald die VM mit einem Grafikprozessor im Pass-Through- oder vDGA-Modus konfiguriert ist, installieren Sie den Grafiktreiber – beispielsweise den Nvidia vGPU-Software-Grafiktreiber – im Gastbetriebssystem der VM.
Messen der GPU-Leistung
GPUs sind teuer und haben einen begrenzten Nutzen. Administratoren müssen möglicherweise die Zuweisung von GPU-Ressourcen bewerten oder rechtfertigen, um sicherzustellen, dass eine VM – und ihre Arbeitslast – die beabsichtigten Vorteile der GPU nutzen kann. Wenn das nicht der Fall ist, können IT-Administratoren die GPU einer anderen VM zuweisen. Glücklicherweise stehen IT-Teams mehrere Tools zur Verfügung, mit denen sie die Leistung physischer GPUs und vGPUs sowohl über den Hypervisor als auch innerhalb einzelner Gast-VMs messen können.
Nvidia bietet beispielsweise das Dienstprogramm nvidia-smi an, das die GPU-Leistung von jedem unterstützten Hypervisor oder jeder Gast-VM mit 64-Bit-Windows oder Linux aus überwacht. Ein Tool wie nvidia-smi liefert Informationen wie GPU-ID und Namensdaten, GPU-Typ, Grafiktreiberversionen, Frame-Rate-Limits, Framebuffer-Speichernutzung und GPU-Nutzungsdetails, die in der Regel den Prozentsatz der von der VM genutzten GPU-Kapazität angeben.
Administratoren können auch Citrix XenCenter für Citrix XenServer oder andere gängige Tools wie Windows Performance Monitor oder Windows Management Instumentation für Gast-VMs verwenden, auf denen Windows läuft. Allerdings können IT-Teams die GPU-Leistung im Pass-Through-Modus nur von der Gast-VM aus überwachen, die die GPU nutzt, und nicht von der Hypervisor-Ebene aus.