derwowusste
Goto Top

Grafikkartenzuweisung zu einer Hyper-V-VM 2016 vs 2019

Moin.

Ich hoffe hier Leute zu finden, die Direct Device Assignment erfolgreich durchgeführt haben und derzeit nutzen. Wenn Ihr das nicht nutzt, wartet doch zumindest mit Euren Kommentaren bitte ein wenig ab. Ich selbst habe herade erst meine Tests abgeschlossen und die Resultate sind verwirrend.

Serverboard: Supermicro X10-SRA-f (onboard-Grafik vorhanden)
Grafikkarte: Nvidia Quadro K4000

Test1: Hyper-V sowie Gast-OS: 2019 Server
Test2: Hyper-V sowie Gast-OS: 2016 Server

Bei Test1 kann ich die VM nicht einmal dazu überreden, mit der zugewiesenen Karte überhaupt zu starten. Nach erfolgreicher Zuweisung behauptet die VM beim Start
Could not allocate the PCI Express device with the Plug and Play Device Instance path 'PCIP\10DE 11FA&SUBSYS....' because it is already in use by another VM.
was lustig ist, denn dieser Hypervisor hat jemals nur diese eine VM gehabt und auf der Powershell wird die Karte als dieser VM zugehörig gelistet.

Bei Test2 kann ich immerhin sagen, dass es kurzzeitig geht: Ich weise die Karte zu, ich installiere sie in der Gast VM, das Quadro-Treibersetup fordert zum Neustart auf und danach zeigt sich folgendes Bild im Gast:
capture
Soweit so gut.
Nach dem zweiten Reboot der VM jedoch, startet der Treiber der Karte nicht mehr:
capture

Das verwirrte mich so sehr, dass ich den Krempel neu aufgesetzt habe - mit dem selben Ergebnis. Zweiter Reboot nach der Treiberinstallation im Gast - Karte mag nicht mehr.
Was haltet Ihr davon?

Content-Key: 456399

Url: https://administrator.de/contentid/456399

Printed on: April 19, 2024 at 10:04 o'clock

Member: falscher-sperrstatus
falscher-sperrstatus May 27, 2019 at 18:15:47 (UTC)
Goto Top
Ohne deinen Ereignislog sag ich nichts. Aber vielleicht einfach die falschen Treiber? face-smile

Schöne Grüße,

Christian
certifiedit.net
Member: psannz
psannz May 27, 2019 at 20:47:08 (UTC)
Goto Top
Sers,

Könntest du ein volles „get-vm | fl“ posten?
Primär geht es mir um die StopAction.

Die Quadro ist auch nicht als für RemoteFX aktiviert, korrekt? Trotz Deaktivierung aus Sicht des HyperV Hosts?
Welche Treiber hast du versucht?

Grüße,
Philip
Member: itisnapanto
itisnapanto May 28, 2019 at 05:35:25 (UTC)
Goto Top
Moin ,

ich habs so eine Konstellation an 2 Servern ( Dell R740 / HP DL380 Gen10 ) laufen mit einer Tesla Karte.

Bitte poste mal deinen genauen Vorgang mit den dazugehörigen Befehlen.


Gruss
Member: DerWoWusste
DerWoWusste May 28, 2019 at 06:44:26 (UTC)
Goto Top
Hallo ihr 3.

@itisnapanto
Server OS installiert (sowohl Core-Variante als auch Desktopvariante versucht), gepatcht
Quadro-Kartentreiber im Host installiert (der Host hat seine eigene Onboardkarte vom Mainboard)
VM "crs2test" erstellt, aber noch nicht installiert
Quadro-Karte vom Host entkoppelt und dem Gast erfolgreich zugewiesen mit dem Skript von microsoft:
#Configure the VM for a Discrete Device Assignment
$vm =   "crs2test"  
#Set automatic stop action to TurnOff
Set-VM -Name $vm -AutomaticStopAction TurnOff
#Enable Write-Combining on the CPU
Set-VM -GuestControlledCacheTypes $true -VMName $vm
#Configure 32 bit MMIO space
Set-VM -LowMemoryMappedIoSpace 3Gb -VMName $vm
#Configure Greater than 32 bit MMIO space
Set-VM -HighMemoryMappedIoSpace 33280Mb -VMName $vm

#Find the Location Path and disable the Device
#Enumerate all PNP Devices on the system
$pnpdevs = Get-PnpDevice -presentOnly
#Select only those devices that are Display devices manufactured by AMD
$gpudevs = $pnpdevs |where-object {$_.Class -like "Display" -and $_.Manufacturer -like "NVIDIA"}    
#Select the location path of the first device that's available to be dismounted by the host. 
$locationPath = ($gpudevs | Get-PnpDeviceProperty DEVPKEY_Device_LocationPaths).data
#Disable the PNP Device
Disable-PnpDevice  -InstanceId $gpudevs.InstanceId

#Dismount the Device from the Host
Dismount-VMHostAssignableDevice -force -LocationPath $locationPath

#Assign the device to the guest VM.
Add-VMAssignableDevice -LocationPath $locationPath -VMName $vm
Host sicherheitshalber neu gestartet
Gast installiert, Gast gepatcht, neu gestartet, Treiber der Karte installiert, neu gestartet - alles bestens (siehe 1. Screenshot oben)
Dann noch ein weiteres Mal den Gast neu gestartet und alles geht zu Bruch - siehe 2. Screenshot.
->Was hast du anders gemacht?
@psannz
Stop Action siehe Befehl oben - wie von MS empfohlen.
Quadro ist nicht asl RemoteFX aktiviert, nein.
Treiber wurden die neuesten Quadros (4.30.64, siehe Screenshot) aber auch ältere (416.78) von nvidia benutzt. Gestern kamen zufälligerweise noch neuere raus.
@certifiedit.net
Treiber sind korrekt.
Eventlog des Hosts bietet eine Warnung an im Hyper-V-Log "Hyper-V-VMMS", Event ID 33978
This device is not supported and has not been tested when passed through to a virtual machine. It may or may not function. The system as a whole may become unstable. The device should only be exposed to trusted virtual machines.
Eventlog des Gastes zeigt an unter Application and services Logs / Microsoft /Windows / DeviceSetupManager /admin:
Driver install failed, result=0x80072EFD for devnode 'PCI\VEN_10DE&DEV_11FA&SUBSYS_097C10DE&REV_A1\5&2EED4176&0&0'
Mit welchen Karten läuft es bei Dir?
Member: itisnapanto
itisnapanto May 28, 2019 at 07:39:36 (UTC)
Goto Top
Ist schon eine Weile her . Hab aber noch meine Notizen von damals gefunden . Weiß aber gerade nicht , ob das der letzte Stand war.

______________________________________________

Neue VM erstellen und ausgeschaltet lassen.
Automatische Stopaktion ausschalten auf virtuellen Computer ausschalten stellen
Hardware Deaktivieren im Gerätemanager

Geräteinstanzpfad für das deaktivierte Gerät raussuchen und folgenden Befehl verwenden:

Disable-Pnpdevice -InstanceID "PCI\VEN_10DE&DEV_13F2&SUBSYS_115E10DE&REV_A1\6&F0CE26E&0&00800000"

$LocationPath = (Get-PnpDeviceProperty -KeyName DEVPKEY_Device_LocationPaths -InstanceId "PCI\VEN_10DE&DEV_13F2&SUBSYS_115E10DE&REV_A1\6&F0CE26E&0&00800000").Data

Dismount-VMHostAssignableDevice -LocationPath $LocationPath -Force -Verbose

Get-VMHostAssignableDevice

Locationpath notieren :

Set-VM VMNAME -GuestControlledCacheTypes $true
Set-VM VMNAME -GuestControlledCacheTypes $True -LowMemoryMappedIoSpace 2000MB -HighMemoryMappedIoSpace 4000MB
Get-VM VMNAME | fl *

Add-VMAssignableDevice -LocationPath "PCIROOT(3A)#PCI(0000)#PCI(0000)#PCI(1000)#PCI(0000)" -VMName VMNAME

_______________________________________________________

Gibt Dein Server Hersteller denn den Server für GPU Pass-Through durch . Das kann nämlich nicht jeder.

https://www.thomas-krenn.com/de/wiki/Virtualisierungsfunktion_SR-IOV_akt ...

Gruss
Member: itisnapanto
itisnapanto May 28, 2019 at 07:43:21 (UTC)
Goto Top
Member: DerWoWusste
DerWoWusste May 28, 2019 at 07:53:17 (UTC)
Goto Top
SR-IOV ist aktiv.
Welche Karte nutzt Du? Die ID müsste eine Tesla M60 sein, stimmt's?
Member: itisnapanto
itisnapanto May 28, 2019 at 07:55:21 (UTC)
Goto Top
Zitat von @DerWoWusste:

SR-IOV ist aktiv.
Welche Karte nutzt Du? Die ID müsste eine Tesla M60 sein, stimmt's?

Ja sind Tesla M60 Karten die wir nutzen .
Member: DerWoWusste
DerWoWusste May 28, 2019 at 08:33:17 (UTC)
Goto Top
So, nun bin ich einen Schritt weiter.
Ich habe nun eine weitere Karte getestet, moderner: Nvidia Quadro P2000. Als Gast-OS diesmal Win10 1803 und es läuft.
Nächster Test mit Server 2019 als Gast-OS.
Member: DerWoWusste
DerWoWusste May 28, 2019 at 09:14:24 (UTC)
Goto Top
Ok, auf Server 2019 das selbe Problem wie auf 2016!
Win10 als Gast, geht.
Server OS als Gast: geht nicht.

Was sagt uns das, Microsoft?
Keine Ahnung, warum die Server OS' da anspruchsvoller sind (nach dem 2. Reboot face-wink )
Member: itisnapanto
itisnapanto May 28, 2019 at 09:25:36 (UTC)
Goto Top
Zitat von @DerWoWusste:

Ok, auf Server 2019 das selbe Problem wie auf 2016!
Win10 als Gast, geht.
Server OS als Gast: geht nicht.

Was sagt uns das, Microsoft?
Keine Ahnung, warum die Server OS' da anspruchsvoller sind (nach dem 2. Reboot face-wink )

Doofe Frage , aber du hast schon den Treiber für Server genommen ?
Hast du das Problem auch mit dem Standardtreiber von Windows ?

Gruss
Member: DerWoWusste
DerWoWusste May 28, 2019 at 09:32:02 (UTC)
Goto Top
Ja, ich habe bei Nvidia Treiber für Server 2016/2019 runtergeladen.
Auch der Standardtreiber erscheint mit (!) im Gerätemanager.
Member: DerWoWusste
DerWoWusste May 28, 2019 at 11:35:03 (UTC)
Goto Top
Kommen wir mal zur simplen Frage an alle:
Mit welcher Kombination von Host-OS, Gast-OS und Grafikkarte läuft es bei Euch?
Member: itisnapanto
itisnapanto May 28, 2019 updated at 12:23:45 (UTC)
Goto Top
Zitat von @DerWoWusste:

Kommen wir mal zur simplen Frage an alle:
Mit welcher Kombination von Host-OS, Gast-OS und Grafikkarte läuft es bei Euch?

2016/2016 + Tesla M60.
Member: DerWoWusste
DerWoWusste May 28, 2019 at 12:55:12 (UTC)
Goto Top
Interessant. Und irgendwas, was bei Dir anders sein könnte als bei mir, Core-OS als Hypervisor, anderer Build als 1607...?
Member: itisnapanto
itisnapanto May 28, 2019 updated at 13:32:38 (UTC)
Goto Top
Zitat von @DerWoWusste:

Interessant. Und irgendwas, was bei Dir anders sein könnte als bei mir, Core-OS als Hypervisor, anderer Build als 1607...?

Meine Server sind für den Aufbau freigegeben und seitens des Herstellers freigegeben.

Entweder du prüfst deine Voraussetzungen selbst. Oder du wendest dich an den Hersteller.
Die Hardware muss eben ein paar spezielle Sachen hören . Den MS Link hatte ich weiter oben ja schon gepostet .

Gruss
Member: DerWoWusste
DerWoWusste May 28, 2019 at 14:00:54 (UTC)
Goto Top
Die Hardware muss eben ein paar spezielle Sachen hören
Da es auf Win10-Gästen geht, sieht es doch eher so aus, als läge es an einer Inkompatibilität dieser Karten zu Server-2016-Gästen. Das Board erscheint mir schuldfrei. Da wir den Server selbst gebaut haben, kann ich auch niemanden in die Pflicht nehmen. Dies ist nur ein Test auf einem Ersatzservermainboard - so soll es nicht produktiv gehen. Es wird nur geschaut, was unsere Software zu dieser Konstellation sagen würde. Diese Tests kann ich nun zumindest unter einem Win10-Gast fortführen.
Member: GrueneSosseMitSpeck
GrueneSosseMitSpeck May 29, 2019 updated at 09:14:02 (UTC)
Goto Top
Zitat von @itisnapanto:

Zitat von @DerWoWusste:

Ok, auf Server 2019 das selbe Problem wie auf 2016!
Win10 als Gast, geht.
Server OS als Gast: geht nicht.

viellicht kann das auch einfach der Grafiktreiber im Gast nicht oder es ist dort aktiv deaktiviert... wenn es ein Server-Gast ist und eine Karte die nur per Zufall für sowas geeignet ist weil zufällig ein artverwandter oder fast identischer Graphikchip drauf ist den auch für sowas zertifizierte Karten haben. Ich kenn des schon von GTX 690 Karten, bei denen das nur wuppte wenn man die durch das Umlöten von vier SMD Wiederständen zu einer Grid K2 oder zu einer Tesla gemacht hat. Wobei die Tesla Variante den Vorteil hat daß die DVI und sonstigen Ausgänge im Betrieb mit einer physischen Umgebung weiterhin nutzbar sind, die K2 nicht.

Mit einer GTX 660 hatte ich sowas (DDA) auch mal am Laufen bis am Tag X ein Fragezeichen im Gerätemanager meine Bemühungen zunichte gemacht hat. Und da sucht man sich dann tot und erhält auch von niemandem Support.
Member: DerWoWusste
DerWoWusste May 29, 2019 at 10:33:12 (UTC)
Goto Top
Ok.
Welche Kombi aus host-OS, Gast-OS und Graka lief bei dir dauerhaft?