Stand der Technik: Nvidia-Grafikkarte an virtuelle Maschine durchreichen mit KVM vfio

  • SED9: Unter dem Stichwort "Intel GVT-g GPU Virtualization" (oder auch "XenGT") scheint sich tatsächlich was zu tun, so dass es vielleicht dieses Jahr möglich wird, eine i915-Intel-Grafik durchzureichen an einen virtuellen Gast.
    http://lists.openwall.net/linux-kernel/2015/01/12/25


    Hinsichtlich KVM tut sich da auch was: http://www.golem.de/news/kvmgt…fuer-kvm-1412-110964.html


    Gruß
    hepi


    P.S.: Der Vortrag von Alex Williamson von letztem Oktober ist übrigens auf Youtube verfügbar: https://www.youtube.com/watch?v=NhZ9eIpg2nM

  • Danke für die Links Hepi!


    Jetzt geht der Spaß ja richtig los!


    Ich komme erst am Wochenende oder im laufe der nächsten Woche dazu meine neue Xeon Hardware in Betrieb zu nehmen.


    Dafür habe mir mal was richtig potentes gegönnt, soll ja auch produktiv ein paar Jahre laufen und meine drei Rechner ersetzen.


    Den Vortrag werde ich mir morgen mal im Zug ansehen.


    Kind regards


    SED

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Viel Erfolg!


    Die CPUs mit VT-d-Feature werden nicht billiger momentan: Ich habe im Sommer 2014 meinen Haswell i5 4670 im Angebot für 150 Euro geschossen, mittlerweile kostet der nun über 200 Euro... Da würde ich heute auch eher einen XEON kaufen, wenn ich eine CPU bräuchte.


    Ich will noch den OVMF/UEFI-Weg ohne VGA ausprobieren (oben verlinkt), dazu habe ich gestern mal meine Nvidia Geforce GTX 660 mit Hilfe von nvflash mit einer Firmware geflasht, die UEFI/GOP-Unterstützung hat. Ich dachte eigentlich, dass meine Grafikkarte sowas schon können müsste, gekauft im Sommer 2013. Aber dem war nicht so. Vielleicht komme ich diese Woche noch dazu, mit ungepatchtem Kernel zu testen.


    Außerdem bin ich nun mittlerweile auf QEMU 2.2 gegangen und spiele mit virt-manager herum, damit es schicker aussieht.


    Ich habe mal den 3DMark in der VM laufen lassen und dabei recht gute Werte bekommen (natürlich leicht niedriger als unter purem Windows), und das ganze ist nicht abgestürzt. Es scheint mir relativ durabel zu laufen.


    Gruß
    hepi

  • Hallo hepi,


    diie Hardware steht jetzt, Kernel ist gepachtet und gebaut.


    Hast Du auch das ppa von Jacob Zimmermann eingebunden?


    Damit möchte ich es mal versuchen.


    kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Ja, genau das PPA nutze ich, aber eigentlich nur wenige Pakete daraus (qemu, libvirt, virt-manager). Aber ich bin mit virt-manager und dem XML noch nicht zum Ziel gekommen (Zeitmangel). Ich starte immer noch qemu direkt auf der Kommandozeile. Bei qemu 2.2 hatte ich ein kleines Problem mit dem Parameter für das Disk-Image:


    Bei qemu 2.0 funktionierte noch das Einbinden so wie im Ubuntu-Tutorial beschrieben, mit 2.2 gab es eine Fehlermeldung. Man kann aber bei 2.2 dann das Diskimage anders einbinden und dann klappte es wieder. Auf die Idee war ich gekommen, als ich im Changelog (http://wiki.qemu.org/ChangeLog/2.2) das hier gelesen habe:

    Zitat

    Support for specifying drives in short form on the command-line (i.e. using -cdrom, -hda, -drive if=ide) on the Q35 machine type.


    Ich nutze bei meinen Tests momentan Q35, obwohl Alex Williamson ja eher davon abrät. Grund ist einfach Zeitmangel/Faulheit, das andere auszuprobieren.


    Gruß
    hepi

  • Hallo hepi,


    funktioniert soweit alles prächtig.


    Nur hatte ich erst überlesen, dass der Kernelparameter "i915.enable_hd_vgaarb=1" DRI abstellt und so der Gallium, anstatt des Intel, Treiber geladen wird,
    dadurch geht die Hardwarebeschleunigung auf dem Intel IGP verloren. Dieser Weg kommt für mich dann so nicht infrage.


    Dann hatte ich mich mal an den anderen Weg gewagt, aber festgestellt, ich habe keine Grafikkarte die UEFI/GOP kompatibel ist.
    Hier liegen zwar eine menge Nvidia Karten in den Kisten von gt210 bis gt730, aber keine davon ist wohl tauglich, bzw ich finde keine Infos bezüglich UEFI/GOP
    zu den Karten. Eine neue Karte wollte ich mir eigentlich nicht zulegen.

    Ich bin dann wohl erst einmal wieder raus, bis es möglich sein wird den Intel IGP zu übergeben, oder ich finde in der Zwischenzeit eine UEFI/GOP Firmware für
    eine meiner Karten.


    Kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Du musst über Google für eine Deiner Nvidia-Karten eine UEFI/GOP-Firmware finden. Ich habe eine Geforce GTX 660 von MSI und habe in einem MSI-Forum speziell für mein Modell eine Firmware gefunden.
    Allgemein kannst Du mal hier anfangen: http://www.techpowerup.com/vgabios/index.php
    Mit den Infos von dort fütterst Du dann Google und landest irgendwann im 55sten Forenthread, wo Du Dir eine Firmware runterladen kannst...


    EDIT: Es kann natürlich sein, dass es nicht für alle Karten so eine Firmware gibt. Oder das die Karte schon eine Firmware hat, die es unterstützt. Du kannst es testen: Ultra-Fast-Boot im Mainboard-BIOS bei mir (Asrock) soll nur funzen, wenn die Grafikkarte UEFI/GOP-kompatibel ist und Windows 8 muss im UEFI-Modus installiert worden sein / werden.


    EDIT2: Wenn Du nvflash ausführst, sagt nvflash Dir, ob Dein aktuelles VBIOS es unterstützt oder nicht.


    Gruß
    hepi

  • Hallo,


    danke für die Info!


    Zitat

    EDIT2: Wenn Du nvflash ausführst, sagt nvflash Dir, ob Dein aktuelles VBIOS es unterstützt oder nicht.


    Dann stehen jetzt mal 7 reboots an :D


    kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Hallo,


    alle Grafikkarten sind sind leider durchgefallen, aber ein Anruf im Freundeskreis bescherte mir dann eine GTX 750TI für 70 €, da konnte ich nicht nein sagen.


    Dann geht es jetzt weiter.


    Kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Hallo hepi,


    so ich habe hier jetzt komplettes System laufen,


    Asrock Z97 Extreme6, Intel Xeon e3 1246, Geforce GTX750ti


    Host: Ubuntu 14.10 mit Stock Kernel, ohne die beiden Patches aus der Arch Forum


    Gast: Windows 7, mit der GTX750ti, neuster Nvidia Treiber(347.52), via OVMF EFI-boot


    Ich bin doch begeistert was so alles möglich ist, mit recht geringen Aufwand.


    kind regards


    sed

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Super, Glückwunsch! Ich dachte bisher, Windows 7 würde nicht per UEFI-Boot über qemu gehen. Es hieß, erst Windows 8.x würde gehen - aber um so besser, wenn Win7 auch geht!


    Startest Du qemu manuell vom Host aus, oder wird es automatisch mitgestartet beim Booten des Hosts? Ich will ja gern bei Gelegenheit mit virt-manager die Gäste managen, bin aber noch nicht dazu gekommen, das fertigzumachen.


    Machst Du CPU-Pinning?


    Gruß
    hepi

  • Hallo hepi,


    ohne Deine Vorarbeit hätte es bestimmt länger gedauert.


    Win7 läuft richtig gut, Win8 hingegen habe ich noch nicht zum laufen bekommen, da habe ich wohl bei der Imageerstellung etwas falsch gemacht.


    Ich lasse alles vom virt-manager verwalten und starte den Gast nur bei bedarf, ich habe mir mal die git Version gezogen, die Version aus ppa:jacob/virtualisation ist
    schon recht alt, die git Version hat auch einige neue Features.


    Mit dem CPU pinning habe ich mich noch nicht befasst.


    kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Hallo Leute,


    ich wollte mich auch mal mit OVMF EFI-boot beschäftigen und scheitere schon daran rauszubekommen ob meine Zotac GT 630 VBIOS unterstützt.


    01:00.0 VGA compatible controller: NVIDIA Corporation GK208 [GeForce GT 630 Rev. 2] (rev a1)
    01:00.1 Audio device: NVIDIA Corporation Device 0e0f (rev a1)



    cd /sys/bus/pci/devices/0000:01:00.0/
    echo 1 > rom
    cat rom > /tmp/image.rom
    cat: rom: Eingabe-/Ausgabefehler


    dmesg


    [ 1945.237467] vfio-pci 0000:01:00.0: Invalid ROM contents




    SED9
    von welchem Hersteller ist denn deine Geforce GTX750ti
    Ich überlege eine Geforce GTX750 zu holen --> meint ihr das dort bereits alle Hersteller dies unterstützen


    Gruß dile

  • So ich hab das Bios jetzt über GPU-Z mit der durchgereichten Grafikkarte (alter Weg) unter Windows 7 ausgelesen.


    ./rom-parser GK208.rom
    Valid ROM signature found @600h, PCIR offset 190h
    PCIR: type 0, vendor: 10de, device: 1284, class: 030000
    PCIR: revision 0, vendor revision: 1
    Valid ROM signature found @fa00h, PCIR offset 1ch
    PCIR: type 3, vendor: 10de, device: 1284, class: 030000
    PCIR: revision 3, vendor revision: 0
    EFI: Signature Valid
    Last image



    Das sollte eigentlich ganz gut aussehen. Dann werde ich das mit dem OVMF EFI-boot auch mal versuchen.


    Gruß dile

  • Hallo dile,


    Zitat

    SED9
    von welchem Hersteller ist denn deine Geforce GTX750ti


    Meine ist eine Geforce GTX750TI von MSI.


    Zitat

    Ich überlege eine Geforce GTX750 zu holen --> meint ihr das dort bereits alle Hersteller dies unterstützen


    Normal sollten alle Karten, die auf das Nvidia Referenzboard aufsetzen, UEFI/GOP kompatibel sein.
    Ich hatte aus Spass mal die Firmware der Asuus und EVGA Karte aufgespielt, damit gab es keine Probleme.
    Aber was ist schon normal. :P


    Dein Bios schaut gut aus, teste einfach mal, sollte es zu Fehlermeldungen, wie Invalid ROM contents,
    kommen kannst du das Bios auch von Platte laden lassen.


    Viel Erfolg!


    kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Gerade im VDR-Kontext wäre es prima zu wissen, welche Low-Cost-Nvidia-Karten sich im UEFI-Szenario einsetzen lassen. Generell scheint es ja so zu sein, dass man für die teureren Gamer-Karten leichter ein UEFI/GOP-kompatibles VBIOS finden kann als für die Budget-Karten, die jedoch für einen VDR-Client-Gast gut genug sind. Wobei die meisten Leute Windows als Gast testen und meines Erachtens wenig Erfahrungen vorliegen mit Linux als Gast + GPU-Passthrough, was die Verträglichkeit mit dem Closed-Source-Nvidia-Treiber angeht.


    Es gibt ja auch spezielle Nvidia GK208 PCIe 2.0 x1-Karten wie die ZT-71107-10L von Zotac (http://geizhals.de/zotac-gefor…t-71107-10l-a1133459.html), die man dann im Mainboard in einem kleinen PCIe-Slot verbauen kann (damit passt wieder eine GPU mehr rein, wenn man das braucht). Das wäre mal interessant, wenn jemand nachschauen könnte, der diese Karte besitzt.


    Nochmal was anderes: Was mich generell überrascht hat, war der "idle"-Stromverbauch meines Systems, wenn Windows 8 als Gast eingeschaltet ist. Bei meinem Rechner mit Haswell i5 + B85 Asrock Board + mehreren Platten/SSDs liegt der idle-Verbrauch bei aktivem Ubuntu 14.10 bei um die 38 Watt (nach powertop-Tuning, aber mit brachliegender GTX 660). Wenn ich Windows 8 als Gast starte mit der Geforce GTX 660 als Ausgabe-Device, geht der Stromverbrauch nur um ca. 2-3 Watt hoch - solange Windows 8 im idle-Zustand ist. Läuft Windows 8 allein auf dem System, ist der Stromverbraucht auch nicht viel niedriger.


    Viele Grüße
    hepi

  • Hallo,


    ich habe eine ZT-71107-10L in einem VDR, teste ich mal am Wochenende, ich meine aber gelesen zu haben alle GK208 Karten können UEFI/GOP.



    Der allgemeine niedrige Verbrauch wundert mich auch. bei mir schaut es zur Zeit so aus


    Ubuntu 14.10 Desktop ~ 32 Watt, mit Haswell Xeon, Asrock z97, 16 GB 1,35v DDR3, 2 * SSD und einmal WD RED


    Ubuntu 14.10 -> Win 7 und der GTX750 ~ 35 Watt


    Unter Stress habe ich noch nicht gemessen.


    Ich baue mal die GTX am Wochenende aus und messe dann mal den Verbrauch.


    kind regards

    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Ich hatte letzten Sommer in einem Review versucht, den Stromverbrauch mit dem B85er-Mainboard zu drosseln ([Review] ASRock B85M-HDS & Intel Celeron G1820 (Haswell)).


    Das war noch mit einer Celeron-CPU. Damals habe ich als persönlichen Rekord 17 Watt unter Ubuntu 14.04, aber das ging nur, wenn keinerlei PCIe-Karten steckten, der Rechner nichts "Vernünftiges" machte (idle um idle Willen), und die Bildschirmauflösung an i915 auf 720p runtergeschraubt war. Sobald aber mindestens eine PCIe-Karte steckte, waren die stromsparenden Package-States C3 und C6 nie zu erreichen. Ich denke, mit einer steckenden Grafikkarte und i5/i7/Xeon kommt man nie unter 30 Watt, solange nicht noch neue Stromspar-Tricks jenseits von Powertop und den üblichen Kernel-Parametern bekannt werden.


    Gruß
    hepi

  • Hi,


    das ist mein KVM Server mit dem Xeon, der Nvidia GTX und einer Intel GT/PRO 1000 Dual NIC


    VDR-Server: Ubuntu 16.04 mit TVH
    als SAT>IP, PLEX Media, und Asterisk Server - ASRock J1900M, DD Cine S2 V6.5 + 3 * DuoFlex S2, 8GB Ram, 8x6 TB HDDs + 8x6 TB Backup Server alle 24 Stunden via rsync, kein Raid
    VDR Clients: yaVDR 0.6.0, ASRock Q1900B, 2GB Ram, 16 GB USB-Stick, Zotac GeForce GT 730, keine Lüfter - alles mit Heatpipes gegen Starngkühlkörper

  • Boah! Das sieht nicht schlecht aus. Vielleicht ist mein Mainboard mit dem Realtek-Netzwerk-Interface einfach nicht in der gleichen Liga wie Dein Mainboard... Aber im Endeffekt wünscht man sich ja den von der c't geweckten Traumverbrauch von 10-20 Watt. Kriegst Du das hin mit Deinem System? Nur, wenn Du alle HDDs absteckst, oder? :D


    Gruß
    hepi

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!