Hallo,
ich beschäftige mich seit einiger Zeit mit KVM. Und hab dazu eine kleine Frage.
Ist es inzwischen möglich PCIe-Grafikkarte an den Guest problemlos durchzureichen? Brauch ich dazu unbedingt Intel VT-d bzw. AMD IOMMU, oder geht es auch anders?
VG
Ciusus
PCIe passthrough KVM VM
- matman
- Beiträge: 744
- Registriert: 03.07.2008 10:50:07
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Hamburg
-
Kontaktdaten:
Re: PCIe passthrough KVM VM
PCI-Passthrough mit KVM scheint generell noch sehr problematisch zu sein. Ich habe es bisher jedenfalls anhand der KVM-Dokumentation noch nicht geschafft. Grafikkarte ohne Probleme kannst Du wohl ganz vergessen. Ich habe vor einigen Tagen gelesen (ich glaube es war auf den Seiten der KVM-Entwickler), dass Grafikkarte durchreichen derzeit nicht von KVM unterstützt wird, es soll aber schon jemand daran arbeiten. Ob es schon einen Beta-Patch gibt, keine Ahnung. Leider finde ich auch die Seite jetzt nicht wieder.
Und das wird vermutlich auch noch dauern, bis es geht. KVM befindet sich gerade mal bei Version 0.14, also ziemlich am Anfang seiner Entwicklung. Wenn Du Grafikkarte durchreichen willst, dann versuche das lieber mit Xen. Seit Squeeze ist Xen nun in der Version 4.0 in den Repos enthalten und ist KVM gegenüber dann doch um einiges vorraus.
Allerdings glaube ich kaum, das es überhaupt ohne Probleme möglich sein wird eine Grafikkarte an einen Guest durchzureichen, weil zunächst ja der Host die Grafikkarte entbehren muss. Am besten wäre es da wohl, man baut sich einen Hypervisor, der ohne Grafikkarte im Hintergrund läuft. Aber wie bootet man den? Vielleicht würde ein Skript gehen, das im Bootprozess des Hypervisors startet, die Grafikkarte ausklinkt, sich selbst als superuser einloggt und dann per bash profile die Grafikkarte an die VM durchreicht und diese VM gleichzeitig startet, sodass man sich dann wieder grafisch in die VM einloggen kann. Oder gibt es da einfachere Methoden?
Ausser, man hat mehrere Grafikkarten, also eine für den Host und eine weitere für den Guest, wüsste ich da nichts.
Und das wird vermutlich auch noch dauern, bis es geht. KVM befindet sich gerade mal bei Version 0.14, also ziemlich am Anfang seiner Entwicklung. Wenn Du Grafikkarte durchreichen willst, dann versuche das lieber mit Xen. Seit Squeeze ist Xen nun in der Version 4.0 in den Repos enthalten und ist KVM gegenüber dann doch um einiges vorraus.
Allerdings glaube ich kaum, das es überhaupt ohne Probleme möglich sein wird eine Grafikkarte an einen Guest durchzureichen, weil zunächst ja der Host die Grafikkarte entbehren muss. Am besten wäre es da wohl, man baut sich einen Hypervisor, der ohne Grafikkarte im Hintergrund läuft. Aber wie bootet man den? Vielleicht würde ein Skript gehen, das im Bootprozess des Hypervisors startet, die Grafikkarte ausklinkt, sich selbst als superuser einloggt und dann per bash profile die Grafikkarte an die VM durchreicht und diese VM gleichzeitig startet, sodass man sich dann wieder grafisch in die VM einloggen kann. Oder gibt es da einfachere Methoden?
Ausser, man hat mehrere Grafikkarten, also eine für den Host und eine weitere für den Guest, wüsste ich da nichts.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525
Re: PCIe passthrough KVM VM
Ok, danke für die Antwort.
Meine Frage war auch eher theoretisch. Also ich wollte eigentlich nur Wissen ob es inzwischen geht, aber ich habe es in nächster Zeit nicht vor.
Aber wenn wir gerade beim Thema sind. Ich habe vor ein kleinen Server zu basteln, der mir vor allem als NAS, Multimedia-Zentrale, Web-Server, etc. dienen soll. Mein Plan ist eine VM für NAS, welche direkt auf die Festplatten zugriff hat. Also als RAW-Format. Eine zweite VM soll als VDR dienen und eine dedizierte TV-Karte haben, die ich mittels IOMMU an den Guest durchreiche.
Steht dieser Konstellation irgendetwas entgegen? Gibt es bestimmte Sachen die ich beachten sollte?
Ich bin über jede Antwort dankbar
Ciusus
Meine Frage war auch eher theoretisch. Also ich wollte eigentlich nur Wissen ob es inzwischen geht, aber ich habe es in nächster Zeit nicht vor.
Aber wenn wir gerade beim Thema sind. Ich habe vor ein kleinen Server zu basteln, der mir vor allem als NAS, Multimedia-Zentrale, Web-Server, etc. dienen soll. Mein Plan ist eine VM für NAS, welche direkt auf die Festplatten zugriff hat. Also als RAW-Format. Eine zweite VM soll als VDR dienen und eine dedizierte TV-Karte haben, die ich mittels IOMMU an den Guest durchreiche.
Steht dieser Konstellation irgendetwas entgegen? Gibt es bestimmte Sachen die ich beachten sollte?
Ich bin über jede Antwort dankbar
Ciusus
- matman
- Beiträge: 744
- Registriert: 03.07.2008 10:50:07
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Hamburg
-
Kontaktdaten:
Re: PCIe passthrough KVM VM
Also ich habe die letzten Tage viel zum Thema PCI-Passthrough mit KVM recherchiert, da ich dringend eine funktionierende Lösung brauche. Ich habe in den Foren, die Google zu dem Thema ausspuckt einiges Gefunden, wo es Leute gibt, die von so ähnlichen Konstellationen berichtet haben, dass es läuft. Allerdings scheint es etwas Glück zu sein, wenn man eine PCI-Karte erfolgreich durchgereicht bekommt. Die AVM-Fritz! soll wohl gehen und auch eine Reihe von TV-Karten. Aber manche Karten gehen leider nicht, was aber womöglich auch nur am IRQ-Sharing liegen könnte.
Zu beachten ist insbesondere, dass deine Hardware zwingend VT-d (Intel) oder AMD-V/IOMMU unterstützen muss. Eine Liste, welche Hardware laufen sollte gibt es hier: http://wiki.xensource.com/xenwiki/VTdHowTo Über AMD-CPU's steht da leider nicht so wirklich was, aber angeblich sollen alle Sockel AM3 CPU's IOMMU unterstützen. Im Zweifel, besonders vor dem Neukauf, lieber mal den Hersteller fragen.
Hat man schon eine CPU, so kann man wie folgt herausfinden, ob die CPU TV-d bzw. IOMMU unterstützt:
Bei einer Intel CPU
Und bei AMD CPU:
Wenn keine Ausgabe kommt, dann geht es mit der CPU nicht.
Schaut es in etwa so aus, dann wird es an der CPU nicht scheintern:
Ebenfalls wichtig zu beachten ist, dass die PCI-Karte, welche Du durchreichen willst, sich keinen IRQ mit einem anderen PCI-Device teilen darf, denn dann funktioniert es nicht.
Der Rest ist dann wohl etwas basteln und mit Glück geht es sofort. Man kann aber auch auf Probleme stoßen. Beispielsweise scheint der Standardkernel von Debian nicht für PCI-Passthrough konfiguriert zu sein (was ich aber nicht 100% versichern kann). Und weil sich KVM noch sehr in der Entwicklung befindet kann es nicht schaden, den jeweils aktuellsten Kernel sowie die aktuellste KVM-Version zu verwenden. Das heißt dann natürlich noch mehr basteln. Aber vielleicht hast Du ja Glück und bekommst es mit den Debian-Paketen zum Laufen. Würde ich jedenfalls als erstes probieren.
Meine bisherigen Erfahrungen mit PCI-Passthrough habe ich auch bereits hier geposted: http://debianforum.de/forum/viewtopic.php?f=32&t=129379 dort findest Du auch einen Link zum KVM-HowTo: PCI-Karte durchreichen. Viel Glück kann ich da nur wünschen.
Zu beachten ist insbesondere, dass deine Hardware zwingend VT-d (Intel) oder AMD-V/IOMMU unterstützen muss. Eine Liste, welche Hardware laufen sollte gibt es hier: http://wiki.xensource.com/xenwiki/VTdHowTo Über AMD-CPU's steht da leider nicht so wirklich was, aber angeblich sollen alle Sockel AM3 CPU's IOMMU unterstützen. Im Zweifel, besonders vor dem Neukauf, lieber mal den Hersteller fragen.
Hat man schon eine CPU, so kann man wie folgt herausfinden, ob die CPU TV-d bzw. IOMMU unterstützt:
Bei einer Intel CPU
Code: Alles auswählen
cat /proc/cpuinfo | grep vmx
Code: Alles auswählen
cat /proc/cpuinfo | grep svm
Schaut es in etwa so aus, dann wird es an der CPU nicht scheintern:
Code: Alles auswählen
cat /proc/cpuinfo | grep svm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nonstop_tsc extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt
Der Rest ist dann wohl etwas basteln und mit Glück geht es sofort. Man kann aber auch auf Probleme stoßen. Beispielsweise scheint der Standardkernel von Debian nicht für PCI-Passthrough konfiguriert zu sein (was ich aber nicht 100% versichern kann). Und weil sich KVM noch sehr in der Entwicklung befindet kann es nicht schaden, den jeweils aktuellsten Kernel sowie die aktuellste KVM-Version zu verwenden. Das heißt dann natürlich noch mehr basteln. Aber vielleicht hast Du ja Glück und bekommst es mit den Debian-Paketen zum Laufen. Würde ich jedenfalls als erstes probieren.
Meine bisherigen Erfahrungen mit PCI-Passthrough habe ich auch bereits hier geposted: http://debianforum.de/forum/viewtopic.php?f=32&t=129379 dort findest Du auch einen Link zum KVM-HowTo: PCI-Karte durchreichen. Viel Glück kann ich da nur wünschen.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525
- towo
- Beiträge: 4552
- Registriert: 27.02.2007 19:49:44
- Lizenz eigener Beiträge: GNU Free Documentation License
Re: PCIe passthrough KVM VM
Um mal etwas klar zu stellen, vmx oder svm hat absolut Nix mit VT-d zu tun, VT-d (IOMMU) ist eine Funktion des CHipsatzes, nicht der CPU.
- matman
- Beiträge: 744
- Registriert: 03.07.2008 10:50:07
- Lizenz eigener Beiträge: GNU Free Documentation License
- Wohnort: Hamburg
-
Kontaktdaten:
Re: PCIe passthrough KVM VM
Ja, soweit kann ich dir zustimmen. Jedoch nutzt dir IOMMU herzlich wenig, wenn die CPU nicht mit der IOMMU-Funktionalität des Chipsatzes zusammenarbeiten kann. Und eben dazu wird vmx bzw. svm auf der CPU benötigt. Siehe http://de.wikipedia.org/wiki/Secure_Virtual_Machinetowo hat geschrieben:VT-d (IOMMU) ist eine Funktion des CHipsatzes, nicht der CPU.
System: Bullseye
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525
Hardware: Gigabyte 970A-DS3P mit AMD FX-6300, Kingston HyperX DDR3-1333 (4x4GB), Samsung SSD 860 EVO, HGST Travelstar 7K1000, Samsung DVD-ROM SH-D162D, Geforce GTX 1050, SoundBlaster Live! Platinum, Hauppauge WinTV-HVR-5525