denisismagilov - stock.adobe.com

GPU-Passthrough für virtuelle Desktops in Hyper-V einrichten

Administratoren wissen, dass Leistung die Nutzererfahrung auf virtuellen Desktops bestimmt. Ein GPU-Passthrough kann helfen, den Wünschen von Power Usern gerecht zu werden.

Virtuelle Desktops sind meistens schlank gestaltet, um möglichst viele Desktops auf eine Infrastruktur zu bekommen, aber auch, um die Arbeitsplätze so übersichtlich wie möglich zu halten. Doch es gibt Ausnahmen. Wenn ein virtueller Desktop grafikintensive Workloads ausführen muss, ist es notwendig, dass er einen Zugang zu einem Grafikprozessor erhält.

Als Administrator sollten Sie in diesem Fall sicherstellen, dass die virtuelle Maschine (VM) oder der virtuelle Desktop die physische Grafikkarte Ihres Servers direkt nutzt. Die genaue Methode zum Zuordnen eines physischen Grafikprozessors zu einem virtuellen Desktop variiert je nach Art des verwendeten Virtualisierungshosts. In diesem Artikel stellen wir ein Verfahren vor, das Sie für virtuelle Desktops verwenden können, die auf Microsoft Hyper-V laufen.

Früher war RemoteFX die bevorzugte Methode zum Anbinden eines Grafikprozessors (GPU, Graphic Processing Unit) an einen virtuellen Desktop. Beginnend mit Microsoft Windows Server 2016 ist dies jedoch keine Option mehr. Wenn Sie virtuelle Hyper-V-Desktops haben, die derzeit für die Verwendung mit RemoteFX konfiguriert sind, können Sie das jedoch so beibehalten. Sie werden aber nicht in der Lage sein, einer neu erstellten VM einen RemoteFX-3D-Videoadapter zuzuweisen (Abbildung 1).

Abbildung 1: Die Zuweisung einer RemoteFX 3D-Grafikkarte zu einem virtuellen Hyper-V-Desktop ist nicht mehr möglich.
Abbildung 1: Die Zuweisung einer RemoteFX 3D-Grafikkarte zu einem virtuellen Hyper-V-Desktop ist nicht mehr möglich.

Die neue Methode zum Zuweisen einer GPU an einen virtuellen Hyper-V-Desktop – auch bekannt als GPU-Passthrough – basiert auf Discrete Device Assignment (DDA). DDA ermöglicht den direkten Zugriff auf PCIe-Hardware (Peripheral Component Interconnect Express), insbesondere Grafikadapter und NVMe-Speichergeräte (Non-Volatile Memory Express) mit einem virtuellen Desktop.

GPU-Passthrough mit Hyper-V einrichten

Der erste Schritt beim GPU-Passthrough für Hyper-V besteht darin, die automatische Stopp-Aktion des virtuellen Desktops auszuschalten. Dafür können Sie dem VM-Namen die Variable VM$ zuordnen, da GPUs pro VM zugewiesen werden und der GPU-Passthrough den VM-Namen mehrmals referenziert. Nehmen wir an, Ihre virtuelle Maschine heißt Demo, dann lautet der Befehl:

$VM='Demo'

Wenn Sie schon dabei sind, sollten Sie gleich die Schreibkombination für die CPU aktivieren. Hier ist der Befehl, den Sie dafür benötigen:

Set-VM $VM -GuestControlledCacheTypes $true

Als nächstes müssen Sie den Standort der GPU bestimmen. Am einfachsten ist das, wenn Sie den Hyper-V-Geräte-Manager öffnen und dann den spezifischen Grafikprozessor suchen, den Sie zuweisen möchten.

Klicken Sie mit der rechten Maustaste auf das Gerät und wählen Sie den Befehl Eigenschaften aus dem Kontextmenü. Nun öffnet sich ein Fenster, in dem Sie unter der Registerkarte Details die Option Speicherortpfade aus dem Dropdown-Menü auswählen. Klicken Sie nun mit der rechten Maustaste auf den Wert, der mit PCIROOT beginnt, und wählen Sie dann den Befehl Kopieren aus dem Kontextmenü (Abbildung 2).

Abbildung 2: Auswählen der gewünschten GPU für Passthrough im Geräte-Manager
Abbildung 2: Auswählen der gewünschten GPU für Passthrough im Geräte-Manager

Sobald Sie den Speicherort des Geräts in die Windows-Zwischenablage kopiert haben, öffnen Sie eine erweiterte PowerShell-Sitzung und ordnen dem Speicherort eine Variable zu. Dafür verwenden Sie folgenden Befehl und fügen nach dem Gleichzeichen den kopierten Standort aus dem Geräte-Manager ein:

$Location = 'PCIROOT(0)#PCI(0300)#PCI(0000)'

Der nächste Schritt ist die Konfiguration von Schwellenwerten für Memory Mapped I/O (MMIO). Das ist der Speicher, über den auf das Gerät zugriffen werden kann. Sie müssen diesen Schwellenwert pro virtuellen Desktop konfigurieren.

Das Windows-Betriebssystem reserviert bereits standardmäßig etwas MMIO-Speicher. Es setzt den niedrigen Wert auf 128 MB und den hohen Wert auf 512 MB. Abhängig von der GPU, die Ihr virtueller Desktop verwenden wird, kann das ausreichen. Bei höherwertigen GPUs müssen Sie jedoch zusätzlichen MMIO zuweisen. Microsoft stellt ein Machine Profile Script zur Verfügung, das Sie herunterladen und ausführen können, um zu ermitteln, wie viel MMIO Ihr Grafikprozessor benötigt.

Nehmen wir zum Beispiel an, dass Sie den unteren Bereich des MMIO auf 512 MB und den oberen Bereich des MMIO auf 1 GB setzen müssen (siehe Abbildung 3). Die Befehle dafür sehen wie folgt aus:

Set-VM $VM -LowMemoryMappedIoSpace 512MB
Set-VM $VM -HighMemoryMappedIoSpace 1GB

Abbildung 3: Einstellen des niedrigen und hohen MMIO-Bereichs für GPU-Passthrough in Hyper-V.
Abbildung 3: Einstellen des niedrigen und hohen MMIO-Bereichs für GPU-Passthrough in Hyper-V.

Die letzten Schritte des Prozesses bestehen darin, das Gerät vom Host-Betriebssystem zu trennen und es dann mit der VM zu verknüpfen. Hier sind die dazu verwendeten Befehle:

Dismount-VMHostAssignableDevice -force -LocationPath $Location
Add-VMAssignableDevice -LocationPath $Location -VMName VMName

Wie Sie sehen, kann GPU-Passthrough für eine Hyper-V-VM ein langwieriger Prozess sein, wenn Sie jeden Schritt manuell ausführen müssen.

Benötigen Sie mehr Hilfe, hat Microsoft außerdem ein Skript bereitgestellt, mit dem sich der Prozess automatisieren lässt. Das Skript ist auf eine virtuelle Serverumgebung ausgerichtet, aber es ist für IT-Administratoren einfach, es für die Verwendung mit virtuellen Desktops anzupassen.

Erfahren Sie mehr über Server- und Desktop-Virtualisierung

ComputerWeekly.de
Close