Stand der Technik: Intels integrierte Grafik an virtuelle Maschine(n) durchreichen

  • Hallo,


    ausgehend von Experimenten mit Nvidia-GPU, die schon sehr stabil laufen ([Virtualisierung] Stand der Technik: Nvidia-Grafikkarte an virtuelle Maschine durchreichen mit KVM vfio), habe ich mich nun mal wieder mit dem Thema Intel-Grafik durchreichen beschäftigt. Das heißt, ich habe gegoogelt, gelesen und versucht zu verstehen. Ich finde das Thema sehr spannend, aber es ist ein sehr kompliziertes Thema.


    Wie es sich momentan anhört, wird es demnächst (QEMU+KVM) und heute schon (QEMU 2.5+XEN, Citrix Xenserver TechPreview TP3) möglich sein, manche Generationen von integrierten Intel-GPUs durchzureichen an virtuelle Maschinen.


    Dabei gibt es aber zwei unterschiedliche Ansätze:

    • Auf Hardware mit VT-D-Unterstützung kann man wohl mit experimentellen Patches schon heute bestimmte Generationen von Intel GPUs einem Gast zur Verfügung stellen (intel igd vfio passthrough).
    • Mit Hilfe von Intels GVT-G kann man über virtuelle GPUs mehreren Gästen gleichzeitig "Zugang" zur Intel-Chip-Grafik geben. Dann kann man am realen Monitor das Bild einer dieser Maschinen sehen und umschalten zwischen den Gästen per Kernelparameter am Host.


    Welche Praxis-Relevanz könnte das für uns haben?

    • Für den VDR im Wohnzimmer:

      1. Angenommen, man will aus irgendeinem Grund neben Linux noch Android(x86) oder Windows am Wohnzimmer-TV haben, könnte man somit über GVT-G Windows oder Android(x86) auf den TV holen und unten drunter / daneben läuft die VDR-Distribution ungestört weiter und nimmt Timer auf (als weiterer Gast oder Wirt).
      2. Man will mehrere VDR-Distributionen nebeneinander im Wohnzimmer testen. (Große Frage wäre, ob va-api dann immer noch "gut genug" läuft)
      3. Man möchte eine Retro-Gaming-Distribution nutzen und parallel eine VDR-Distribution laufen haben.


    • Für das Notebook auf dem Sofa: Will man Windows auf dem Notebook haben, kann nun ein Linux drunter laufen, die Chipsatz-Grafik kann trotzdem Windows anzeigen, als wäre nur Windows installiert.


    Hat jemand von Euch hier schon Erfahrungen gesammelt? Besteht Interesse? Ich könnte bei Interesse meine Linksammlung zum Thema hier einarbeiten. (Ich habe es selbst noch nicht praktisch laufen, nur eine Linksammlung mit Infos.)


    Viele Grüße
    hepi

  • Hallo Hepi,


    sehr interessant.

    Dabei gibt es aber zwei unterschiedliche Ansätze:
    1) Auf Hardware mit VT-D-Unterstützung kann man wohl mit experimentellen Patches schon heute bestimmte Generationen von Intel GPUs einem Gast zur Verfügung stellen.
    2) Mit Hilfe von Intels GVT-G kann man über virtuelle GPUs mehreren Gästen gleichzeitig "Zugang" zur Intel-Chip-Grafik geben. Dann kann man am realen Monitor das Bild einer dieser Maschinen sehen und umschalten zwischen den Gästen per Kernelparameter.

    Grundsätzlich finde ich das Sharing von GPUs sehr interessant, das würde aber dann scheinbar nur mit der GVT-G Lösung funktionieren. ACHTUNG! Bisher nur 4. und 5. Intel Generationen, also Haswell und Broadwell. Ältere CPUs, sowie die neuen Skylake werden (bisher) nicht sinnvoll unterstützt Damit fällt leider mein Laptop (zu alt) raus, auf dem ich das gerne mal probiert hätte


    Sowas bräuchten wir auch für NVidia Karten.
    Die dedizierte Zuordnungen der GPUs zu VMs (aus deinem anderen Thread) funktioniert zwar sehr gut, hat aber momentan immer noch den Nachteil, dass man mehrere Monitore braucht, bzw. einen Monitor mehrfach verkabeln muss. Auch wenn das Umschalten der Eingänge in gewissem Maße scriptbar ist, ist es für mich nicht die perfekte Lösung und keine reibungslose Integration.


    Ich bin gespannt was hier noch kommt.


    Gruß,
    Robsta


    Hardware: Antec Fusion Remote Black, Asus P5N7A-VM, E5200, Mystique SaTiX-S2 Dual V2, Stereo-Atmo
    TV: Samsung UE32B6000, BenQ W1070
    Software: yaVDR


  • Zum Ansatz Nummer Eins (Intel igd passthrough über vfio) hat Alex Williamson gestern Patches zur Diskussion gestellt, es hört sich so an, als wenn man einen linux-next Kernel (4.6) braucht. Allerdings nennen die Patches viele Intel-CPU-Generationen, nicht nur Haswell und Broadwell wie bei GVT-G.
    http://lists.nongnu.org/archiv…vel/2016-03/msg02837.html


    EDIT: Neben den verlinkten Patches gibt es in der Mailingliste für den Monat März noch viel mehr Patches für igd, auch von Gerd Hoffmann und anderen.


    -----------


    Auf Youtube gibt es ein paar Demo-Videos für das Durchreichen von Intel-Grafik:


    Demo Intel GVT-G (schon aus 2014): https://www.youtube.com/watch?v=V2i8HCcAnY8


    Mehrere interessante Videos eines stolzen Vorreiters des Durchreichens von Intel-GPU über QEMU/KVM+VFIO. Da der Autor der Videos recht viele Informationen zurückhält, ist nicht klar, welche Hardware er nutzt und welche Software.
    https://www.youtube.com/user/raghavansanthanam/videos


    Robsta : Ja, GPU-Sharing ist spannend, einmal als Umschalten (wie man TV-Kanäle umschaltet). Dann noch, falls man über verschiedene Ausgänge der gleichen GPU verschiedene Gäste bekommen könnte, bzw. falls man über ein Kabel eine gekachelte Ansicht aller Gäste kriegen könnte... Ich weiß nicht, ob das angedacht ist. Von Nvidia wird hier sicherlich leider kein Support für Consumer-GPUs kommen, weil man ja dafür das Grid-Produkt hat.


    Viele Grüße
    hepi

  • Wenn ich mich nicht irre, so sind die Patches mit Kernel-Änderungen für igd vfio heute in den linux-next-Branch reingemergt worden:
    https://git.kernel.org/cgit/li…f392137f44a929f7181e8ffbd


    Das sollte auch das Bauen oder Beziehen eines Kernels, der die nötigen Änderungen enthält, vereinfachen.


    EDIT: Drei Tage später ist der Patch auch im 4.6er-Bereich gelandet:
    https://git.kernel.org/cgit/li…209b83e488b20916555d70c55


    Gruß
    hepi