GPU-Passthrough Nvidia vs. AMD + Sound (ohne HW)

mr44er

moderater Moderator
Teammitglied
Ich plane mir eine Kiste ins Netz zu stellen, virtualisiert ein Win10 laufen zu lassen und an das Windows die GPU durchzureichen. Soweit so gut, rumgepfuscht mit proxmox habe ich damit schon und konnte über Steam daddeln.

Den Flaschenhals per Netzwerk mal außen vor gelassen, laggy ist das sowieso. ;)

Meine offenen Fragen hierzu:

1.) Nvidia fand es wohl ultrawitzig, ab einer bestimmten Version auf Treiberebene die Funktionalität zu blocken, weil 'böser User, wenn du sowas nutzen willst, kauf unsere teuren Nicht-Consumer-Modelle'. Kann man das noch immer per ausgedachter ID aushebeln oder gibts die Möglichkeit gar nicht mehr?

2.) Gehe ich recht in der Annahme, dass es dem Treiber bei AMD ausnahmslos egal ist, welche Karte er durchgereicht befeuert oder versucht man da auch mittlerweile die Kundschaft als Melkvieh zu ärgern?

3.) Ich muss nicht unbedingt proxmox einsetzen (da nervt mich schon allein der Zwang gleich große Platten für ZFS nutzen zu müssen). Gibts noch was besseres, andere Empfehlungen? Ich scheue mich auch nicht, den Spaß auf einem debian aufzuziehen oder ist das mittlerweile auch schon mit FreeBSD realisierbar?

4.) Mir fiel auf, dass sich das Streambild hinsichtlich der Auflösung am physikalisch angeschlossenen Monitor limitiert. Auf deutsch: 1920x1080er Monitor physikalisch an der durchgereichten GPU angeschlossen -> Streamauflösung max. 1920x1080
Ist das umgehbar mit Blindadaptern oder sind die nur dafür da, einen angeschlossenen Monitor vorzugaukeln, damit die GPU an dem Anschluß überhaupt Bild bringt?

5.) Wie sieht das aus mit mehreren virtuellen Win10-Maschinen? Kann ich parallel auf einer Karte von z.B. zwei virtuellen Win10-Maschinen 3d-Anwendungen laufen lassen oder ist das 'Exklusiv'-Zugriff auf die jeweilige GPU und ich müsste zwei Karten verbauen?
Noch weiter gesponnen: kann ich gleiche Karten im Verbund (SLI, Crossfire oder was auch immer grade aktuell ist) nutzen und wenn ja, den Verbund auf mehrere virtuelle Maschinen durchreichen? Ginge sogar der Oberluxus einer Priorisierung wie win10_a (25% max. von GPU-Verbund1) und win10_b (75% max. von GPU-Verbund1)?

6.) Weiteres was mir im Kopf rumspukt: Bekomme ich Mehrkanalsound aus der virtuellen Maschine auf dem StreamempfangsPC, wenn die physikalische Maschine gar keine Soundkarte hat? Dass Stereo geht, weiß ich.


Tipps, Stolperfallen und was euch sonst dazu einfällt, nehme ich wie immer gerne entgegen. :)
 
1.) Nvidia fand es wohl ultrawitzig, ab einer bestimmten Version auf Treiberebene die Funktionalität zu blocken, weil 'böser User, wenn du sowas nutzen willst, kauf unsere teuren Nicht-Consumer-Modelle'. Kann man das noch immer per ausgedachter ID aushebeln oder gibts die Möglichkeit gar nicht mehr?

Unter qemu funktioniert es mit dem Parameter -cpu host,kvm=off,hv_vendor_id=anything nach wie vor.

2.) Gehe ich recht in der Annahme, dass es dem Treiber bei AMD ausnahmslos egal ist, welche Karte er durchgereicht befeuert oder versucht man da auch mittlerweile die Kundschaft als Melkvieh zu ärgern?

Der AMD-Treiber ist diesbezüglich noch leidenschaftslos.

NVIDIA gewinnt bestimmt keinen Friedensnobelpreis, aber ich kann deren Marktsegmentierung verstehen. Schließlich will die GPU-Virtualisierung auch finanziert werden, dafür bittet man entsprechend wenig preissensible Kunden etwas mehr zur Kasse.

Ferner hält man sich so geschickt die Billigheimer mit Frickelsystemen vom Leib, die Supportkapazitäten binden und für ihre dysfunktionalen Bastelsysteme dem GPU-Hersteller lauthals die Schuld geben.

3.) Ich muss nicht unbedingt proxmox einsetzen (da nervt mich schon allein der Zwang gleich große Platten für ZFS nutzen zu müssen). Gibts noch was besseres, andere Empfehlungen? Ich scheue mich auch nicht, den Spaß auf einem debian aufzuziehen oder ist das mittlerweile auch schon mit FreeBSD realisierbar?

FreeBSD kann ich dir nicht beantworten. Unter Arch Linux funktioniert es einwandfrei.

Für den Einsatzzweck würde ich debian tunlichst meiden. Im Bereich GPU-Virtualisierung bringt aktuell jede neue Kernel-Version Fortschritte, für die man auch das passende aktuelle Userland braucht. Das verträgt sich nicht mit den vergammelten Versionen, die debian alle Schaltjahre mal auf eine dann bereits 3 Jahre alte Version hochzieht - wenn überhaupt.

Wer stattdessen debian testing nehmen will, kann auch gleich eine ordentlich aktualisierte Distribution nehmen.

4.) Mir fiel auf, dass sich das Streambild hinsichtlich der Auflösung am physikalisch angeschlossenen Monitor limitiert. Auf deutsch: 1920x1080er Monitor physikalisch an der durchgereichten GPU angeschlossen -> Streamauflösung max. 1920x1080

Ist das umgehbar mit Blindadaptern oder sind die nur dafür da, einen angeschlossenen Monitor vorzugaukeln, damit die GPU an dem Anschluß überhaupt Bild bringt?

Kein oder - Blindadapter gaukeln einen angeschlossenen Monitor mit einer bestimmten Maximalauflösung vor, weil Spiel und GPU letzten Endes für eine bestimmte Auflösung das Bild erzeugen müssen und es normalerweise sinnlos ist, eine nicht anzeigbare Auflösung auszugeben.

5.) Wie sieht das aus mit mehreren virtuellen Win10-Maschinen? Kann ich parallel auf einer Karte von z.B. zwei virtuellen Win10-Maschinen 3d-Anwendungen laufen lassen oder ist das 'Exklusiv'-Zugriff auf die jeweilige GPU und ich müsste zwei Karten verbauen?

Ersteres geht mit den bestimmten Workstation- bzw. Server-Karten unter Linux (RHEL) und VMware (meines Wissens auch XenServer), nennt sich vGPU. Es funktioniert aber nur in sehr speziellen Setups. Was mit welcher Karten unter welcher Umgebung funktioniert, kann man bei den Herstellern nachlesen.

Für Desktop-GPUs gibt es bei Linux einen experimentellen Support für Intel iGPUs (GVT-g). Bei AMD und NVIDIA gibt es (noch) nichts. Aufgrund der Schwachbrüstigkeit der iGPUs von Intel dürfte sich das aber erst lohnen, wenn Intel dedizierte GPUs auf den Markt wirft, die auf dieser Vorarbeit aufbauen können.

Für den Hausgebrauch ist aktuell nur PCI Passthrough a.k.a. dGPU empfehlenswert, d.h. 1 GPU exklusiv für 1 VM.

Noch weiter gesponnen: kann ich gleiche Karten im Verbund (SLI, Crossfire oder was auch immer grade aktuell ist) nutzen und wenn ja, den Verbund auf mehrere virtuelle Maschinen durchreichen? Ginge sogar der Oberluxus einer Priorisierung wie win10_a (25% max. von GPU-Verbund1) und win10_b (75% max. von GPU-Verbund1)?

Beides - mehrere GPUs für eine VM und eine GPU für mehrere VMs - funktioniert schon heute schon. Priorisierung geht eingeschränkt, ist aber nicht so flexibel, das es GPU-übergreifend funktionierend würde. Bei mehrere VMs auf einer GPU kann aber nicht genutzte Rechenzeit einer VM von einer anderen VM auf der selben GPU in Anspruch genommen werden (ähnlich wie bei vCPUs).

6.) Weiteres was mir im Kopf rumspukt: Bekomme ich Mehrkanalsound aus der virtuellen Maschine auf dem StreamempfangsPC, wenn die physikalische Maschine gar keine Soundkarte hat? Dass Stereo geht, weiß ich.

Gute Frage. An 20€ für eine Soundkarte in der physikalischen Machine scheitert es aber hoffentlich nicht.

Tipps, Stolperfallen und was euch sonst dazu einfällt, nehme ich wie immer gerne entgegen.

Mein Tipp: lass es.

Ich hatte schon ein Setup mit PCI passthrough für OpenCL-Programmierung parat, deswegen war mein Test mit Windows 10 wenig Mehraufwand. Ansonsten verbuche ich es unter der Rubrik "Zeitverschwendung":
  • Manche Spiele funktionieren mit PCI passthrough einfach nicht.
  • Die Gefahr, das nach einem beliebigen Kernel-, Userland-, Windows- oder Grafikkartentreiber-Update das Setup nicht mehr funktioniert, ist noch recht hoch.
  • Wenn man den Erfahrungsberichten in den Foren glauben darf, erkennen viele Anti-Cheater-Programme (die jedes Online-Spiel heute mitbringt) eine VM als Anomalie und Betrugsversuch - was im Normalfall zur zeitnahen und permanenten Sperrung des Accounts führt. Hat man eine Desktop-GPU von NVIDIA in einer VM mit versteckter Virtualisierung, geht das noch schneller bei noch mehr Spielen.
Selbst wenn man die eigene Zeit nur zum Mindestlohn verrechnet, ist die Anschaffung eines dedizierten Windows-Spiele-PCs auf jeden Fall günstiger, zuverlässiger und stressfreier. Die gesparte Zeit kann man für sinnvollere Tätigkeiten verwenden.
 
Selbst wenn man die eigene Zeit nur zum Mindestlohn verrechnet, ist die Anschaffung eines dedizierten Windows-Spiele-PCs auf jeden Fall günstiger, zuverlässiger und stressfreier. Die gesparte Zeit kann man für sinnvollere Tätigkeiten verwenden.
Zumindest unter Linux ist Wine mit DXVK inzwischen eine sehr ernstzunehmende Alternative zum nativen oder virtualisierten Windows, wenn es nur um Spiele geht. Auch aktuelle Titel wie z.B. Anno 1800 laufen damit direkt ohne großes Gefrickel direkt out of the Box.
 
Yeah, danke für die ausführliche Antwort, damit habe ich die Möglichkeiten im Überblick.

Ansonsten verbuche ich es unter der Rubrik "Zeitverschwendung"
Dass das in die Richtung geht, weiß ich. Meine Hauptprio ist da eher einen logistischen Vorteil fürs Wohnzimmer zu gewinnen, damit ich nicht mehr vier/fünf PCs je Zweck nebeneinander stehen habe, indem ich die Rechenkraft ins Nebenzimmer verfrachte und von einer Arbeitsstation aus die Strippen ziehe. Mit online-Spielen kann ich nichts anfangen, dieser Kelch ging an mir vorüber und auch sonst bin ich im Verzicht recht gut. Die Singleplayer-Spiele auf Win10 mit Steam wären der Bonus und Komfort für mich, was mir die Frickelei wert wäre. Aber hauptsächlich für mich rechtfertigend ist der Luxus, eine virtuelle Maschine hochfahren zu können, wenn man gerade mal das Windows benötigt.
Darüber hinaus erfreue ich mich dann schon insgesamt an der Sache, ganz klassisch nerdy. :D
 
Die Singleplayer-Spiele auf Win10 mit Steam wären der Bonus und Komfort für mich, was mir die Frickelei wert wäre. Aber hauptsächlich für mich rechtfertigend ist der Luxus, eine virtuelle Maschine hochfahren zu können, wenn man gerade mal das Windows benötigt.

Falls du doch bei einem dedizierten Win10 bleiben solltest, könntest du den ins Nebenzimmer verfrachten und per Steam Link streamen. Neben Android und iOS gibt es die Steam Link App auch für den Raspberry Pi (3B / 3B+) mit Raspbian.

Ich habe es selbst kurz getestet und es funktionierte ganz ordentlich. Allerdings war das wirklich nur ein kurzer Funktionstest. Intensiv zum austesten konnte ich es bisher leider nicht.
Wäre vielleicht nicht so nerdy wie eine VM mit durchgereichter GPU, aber auch ein interessantes Bastelprojekt. ;)

Steam Link App KB Artikel
 
Ah ok. Da ich mir den Namen der Funktion nicht gemerkt habe (ich hab mitbekommen, dass Steam streamen kann), kommt mir das 'Steam Link' jetzt wieder wie ein neues Feature vor. Wenn man nicht immer am Ball bleibt...:p
 
Zurück
Oben