[Lösung] Passthrough für Nvidia Geforce GTX Consumer GPUs in VSphere (ESXi) 6.0

Wo klemmt es denn?
Ganz wichtig war eigentlich nur hypervisor.cpuid.v0 = false für die VM zu setzen, damit der Grafiktreiber installiert werden kann. Auch muss der eingestellte Arbeitsspeicher fest reserviert werden. Beim Passthrough müssen beide Geräte durchgereicht werden, also das Grafikdevice und auch das Audiodevice. Und ganz wichtig, die VM muss über EFI gebootet werden. Ich hatte es mit Windows 7 und auch Windows 8 probiert, funktioniert hat es allerdings nur richtig mit Windows 10. Kann sein, dass man den SVGA VMware Grafkadapter noch deaktivieren muss, das war allerdings bei mir nicht nötig, bzw hat dann zu Problemen geführt. Über die VMWare Konsole kommt man allerdings jetzt nicht mehr auf die Maschine, nur noch per RDP oder eben direkt vorm Bildschirm ;-)
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Passt nicht 100% in den Thread... Aber hat schonmal einer Versucht die integrierte GPU von den Intel CPUs an eine VM zu überreichen? (Bin grad auf die Schnappsidee aufgrund eines Post im andren Thread gekommen).
Theoretisch könnte man so auch einen guten Desktop kriegen mit bisschen Leistung :fresse:
 
Hier noch ein paar mehr Leute die es geschafft haben und auch ein paar Hilfestellungen bei Problemen ;).

PCI Passthrough in ESXi for consumer Nvidia cards. : nvidia

- - - Updated - - -

Lustig auch das Zitat von ObviouslyTriggered:
"Why this this news? there is an official VMware KB for this.
hypervisor.cpuid.v0 = "FALSE" adds a spoof to prevent the guest from seeing the hypervisor; this is used when you need to run nested hypervisors mostly because normally you can't install VMware Workstation or Hyper-V on a guest.
This does reduce performance and has some issues with how memory is paged for the guest, all what NVIDIA does is checks in the driver if the hypervisor is enabled and if so just tells you haha go buy a quadro. There is also a flag for Xen and for Hyper-V to do the same :)"

Interessant das soviele Leute solange daran gescheitert sind...
 
Passt nicht 100% in den Thread... Aber hat schonmal einer Versucht die integrierte GPU von den Intel CPUs an eine VM zu überreichen? (Bin grad auf die Schnappsidee aufgrund eines Post im andren Thread gekommen).
Theoretisch könnte man so auch einen guten Desktop kriegen mit bisschen Leistung :fresse:

Das funktioniert auf einem Intel NUC problemlos. Ich hatte das glaube ich auf einem T20 auch schon mal genau so eingerichtet. Du reichst es ganz normal wie eine PCI-E Karte durch.
 
Ich hatte mal wieder etwas Zeit: ich habe also nicht nur gefühlt den halben Keller umgeräumt, 4 Rechner umgezogen/umkonfiguriert, sondern auch noch einmal mit NVME-Boot auf alten Systemen (nicht erfolgreich) und NVIDIA Consumer-GPU-Passthrough (erfolgreich) herumgespielt.

Hardware: Intel S1200BTLR mit Xeon E3-1225v1
Graka: NVIDIA Geforce GT 610
USB-Controller: Sedna – PCI Express 4 Port (4E) USB 3.0 Adapter
Hypervisor: ESXi-6.5.0-20170702001-standard

HOWTO: ESXi 6.5U1 NVIDIA CONSUMER GPU PASSTHROUGH

0. Vorbereitung:
a) BIOS-Settings (Mainboard-abhängig!): vt-x/vt-d sind Pflicht. Ich habe bei mir außerdem im BIOS "Dual Monitor" auf "enabled" gesetzt. Hat den kleinen Vorteil, dass der Host noch einen Bildschirm hat und zusätzlich die onboard-Grafik für die ESXi-Browserkonsole funktioniert. Macht die Fehlersuche ggf. etwas einfacher, man sieht z.B. den Purple-Screen-of-Death sofort. ;)
Darüber hinaus habe ich UEFI-Boot eingestellt, allerdings auch Legacy BIOS von Adapterkarten (HBA, Graka & Co.) zugelassen.
Hinweis: ESXi habe ich dann auch von einem UEFI-Bootlaufwerk installiert.
b) In ESXi Passthrough für die gewünschten Geräte aktivieren (USB-Controller für Keyboard/Maus, Graka für...na was wohl).

1. Host: VM erstellen
Hinweis 1: ich habe als Startoption nichts verändert, d.h. die VM hat ein "legacy BIOS".
Hinweis 2: ich habe VMXNET3 als NIC ausgewählt.

2. Host: VM anpassen (Teil 1)
a) CPU-Einstellungen
01_VM_CPU.jpg

b) RAM-Einstellungen
02_VM_RAM.jpg

c) Erweiterte Einstellungen
03_VM_Options.jpg

d) USB-Controller durchreichen
03a_VM_PassTUSB.jpg

3. VM: OS Installieren
Hinweis: bei mir Windows 10 64Bit Fall Creators Update (1709)

4. VM: VMware Tools installieren (ich mach immer "vollständig")

5. VM: Herunterfahren
(Vorsichtshalber, um den Ruhemodus zu vermeiden: cmd-->shutdown /s /t 0)

6. Host: VM anpassen (Teil 2)
a) Grafikkarte als PCI-Passthrough-Gerät hinzufügen

7. VM: starten / Windows konfigurieren
a) NVIDIA-Treiber installieren (ich hab den aus dem Windows-Update genommen)
04_GPU-DriverInstall.jpg

b) reboot
c) VMware-GPU (VMware SVGA 3D) deaktivieren
d) reboot

EXKURS/OPTIONAL (falls VM-reboot den Host in einen ESXi-Purple-Screen-Of-Death schickt)


Hinweis: Ohne die Schritte 7.1 und 7.2 verabschiedet sich ESXi bisweilen in einen PSOD (purple screen of death), wenn man die VM über die Funktion im Windows-Startmenü (oder über shutdown-cmd) herunter fährt und dann wieder über den Webclient startet. Nach einem harten RESET des Hosts geht's dann aber wieder. Man muss also den Host auch jedes Mal restarten, wenn Windows einen Reboot will.

Bisserl Doof. Bei mir lässt sich die VM mit den Schritten in 7.1 und 7.2 sauber aus der VM heraus herunter fahren und über den ESXi Webclient dann auch wieder starten.

7.1. Host: VM anpassen (Teil 3)


Ich habe entsprechend diesem Nvidia-Hinweis auch noch einen weiteren Parameter manuell eingefügt, nämlich
Code:
pciPassthru0.msiEnabled = FALSE

Ich hab das vorsichtshalber für alle meine durchgereichten Geräte gemacht (USB, GPU + GPU-Audio), würde wahrscheinlich reichen, das nur für die GPU zu machen:

msi_disabled.jpg

7.2. Host: passthru.map editieren
Mit SSH auf den Host verbinden, Datei /etc/vmware/passthru.map editieren und den Eintrag unter "# NVIDIA" von "bridge" auf "link" bzw. d3d0 setzen. Sieht dann bei mir z.B. so aus:

Code:
# passthrough attributes for devices
# file format: vendor-id device-id resetMethod fptShareable
# vendor/device id: xxxx (in hex) (ffff can be used for wildchar match)
# reset methods: flr, d3d0, link, bridge, default
# fptShareable: true/default, false

(...)

# NVIDIA
#10de  ffff  bridge   false
10de  ffff  link     false

passthru.map (END)
8. Success!
"Old-school-Screenshot" ;)
Final.jpg

Exkurs/Bemerkungen: Mit dieser asbach-uralt Grafikkarte ging das alles erstaunlich einfach. Auch ein Reboot, sowohl der VM als auch des Hosts, führt zu keinen Problemen (im Netz liest man ab und an, dass dann Einstellungen verloren gehen). Auch musste ich keine besonderen manuellen Hardcore-Anpassungen vornehmen. Ging alles mit dem VMware Webclient.

Witzig: trotz der deaktivierten VMware-GPU funktioniert die Browser-Konsole! Windows in der VM erkennt (trotzdem) zwei Monitore und erweitert den Desktop. Auch Maus und Keyboard funktionieren in der Browser-Konsole, allerdings manchmal mit einem üblen Versatz des Mauszeigers auf dem Bildschirm zur "echten" Position. Dann hilft es, die Browser-Konsole zu schließen und neu zu öffnen. Damit ich nicht meinen Mauszeiger verliere und wahrscheinlich auch um sonstige weitere Fehler auszuschließen, habe ich in den Windows-Grafikeinstellungen eingestellt, dass Windows nur den "echten" Bildschirm verwendet ("Nur auf Bildschirm 2 anzeigen.") - Nachteil: dann funktioniert die Browserkonsole nicht mehr, sobald Windows gestartet ist. Nutzt man nur "Bildschirm 2", empfehle ich auch die VM ohne Broswerkonsole starten (statt Klick auf die Vorschau z.B. mit Rechtsklick auf die VM), sonst landet man ggf. in Windows bei 640x480 und muss das dann wieder manuell ändern...

Ich habe aber das Gefühl, dass Erfolg und Misserfolg sehr von der verwendeten Graka abhängen. Also: "Your mileage may vary."

Ich benutz' das Ding nur als "Surfbox" - 3D-Funktionalitäten werde ich daher nicht testen (können). Werde jetzt noch bisserl mit dem HDMI-Audio (theoretisch auch "passhthrough-bar") und Filmchen schauen experimentieren.

NACHTRAG zu ESXi 6.7:

Seit 6.7(U1?) reichen die oben beschriebenen Einstellungen teilweise nicht mehr, dass eine VM problemlos rebootet. Häufig funktioniert nach einem VM-Reboot die Nvidia passthrough-GPU nicht mehr und meldet "Error 43". Habe dazu einen Workaround herausgeknobelt, der jedenfalls mit einer 2080Ti, ESXi 6.7U3 und einem AMD X399-Chipsatz / Threadripper funktioniert.
 
Zuletzt bearbeitet:
Du sagst doch, dass der Host abkratzt, wenn man über Webclient die Maschine wieder - aber wenn Windows direkt neustart macht?
 
Du meinst unter dem Startmenü „Neustart“ anstelle „Herunterfahren“?
 
Gleiches Ergebnis: ESXi crashed mit 'nem purple screen.

"LINT/NMI: (motherboard nonmaskable interrupt) undiagnosed... "

IMG_3513.jpg

Hab schon nach diesem Artikel den Parameter "pciPassthru0.msiEnabled" auf "FALSE" gesetzt, bringt aber leider auch keine Besserung.
 
Zuletzt bearbeitet:
STRIKE! Hab's scheinbar hinbekommen! Jedenfalls ein erster shutdown und neustart ohne Host-reboot war jetzt erfolgreich!

Per SSH in /etc/vmware/passthru.map folgende Parameter für Nvidia editiert und von "bridge" auf "link" geändert:

Code:
(...)
# NVIDIA
10de  ffff  link     false

Hab mein Posting oben mal angepasst. Ist quasi ein kleines HowTo geworden. Wäre mal interessant, ob das nur für diese Hardware so funktioniert oder verallgemeinerungsfähig ist.

Mal weiter testen...
 
Zuletzt bearbeitet:
Ich würds gerne überprüfen, aber zurzeit leider keine Hardware die frei wäre für sowass :(
Jedenfalls interessant und mal auf die Merkliste geschrieben :)
 
Ich hab hier noch ein paar Nvidia Grakas (GTX260, GTX285, GTX680, GTX1080Ti), mit denen ich das theoretisch auch noch probieren könnte, die passen aber so nicht in das aktuell verwendete Gehäuse dieser Lab-/Testkiste... muss mal schauen, ob ich Lust finde, das jetzt nur fürs Testen schon wieder umzubauen...

Ansonsten probiere ich das vielleicht auch noch mal mit dem „großen“ auf Basis Sockel 3647.
 
Ok... Hat mir keine Ruhe gelassen. Test Nr. 2:

Hardware wie oben , nur als Graka meine alte GTX285.

Reboot der VM ohne Purple Screen funzt ohne Schritt 7.1 und 7.2!

ToDo: Test mit GTX680 / GTX1080Ti. Meine 980Ti steht als Dauerleihgabe im Freundeskreis leider nicht für Testzwecke zur Verfügung.
 
Zuletzt bearbeitet:
Danke besterino!

Damit werde ich wohl dann auch meinen Werkstatt-PC virtualisieren, im Server sind schon 2 Quadro 400 drin mit denen sollte des ja auch gehn
 
Bevor du die Disk mit der bare Metal Installation wegwirfst aber bitte ordentlich testen. Das ist alles hier nur nach erstem und vielleicht noch zweiten Eindruck funktional. :d
 
So, erster Test mit GTX1080 erfolgreich:

GPU_PT_1080ti.jpg

Auch hier musste ich die passthroug.map nicht editieren und habe auch nicht die zusätzlichen Parameter in der VM-Konfig gesetzt (Schritte 7.1 und 7.2 oben) - funktionierte einfach so.

Nice. Und kagge - jetzt juckt's mich ja schon in den Fingern, mal ein paar Games und Benchmarks anzuwerfen... :d
 
Zuletzt bearbeitet:
Tja - Wir warten auf Ergebnisse. Jetzt bist du schon zu tief drinnen, als noch rauskommen zu können^^ :p
 
Ahjo, dazu muss ich jetzt erstma wieder was umräumen. Gescheiten Monitor dran, Games installieren usw. Eine Runde versuche ich bestimmt mal.

So: Monitor 27"@2560x1440 läuft. Sound über Nvidia-->HDMI auch. Steam ist installiert und TCSix:Siege ist im Download...

...und läuft auf WQHD und Medium Settings bei 40-60FPS. Die VM darf alle 4 Kerne nutzen und hat 16GB RAM. Und Sound funzt auch nicht gescheit - das muss ich mal noch in anderen Anwendungen testen.

Zum Vergleich: auf einem i7-7700K (ohne Overclocking), 32GB RAM und der gleichen Graka sind’s 150+, meine auf höchster Qualität - kann’s grad nicht nachschauen. ;)

Als nächstes müsste ich wohl doch noch ein natives System aufsetzen, um zu sehen, wie viel durch die Virtualisierung verloren geht. Man kann bestimmt auch noch tweaken (Sound wäre schon gut).
 
Zuletzt bearbeitet:
Das wäre halt echt nice ^^ - ich mein, so ein performanter Server mit Storage und dann fährste damit zum zocken ^^ - interessant wäre jetzt noch mehr als eine Graka ^^
 
Ok... irgendwas läuft nicht richtig. Bare Metal bin ich bei 150-220+ FPS, unter ESXi bei 30-50. Lohnt nicht so richtig.
 
i7 7700k hat auch 4.2 oder so GHz, der Xeon ja deutlich weniger?
 
Sorry, ungenau ausgedrückt: die 150-220FPS sind auf dem gleichen System nur ohne Hypervisor dazwischen. Hab genau um das rauszufinden einmal Win10 aufs Blech installiert.

Eine Möglichkeit kann ich noch ausprobieren, die evtl. Probleme macht. Habe aber keine große Hoffnung, dass ich darüber viel Performancegewinn erreiche.
 
Kenne mich in esxi nicht aus. Aber evtl stört die freie CPU Rotation. Gibt es CPU-Pinning?
 
Also, hier die Testdaten:

System: Xeon E3-1225(v1), 32GB, GTX1080Ti
Game: Tom Clany's Rainbow Six:Siege
Auflösung: 2560x1440, very high
Ingame-benchmark

Baremetal:

BareM_VeryHigh_WQHD.jpg

Passthrough:

PassT_WQHD_VeryHigh.jpg

Meine Idee hat leider nicht so richtig geklappt.

- - - Updated - - -

Kenne mich in esxi nicht aus. Aber evtl stört die freie CPU Rotation. Gibt es CPU-Pinning?

Gibt es. Muss ich mal mit rumprobieren. Habe mal parallel zum Game-Benchmark den Ressourcenmonitor und Taskmanager (für GPU-Auslastung) laufen lassen. Die CPU ist in der Tat bei 100%, die GPU dümpelt bei 30% rum.

Vielleicht ist es auch nicht so clever, der VM alle 4 Cores zuzuweisen - vielleicht bleibt dann nicht mehr "genug" für ESXi selbst? Werde das mal ausprobieren. Stay tuned... ;)

Weiteres Update: Bringt alles nicht so viel. Ich hab mal testweise nur 3 Cores an die VM zugewiesen und diese "gepinned" in Form von Core 1-3 (also alle außer "0"), und der Einbruch ist deutlich: Avg. FPS bei <30, min. FPS <=7 und max. FPS <75. Schlechteres Ergebnis als bei "nicht gepinnten" Cores vor allem bei "min. FPS" (avg. FPS <60, min. FPS <=30, max. FPS <75).

Habe auch mal die Art der CPU geändert von 4Sockel je 1Core auf 1Sockel mit 4 Cores. Bringt bisken was, aber nicht die Welt (wahrscheinlich auch noch innerhalb der Messtoleranzen).

Spiele jetzt noch ein wenig mit den Virtualisierungsptionen (MMU) herum, bevor ich mal eine VM mit UEFI-Bios probiere (keine Ahnung ob das was bringt).

- - - Updated - - -

Hmmm...

CPU/MMU-Virtualisierung auf "Hardware-PU, Software-MMU" sieht gar nicht so schlecht aus:

PassT_HardCPU_SoftMMU.jpg

Fehlt noch bisserl was bei maxFPS. ;)

Automatic bringt dann eher wieder nichts mehr bzw. ist schlechter:

PassT_Automatic.jpg
 
Zuletzt bearbeitet:
ok...nun wird's interessant: mit EFI-BIOS in der VM gibt's bei den minFPS eine Verbesserung - und zwar wird das dann sogar besser als bare-metal:

Benchmark_EFI.PNG

Und in der Tat schein eher die CPU als die Graka zu limitieren, hier Benchmark auf Ultra-Settings:

Ultra.jpg
 
Zuletzt bearbeitet:
Die HDMI-Soundausgabe bekomme ich irgendwie nicht vernünftig ans Laufen. Liest man auch im Netz, dass es damit wohl (sehr oft wenn nicht immer) Probleme gibt. Hab jetzt mal ein USB-Headset (Logitech Clear an die durchgereichte USB3-Karte angeschlossen. Lüppt. Auch mit Siege. :)

Es ist durchaus spielbar.
 
Ein Held der Mann. :bigok:
Jetzt habe ich irgendwie lust gekriegt, selbst rumzuspielen -.-
 
Machma und sieh zu, dass du die Performance noch hochgeschraubt und HDMI-Sound der Graka ans Laufen bekommst! :)

Achja und Edit: Erfahrungen, Ergebnisse, Settings usw. natürlich fleißig hier posten! :d
 
Zuletzt bearbeitet:
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh