Grafikbeschleunigung in VMs - Stand der Dinge Mitte 2021?

Ranayna

Vice Admiral
Registriert
Mai 2019
Beiträge
6.485
Hallo zusammen,

ich habe mich jetzt eine gefuehlte Ewigkeit nicht mehr mit Virtualisierung im privaten Umfeld beschaeftigt.
Aus diversen Anlaessen moechte ich das jetzt aber gerne wieder tun, insbesondere um mir ein paar Linux Distributionen einmal naeher anzuschauen, und bei diesen explizit auch die Spieletauglichkeit.

Was ist aktuell der Stand bei der Grafikbeschleunigung in Virtualisierung unter Windows?
Ich habe immer noch im Kopf, dass das entweder nur sehr rudimentaer funktioniert, oder eine dedizierte Grafikkarte braucht, die man an die VM durchreicht.

Hat sich das inzwischen geaendert? Auch grafiklastige Anwendungen funktionieren inzwischen in den grossen VDI Umgebungen gut... Da wird doch was ins private Umfeld durchgesickert sein?
Kann ein Linux Host das moeglicherweise deutlich besser?
 
Hi,

Ich hab seit ca 2 Jahren einen Proxmox-Server (Linux) mit einem ryzen 3 1300x (keine APU) und einer einzelnen dedizierten GPU (inzwischen eine rx480).

Diese Grafikkarte kann ich an eine beliebige VM durchreichen und damit Grafikanwendungen/Spiele ausführen.

Klar brauch ich dafür eine (dedizierte) GPU, aber die braucht man ja eh generell.

Der Proxmox host ist per Weboberfläche erreichbar
 
Ranayna schrieb:
Ich habe immer noch im Kopf, dass das entweder nur sehr rudimentaer funktioniert, oder eine dedizierte Grafikkarte braucht, die man an die VM durchreicht.
Genau das ist "the way to go" auch heute noch.

Klar gibts alternativ die Möglichkeit die Grafikkarte mit dem Hostsystem zu teilen und dieses stellt dann via VM-Treiber die benötigten Funktionen zur Verfügung. Das gibts auch schon länger. Und wenn, muss man halt gucken was man braucht (bei Windows-Spiele ist das ja gern mal DirectX bzw. Direct3D), ob das die VM-Software anbietet und ob das auch mit der eigenen Grafikkarte möglich ist.
Oder anders gesagt: Eine pauschale Antwort lässt sich da gar nicht geben. Und es nützt Dir ja auch nix, wenn Dir jemand sagt "Ja geht" und dann geht es bei Deiner Grafikkarte oder bei dem Spiel was Du spielen willst ausgerechnet nicht. Von daher, wenn Du ne konkrete Auskunft haben willst, musst Du auch die Fragestellung konkretisieren.
 
  • Gefällt mir
Reaktionen: madmax2010
Meines ruditmentären Wissens nach braucht man für PassThrough doch mindestens 2 Grafikkarten -eine für die Darstellung & eine für die Durchreichung- und ist mit einer Grafikkarte alleine nicht bedient?

Habe in der Vergangenheit auch eher miese Erfahrungen mit der VM bei Spielen machen müssen. Z.B. Alte Spiele, welche selbst bei einer RTX 2080 ruckelten usw.
 
Ok, dann etwas konkreter ;)
An den bisherigen Antworten merke ich das ich vielleicht genauer haette sein muessen...

Mein Stand der Dinge:
Ich habe meinen Desktop Rechner mit Windows 10 20H2.
Hardware, unter anderem: 5900x, 6900XT und 32 GB RAM.

Mein Ziel: Unter Windows eine VM starten koennen, die einen Teil meiner GPU mitbenutzt und dem Host noch genug Power fuer "normales", nicht GPU lastiges Arbeiten zu lassen.
Dann moechte ich in den Gaesten GPU Power zur Verfuegung haben, um mit verschiedensten Linux Distributionen die allgemeine Spieletauglichkeit testen zu koennen.

Alternativ das ganze mit einem Linux Host, damit ich dann unter Windows spielen kann, und mit dem Host, oder weiteren VMs, die Spieletauglichkeit testen kann.

Wenn das tatsaechlich auch heutzutage mit einer einzelnen GPU noch nicht geht, werd ich mir was anderes ueberlegen muessen.
 
Der Weg ist auch heute noch eine Dedizierte Grafikkarte in den Gast durchzureichen. Für ML oder andere usescases gibt es ggf alternative Ansätze.

Mir wäre aber nicht bekannt das Host und VM die Grafikkarte für gaming teilen könnten.
 
  • Gefällt mir
Reaktionen: madmax2010
@Ranayna Das was du beschreibst ist unter den Stichworten SR-IOV und MxGPU (AMD) zu finden, ist aber im Profibereich angesiedelt und m.W. nicht mit Consumer Hardware möglich. Du wirst also den klassischen Weg gehen müssen und die Karte durchreichen, wenn du das tun willst.
 
Seby007 schrieb:
Meines ruditmentären Wissens nach braucht man für PassThrough doch mindestens 2 Grafikkarten -eine für die Darstellung & eine für die Durchreichung- und ist mit einer Grafikkarte alleine nicht bedient?
Nicht unbedingt. In der Praxis läuft es aber i.d.R. darauf hinaus.
Das Problem ist halt, das der Gast die Karte exklusiv kriegt. Aber der Host hat sie ja meist schon in Beschlag für seine Anzeigen.
Aber im Prinzip könntest Du auch nur eine Grafikkarte haben. Zum Beispiel in dem Du dem Hostsystem nur eine serielle Konsole gibst so das der gar keine Ausgaben über die Grafikkarte/Monitor machen muss.

Seby007 schrieb:
Habe in der Vergangenheit auch eher miese Erfahrungen mit der VM bei Spielen machen müssen. Z.B. Alte Spiele, welche selbst bei einer RTX 2080 ruckelten usw.
Die Aussage ist völlig wertlos, wenn Du nicht genau sagst was Du gemacht hast und welche Software zum Einsatz kam.

Ranayna schrieb:
Mein Ziel: Unter Windows eine VM starten koennen, die einen Teil meiner GPU mitbenutzt und dem Host noch genug Power fuer "normales", nicht GPU lastiges Arbeiten zu lassen.
Da sehe ich jetzt nicht so den Sinn drin WIndows unter Windows zu virtualisieren. Das funktioniert besser und mit weniger Overhead wenn Du den Virtualisierungskram da raus lässt.

Ranayna schrieb:
Alternativ das ganze mit einem Linux Host
Wenn man ein Linux hat und nur eine Grafikkarte ist die beste Alternative zur Virtualisierung einfach WINE (oder von mir aus auch Proton und ähnliches) zu nehmen. Das funktioniert für viele Spiele sehr gut.

Den Wunsch diese ganzen Anwendungen/Systeme zu virtualisieren interpretiere ich jetzt mal das das Bedürfnis Aufgabenbereiche abzutrennen. Also den Spielekram von dem was man sonst so am Computer macht abzutrennen. Der Wunsch ist nachvollziehbar und kann man auch machen, ist aber mit Stolpersteinen verbunden.

Als Alternative dazu würde ich jetzt mal das gute alte Dual-Boot in die Runde werfen. Klar. Ist nicht so schön wie Virtualisierung und Co weil Du eben Dinge nicht parallel machen kannst bzw. nicht mal schnell eben hin und her wechseln kannst, aber damit lässt sich halt die Trennung sehr gut erreichen und es funktioniert auch garantiert. Da bist Du nicht gezwungen Dir irgendwie umständlich was zusammenzufrickeln damit es läuft (und hast dann noch nicht mal die Garantie das das frickeln tatsächlich zum gewünschten Ergebnis führt).
 
  • Gefällt mir
Reaktionen: kuddlmuddl und Seby007
Hmm, schade.
Ich hatte gehofft dass da inzwischen einiges auch den Consumerbereich erreicht hat.

Ich habe noch nie mit Systemen gearbeitet die GPUs durchreichen... Vielleicht ne doofe Frage: Wo werden die Monitore angeschlossen? An die schwache Host GPU, oder an die starke VM GPU?

Ich habe da grade folgendes moegliches Szenario im Kopf:
Ein Bildschirm an der Haupt-GPU, einer an der sekundaeren, fuer den Host reservierten.
Wenn keine VM laeuft bleibt im Endeffekt alles beim gleichen aktuellen Stand, wenn ich spiele, dann eh auf einem Bildschirm waerend auf dem anderen der Desktop laeuft.

Wenn ich dann aber eine VM mit durchgereichter GPU starte: Kann die Haupt-GPU, die an die VM durchgereicht ist, das Bild direkt ausgeben, oder muss das ueber den Host laufen? Ich gehe nach aktuellem Stand von letzterem aus, und gehe davon aus, das die Haupt-GPU sich abmeldet, sobald die VM gestartet wird.
Dann koennte ich also zB meinen Hauptmonitor an beide GPUs anklemmen und die Signalquelle umschalten...
Das wuerde einen schnellen Wechsel erlauben, ohne grossen zusaetzlichen Aufwand.

@andy_m4: Mein Ziel ist es eigendlich, die Moeglichkeit zu bekommen Linux Distributionen zu testen, und dabei mein existierendes und gut laufendes Windows moeglichst wenig zu "stoeren".
Dual-Boot habe ich schon vor Jahren ausprobiert, das ist mir aber ein wenig zu unflexibel.
 
Ranayna schrieb:
Ich hatte gehofft dass da inzwischen einiges auch den Consumerbereich erreicht hat.
Ist ja auch nicht so, das es generell nicht geht. Aber das hängt halt vom konkreten Einzelfall ab.


Ranayna schrieb:
Ich habe noch nie mit Systemen gearbeitet die GPUs durchreichen... Vielleicht ne doofe Frage: Wo werden die Monitore angeschlossen? An die schwache Host GPU, oder an die starke VM GPU?
Im besten Fall hast Du zwei Monitore oder Du schließt beide Grafikkarten an ein Monitor an (viele Monitore haben ja sogar mehrere Eingänge). Du wirst ja auch ein Monitor brauchen um das Hostsystem zu steuern.

Klar kannste theoretisch auch alles automatisiert hochfahren. Doch dann stellt sich wiederum die Frage, wozu überhaupt der Virtualisierungsaufwand wenn Du dann doch nicht problemlos hin- und herschalten kannst. Dann kannste auch Dualboot nehmen.

Ranayna schrieb:
Wenn ich dann aber eine VM mit durchgereichter GPU starte: Kann die Haupt-GPU, die an die VM durchgereicht ist, das Bild direkt ausgeben, oder muss das ueber den Host laufen?
Beim durchreichen kommt das Hostsystem quasi mit der durchgereichten Karte gar nicht in Berührung. Die gehört dann exklusiv dem Gast.

Ranayna schrieb:
Ich gehe nach aktuellem Stand von letzterem aus, und gehe davon aus, das die Haupt-GPU sich abmeldet, sobald die VM gestartet wird.
Wenn die VM nicht mehr da ist, dann ist die durchgereichte Grafikkarte wieder frei zur beliebigen Verwendung. Das kann sein, das die dann gar nicht mehr benutzt wird. Es spricht aber nix dagegen sie dann einer neuen VM zuzuweisen oder das das Hostsystem die dann wieder (mit)benutzt.

Ranayna schrieb:
Mein Ziel ist es eigendlich, die Moeglichkeit zu bekommen Linux Distributionen zu testen, und dabei mein existierendes und gut laufendes Windows moeglichst wenig zu "stoeren".
Ok. Aber unter Linux spielt man ja üblicherweise nicht (das typische Szenario ist eher umgekehrt; man hat ein Linux und will dann zum Spielen Windows in einer VM).
3D-Kram (egal ob Anwendungen oder Spiele) unter Linux wird in der Regel mit OpenGL realisiert. Das funktioniert schon seit mehreren Jahren ganz gut, so das hier sogar die Chancen noch besser stehen das man mit einer Grafikkarte auskommt.
Wobei ich jetzt keine Erfahrungen habe wie es ist, wenn man Windows als Host hat. Aber OpenGL von Linux-Host zu Linux-Gast funktioniert inzwischen recht gut.

Ansonsten gilt es einfach mal auszuprobieren.
 
andy_m4 schrieb:
Aber unter Linux spielt man ja üblicherweise nicht
Ja, schon richtig. Aber ich bin mit vielen Entwicklungen die sich mit Windows 11 am Horizont abzeichnen ueberhaupt nicht gluecklich.
Und Valve hat mit SteamOS und Proton das Spielen unter Linux soweit ich das beurteilen kann deutlich vorrangebracht, und hat ja aktuell im Zuge der Steam Deck Vorstellung sogar versprochen das sogar so Sachen wie AntiCheat Systeme unter SteamOS funktionieren sollen.

Von der Seite her bin ich also sogar tatsaechlich zuversichtlich dass das allermeiste zum funktioniern bekommen sein sollte.
Als ich Linux das letzte mal vor mehr als 5 Jahren naeher getestet habe war das leider noch nicht so.

Wenns dann mal soweit ist wuerde Windows wohl nur noch als Gast fuer Office 365 exisitieren, wenn MS nicht bis dahin sogar eine vernuenftige Linux Version von Excel herausbringt :p
Ergänzung ()

andy_m4 schrieb:
Im besten Fall hast Du zwei Monitore oder Du schließt beide Grafikkarten an ein Monitor an (viele Monitore haben ja sogar mehrere Eingänge). Du wirst ja auch ein Monitor brauchen um das Hostsystem zu steuern.
Das habe ich grade uebersehen...

Dass heisst, eine VM mit durchgereichter GPU nutzt diese dann auch als Ausgabe direkt, und es laeuft nicht ueber die Host-GPU?
Damit ich eine solche verwenden kann, muss ich also den Monitor auch an der VM-GPU anschliessen?

Dann gehe ich mal davon aus, dass in der Konstellation die ueblichen VM Integrations-Features, insbesondere die Nahtlose Maus zwischen Host und Gast nicht moeglich sind?
 
Zuletzt bearbeitet:
Ranayna schrieb:
Dass heisst, eine VM mit durchgereichter GPU nutzt diese dann auch als Ausgabe direkt, und es laeuft nicht ueber die Host-GPU?
Genau. Und jede Grafikkarte hat halt ihre eigenen Ausgänge wo dann das Kabel zum Monitor gezogen wird.

Ranayna schrieb:
Damit ich eine solche verwenden kann, muss ich also den Monitor auch an der VM-GPU anschliessen?
Ja. Genau. Aber wie gesagt: In der Regel ist es kein Problem da moderne Monitore mehrere Eingänge haben. Meist DVI und HDMI (bzw. alternativ DisplayPort). Und diese Standards sind so kompatibel miteinander, das man mit nem einfachen Adapter(-kabel) das auch problemlos angeschlossen kriegt.
 
  • Gefällt mir
Reaktionen: Ranayna
Ok, wenn dann quasi saemtliche Integrationen zwischen Host und VM wegfallen, dann ist dieses Szenario ja im Endeffekt wie ein Dualboot.
Schade, aber dann passt das nicht so ganz zu meinen Vorstellungen.

Dann werden die Distributionen erstmal ohne Grafikbeschleunigung getestet.
 
Ranayna schrieb:
Ok, wenn dann quasi saemtliche Integrationen zwischen Host und VM wegfallen, dann ist dieses Szenario ja im Endeffekt wie ein Dualboot.
Zumindest hast Du hast keine Integration für die Grafik a-la "Ich lasse meine VM in einem Fenster laufen".

Ranayna schrieb:
Dann werden die Distributionen erstmal ohne Grafikbeschleunigung getestet.
Wobei bei Linux-Gästen das ja in der Regel unkomplizierter ist. Lösungen wie VMWare oder auch VirtualBox liefern OpenGL-Support mit sofern Du die Gasterweiterungen installierst (da hast Du also 3D-Beschleunigung ohne VGA-Passthru). Wie es beim Microsoft-eigenen Hyper-V ist kann ich jetzt aus dem stehgreif nicht sagen.
 
Ranayna schrieb:
Ok, dann etwas konkreter ;)
An den bisherigen Antworten merke ich das ich vielleicht genauer haette sein muessen...

Mein Stand der Dinge:
Ich habe meinen Desktop Rechner mit Windows 10 20H2.
Hardware, unter anderem: 5900x, 6900XT und 32 GB RAM.

Mein Ziel: Unter Windows eine VM starten koennen, die einen Teil meiner GPU mitbenutzt und dem Host noch genug Power fuer "normales", nicht GPU lastiges Arbeiten zu lassen.
Dann moechte ich in den Gaesten GPU Power zur Verfuegung haben, um mit verschiedensten Linux Distributionen die allgemeine Spieletauglichkeit testen zu koennen.

Alternativ das ganze mit einem Linux Host, damit ich dann unter Windows spielen kann, und mit dem Host, oder weiteren VMs, die Spieletauglichkeit testen kann.

Wenn das tatsaechlich auch heutzutage mit einer einzelnen GPU noch nicht geht, werd ich mir was anderes ueberlegen muessen.
Hierfür das perfekte Video mit tutorial:

 
Für alle die keinen Bock auf ein 30 Minuten Video haben, hier https://forum.level1techs.com/t/2-g...ning-finally-made-possible-with-hyperv/172234

Das Feature heißt wohl GPU-P und ist teil von Hyper-V. Das ganze wurde tatsächlich taufrisch für dem Hyper-V eingeführt. Sollte so ziemlich genau das sein was du brauchst.

Allerdings habe ich bisher nur mit Windows Guests gesehen (da Host und Gast beide den gleichen Treiber benötigen). Ob das also mit einer Linux VM auf Windows host klappt bleibt fraglich, muss man also testen.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Ranayna und madmax2010
@M-X:
Das werde ich ausprobieren. Ich erinnere mich jetzt sogar dunkel daran dass ich vor einer Weile ueber GPU-P gelesen habe, und das es keine Profi-Karten mehr braucht.

Leider habe ich auch nichts darueber gefunden ob das mit Linux Guests funktioniert, aber einen Versuch ists allemal wert.
 
M-X schrieb:
Allerdings habe ich bisher nur mit Windows Guests gesehen (da Host und Gast beide den gleichen Treiber benötigen). Ob das also mit einer Linux VM auf Windows host klappt bleibt fraglich, muss man also testen.
Das wird spätestens mit WSLg in der WSL2 Einzug erhalten, wo man nicht nur keinen separaten X Server mehr braucht, sondern auch die GPU an die VM weitergereicht wird. Der Sinn von WSLg ist es ja GUI Apps nahtlos auszuführen, sowie auch GPU Acceleration in der VM nutzbar zu machen und somit auch weitreichenden Support für ML zu gewährleisten.

https://devblogs.microsoft.com/comm...ilable-for-the-windows-subsystem-for-linux-2/

Primär an Entwickler gerichtet, aber für den Bastler fällt dadurch natürlich auch was ab.
 
Zurück
Oben