Grafikkarte in QEmu

FatManStanding

Lieutenant
Registriert
Aug. 2021
Beiträge
569
Hallo,

soweit ich weiss ist es möglich in qemu eine Grafikkarte durchzureichen, die ist dann aber für den host nicht mehr verfügbar? Ist dem so? Das heißt man bräuchte eine zweite Grafikkarte oder eine CPU mit integrierten Grafikprozessor?
 
Es gibt Ansätze, wie man die GPU an die VM durchreicht, ohne extra die gesamte Grafikkarte zu opfern:
https://looking-glass.io/
Nur leider ist das noch aktuell an einige Voraussetzungen geknüpft.
Ich finde es schade, dass die GPU-Virtualisierung noch ziemlich in Kinderschuhen steckt.

EDIT: Sorry, hatte das Projekt die ganze Zeit so im Erinnerung, dass es ein virtuellen Monitorausgang erzeugt, die VM seine Grafik dort reinpinselt und per "Duplication API" live in das Fenster des Hosts streamt. Entweder war ich zu doof zum Lesen oder es hat sich im Projekt was geändert.
 
Zuletzt bearbeitet:
@Gliese Looking Glass hat nichts damit zu tun, ob die GPU für den Host oder die VM zur Verfügung steht. Das ist ein Programm, dass dir den Desktop der VM in die Client Applikation auf dem Host streamt. So braucht man keinen extra Monitor oder muss die Eingänge umschalten etc., sondern hat das Ergebnis der grafikbeschleunigten VM in einem Fenster (oder Vollbild) im Linux Host. Die GPU ist aber nach wie vor in die VM durchgereicht und für den Host nicht verfügbar.
 
Bei Looking Glass hab ich ein Verständnisproblem. Angenommen ich habe einen Linux-Host und einen Windows-Gast, nur eine Grafikkarte und keinen Prozessor mit Grafikausgang. Ich reiche die Grafikkarte an den Gast durch, sie ist damit für den Host nicht mehr verfügbar. Wenn ich kein Looking Glass installiert habe und alles geht sollte aber dennoch ein Bild ausgegeben werden - das vom Windows des Gastes, oder? Ich habe dann nur keine Möglichkeit "zurück" zum Host zu gehen wie ich es bei VirtualBox kann (oder QEmu ohne Passthrough) wo man einfach das Fenster des Gastes minimiert. Was passiert wenn ich die VM beende? Ist dann die Grafikkarte direkt wieder für den Host verfügbar oder braucht es einen Reboot oder sogar Änderung von Boot-Parametern?

Das ist ein Programm, dass dir den Desktop der VM in die Client Applikation auf dem Host streamt.

Den Satz verstehe ich nicht. Wenn ich die Graka an den Gast durchreiche kann der Host nichts mehr ausgeben. Wie kann dann das Display des Gastes "in die Client Applikation auf dem Host" gestreamt werden?
 
FatManStanding schrieb:
Wenn ich die Graka an den Gast durchreiche kann der Host nichts mehr ausgeben
Es ist üblich für solche Setups mindestens noch eine iGPU zu haben, also die Grafikeinheit in der CPU, die für den Host genutzt wird.

Looking Glass nutzt man, wenn es zum Einsatz kommt, auch nur in solchen Setups. Wenn es nur eine GPU gibt hat das Programm keinen Nutzen.

Nach Beendigung der VM kann die GPU wieder dem Host zugewiesen werden, ja, es erfordert dann aber sicherlich u.a. einen Neustart des X.Org Servers. Musst du dich einlesen, ich hab’s nur mit 2 GPU Setups versucht.
 
DaysShadow schrieb:
Es ist üblich für solche Setups mindestens noch eine iGPU zu haben, also die Grafikeinheit in der CPU, die für den Host genutzt wird.

Dann verstehe ich den Sinn des Programms nicht. Vielleicht hab ich auch ein Verständnisproblem.

Angenommen ich habe 2 GPUs, reiche eine davon aus QEmu durch und gebe das Bild des Hosts über die zweite aus: sehe ich dann wie bei Virtualbox ein QEmu-Fenster mit dem Bild des Gastes? Vermutlich nicht, ich müsste dafür zum zweiten Monitor umschalten oder zum zweiten Eingang des einen Monitors. Ich vermute genau das ist der Sinn von Looking Glass: dass ich im Display des Hosts ein Fenster und die Ausgabe des Gasts sehe, die ich normal nicht sehen würde?

Im Grunde sorgt LG dafür, dass ich eine Situation habe ähnlich wie wenn ich ein Windows in VBox starte?

Gibt es eigentlich Grafikkarten mit 2 getrennten GPUs wo man einen an den Gast durchreichen kann? Einfach eine Graka mit 2 Ausgängen wird ja wohl nicht gehen.
 
FatManStanding schrieb:
Im Grunde sorgt LG dafür, dass ich eine Situation habe ähnlich wie wenn ich ein Windows in VBox starte?
Ja. Schau dir doch einfach die Webseite mal an? Der Gedanke hinter dem Programm ist doch eigentlich nicht so kompliziert. Es eliminiert die Notwendigkeit irgendwas umstellen zu müssen, Monitoreingang, Maus und Tastatur bleiben auch nach Start der VM gleich.

FatManStanding schrieb:
Gibt es eigentlich Grafikkarten mit 2 getrennten GPUs wo man einen an den Gast durchreichen kann?
Nein.

Einfach eine Graka mit 2 Ausgängen wird ja wohl nicht gehen.
Wie meinst du das denn? Grafikkarten haben üblicherweise 3-4 Grafikausgänge (1x HDMI, der Rest meist DisplayPort).
 
FatManStanding schrieb:
Gibt es eigentlich Grafikkarten mit 2 getrennten GPUs wo man einen an den Gast durchreichen kann? Einfach eine Graka mit 2 Ausgängen wird ja wohl nicht gehen.

Angeblich soll das gehen, hab das allerdings bei meinem i5 6600k vergeblich versucht.

https://wiki.archlinux.org/title/Intel_GVT-g
https://docs.nvidia.com/grid/13.0/grid-vgpu-user-guide/index.html

Die einfachste Lösung ist eine CPU mit iGPU für den Host und dazu eine extra GPU, die an die VM komplett durchgereicht wird.
 
Mal zur Einordnung (sehr vereinfacht):

Das Durchreichen einer Grafikkarte in eine virtuelle Maschine kann auf verschiedenen Arten erfolgen.

1. Ein Rechner mit 2 Grafikkarten oder als Variante davon eine CPU mit integrierter Grafikeinheit und einer
zusätzlichen Grafikkarte. Die Grafikkarte, die in die virtuelle Maschine durchgereicht wird, steht dem Host
nicht mehr zur Verfügung. Man benötigt dann 2 Monitore oder ein Monitor mit mehreren Signaleingängen.
(Auf dem Host läuft dann meistens ein Linux oder auch VMWARE ESXi.)

Looking Glass funkltioniert ähnlich, der Unterschied ist nur, das die Ausgabe der durchgereichten Grafikkarte quasi auf dem Host gestreamt bzw. ausgegeben wird (über eine RAM Schnittstelle, an der durchgereichten
Grafikkarte ist normalerweise kein Monitor angeschlossen). Nachteil ist, das nur Windows 10 als Client unterstützt wird.

2. Ein Rechner mit einer Grafikkarte.

A) Unter Linux (als Host) gibt es eine Methode, die nennt sich Single GPU Passthrough. Dort wird die GPU des Hostsystems beim Starten einer VM dem Host entzogen und der VM zur Verfügung gestellt. Der Nachteil ist,
während die VM läuft, kann auf den Host nicht zugegriffen werden.

B) Bleibt man in der Windows Welt und nutzt Hyper-V (ab Windows 10 Pro), dann kann man die sogenannte
GPU Partionierung nutzen. Hier ist es möglich, mit einer Grafikkarte sowohl den Host und die VM gleichzeitig
zu betreiben.

Nachfolgend mal zwei Links, wo das ganze erklärt wird.

Link 1

Link 2
 
Zuletzt bearbeitet:
rhasqx schrieb:
Angeblich soll das gehen, hab das allerdings bei meinem i5 6600k vergeblich versucht.
Selbst wenn es klappt, was hat man dann davon? Eine gammlige Intel iGPU in der VM. In den meisten, wenn auch nicht allen Fällen, geht es darum richtige Grafikperformance in die VM zu bringen.
 
Zurück
Oben