imelamory - Fotolia

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

Mithilfe eines GPU-Passthroughs erlauben Sie Ihren virtuellen Desktops den Zugriff auf einen Grafikprozessor und ermöglichen auch grafikintensive Workloads.

Virtuelle Desktops sind vor allem aus zwei Gründe schlank gehaltet: Es sollen möglichst viele Desktops auf eine Infrastruktur und die Arbeitsplätze sollen übersichtlich sein. Wenn allerdings grafikintensive Workloads ausgeführt werden, braucht der virtuelle Desktop Zugang zu einem Grafikprozessor.

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 Virtualisierungs-Hosts. 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 das 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).

Zuweisung eines RemoteFX 3D-Videoadapters
Abbildung 1: Die Zuweisung eines RemoteFX 3D-Videoadapters 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.

Einrichtung eines GPU-Passthrough mit Hyper-V

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 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).

Auswahl der gewünschten GPU
Abbildung 2: Wählen Sie die gewünschte GPU für den Passthrough im Hyper-V Manager aus.

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ätemanager 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 zugegriffen 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
Erstellung eines niedrigen und hohen MMIO-Bereichs
Abbildung 3: Erstellen Sie einen niedrigen und hohen MMIO-Bereich für den 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 bereitstellt, 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 von virtuellen Desktops anzupassen.

Erfahren Sie mehr über Server- und Desktop-Virtualisierung