NVIDIA-Karte unter Linux: primusrun – optirun auf Speed (mit Benchmark)

Ein Kommentar Autor: Jürgen (jdo)

Unigine Heaven Benchmark Teaser 150x150Dass man mit Bumblebee die Hybrid-Grafikkarte nutzen kann, wusste ich. Dass es eine bessere Lösung als optirun gibt, ist mir bis gestern entgangen. Ich will dazu gar nicht ins Detail gehen, da es hier ein unglaublich gutes Interview auf ubuntuusers.de gibt – man lernt eben nie aus und hat gleich noch neue Spielsachen – schön … 🙂 … fehlt eigentlich nur noch die Schokolade …

Kurz gesagt ist Bumblebee modular aufgebaut. Der Kernel-Modul aktiviert oder deaktiviert die NVIDIA-Karte. optirun startet das OpenGL-Rendering auf einer zweiten X-Server-Instanz und gibt die kompletten Frames an den ersten zurück – dafür verwendet es VirtualGL und es wird ein Overhead erzeugt, weil sich beide X-Server auf dem selben Rechner befinden. primusrun minimiert das Kopieren von Frames in den Framebuffer und ist somit performanter.

Ich kann aber trotzdem ein paar Anmerkungen machen und somit meinen Beitrag von gestern ergänzen. Primusrun läuft nicht sofort, wenn man den experimentellen Treiber aus dem Ubuntu-Repository nimmt. Primusrun setzt außerdem eine installiertes Bumblebee voraus. Wer das noch nicht hat, bitte Beitrag von gestern durchlesen. Wer schon so weit ist, so einfach installiert man primusrun. Ich habe das unter Linux Mint 14 getestet (Ubuntu 12.10 Basis).

  • sudo add-apt-repository ppa:zhurikhin/primus
  • sudpo apt-get update
  • sudo apt-get install primus (wer 32-Bit-Applikationen damit laufen lassen will, braucht noch das Paket primus-lib:i386.

Nun kannst Du Programme mittels primusrun <Applikation> aufrufen. Das fällt allerdings mit nvidia-experimental-310 zunächst auf die Nase. In diesem Fall musste ich das Script /usr/bin/primusrun editieren und die Stellen nvidia-current durch nvidia-experimental-310 ersetzen (an 3 Stellen!). Nun funktioniert die Geschichte – sehr schön.

Update: ein sudo ln -s /usr/lib/nvidia-experimental-310/ /usr/lib/nvidia-current, also das Erstellen eines symbolischen Links funktioniert ebenfalls.

Eine weitere Erkenntnis ist, dass glxspheres nur bedingt als Benchmark geeignet ist. Ich dachte, die 60 fps der Intel-Karte sind einfach das Ende der Fahnenstange. Allerdings ist setzt hier die Bildschirm-Frequenz das Limit (Danke an Michael, für die Erleuchtung!). Rufe ich das Ganze mit vblank_mode=0 auf, kommt etwas ganz Erstaunliches heraus:

  • vblank_mode=0 primusrun glxspheres → zirka 400 fps
  • optirun glxspheres → zirka 190 fps
  • vblank_mode=0 glxspheres → zirka 195fps

Das bedeutet nun eigentlich, dass in diesem Test die Intel-Karte schneller ist, als die NVIDIA mit optirun. Der Aufruf einiger Spiele spricht eine andere Sprache. Also muss ein anderer Benchmarktest her. Unigine (auch bekannt durch das Echtzeitstrategiespiel Oilrush) haben einen Benchmarktest, der auch unter Linux läuft. Die Basic-Edition ist kostenlos und reicht für meine Zwecke. Und damit sieht die Sache schon erheblich anders aus.

Die Intel-Karte zeigt mit nicht einmal Texturen an und ein Benchmarktest liefert gerade 14 fps. Das Ganze sieht relativ traurig aus. (man verzeihe mir die Bildqualität, aber die sind schnell mit der Kamera geschossen, da ich den Rechner während des Benchmark-Tests nicht stören wollte)

Unigine Heaven Benchmark: Keine Texturen bei der Intel-Grafikkarte

Unigine Heaven Benchmark: Keine Texturen bei der Intel-Grafikkarte

Unigine Heaven Benchmark: Intel

Unigine Heaven Benchmark: Intel

Von hier an kann es nur noch bergauf gehen und sehen wir mal, was die NVIDIA-Karte mit optirun so leisten kann. Gleich viel besser. Texturen werden angezeigt und die Geschichte läuft eine ganze Ecke flüssiger.

Unigine Heaven Benchmark: Wesentlich schöner mit der NVIDIA-Karte

Unigine Heaven Benchmark: Wesentlich schöner mit der NVIDIA-Karte

Unigine Heaven Benchmark: ganz ordentlich mit optirun

Unigine Heaven Benchmark: ganz ordentlich mit optirun

Laut Aussagen eds Entwicklers soll sich bei primusrun die fps-Zahl noch einmal um den Faktor 1,5 bis 2 erhöhen. Ganz kommt mein Test nicht hin, aber eine Steigerung von 25,7 auf 31,9 für das Einspielen eines Pakets ist doch mehr als befriedigend. And the winner is: PRIMUSRUN!

Unigine Heaven Benchmark: primusrun ist wesentlich schneller

Unigine Heaven Benchmark: primusrun ist wesentlich schneller

jetzt los, Steam! – fehlen nur noch die ganzen Spiel … 🙂 … Das von mir verwendete Gerät ist ein Acer Aspire V3-571G und die Benchmarks wurden einfach in der Standard-Einstellung nach dem Start von Unigine Heaven ausgeführt.




 Alle Kommentare als Feed abonnieren

Ein Kommentar zu “NVIDIA-Karte unter Linux: primusrun – optirun auf Speed (mit Benchmark)”

  1. Georg says:

    Unter Ubuntu 12.10 kannst du auch [url=http://wiki.ubuntuusers.de/Hybrid-Grafikkarten/Prime]PRIME[/url] benutzen, es sollte wesentlich mehr FPS ergeben als mit allen Tricks.
    Ich hatte es auch mal mit einer GT540M ausprobiert, glxspheres unter bumblebee war sehr lahm, mit ein paar individuellen Settings etwas fixer, mit primusrun nochmals, PRIME war jedoch mindestens 50% schneller als der Rest...ich habe die genauen Werte leider nicht mehr.

    Unter 12.04 hingegen funktioniert PRIME leider nicht, da ist primus wirklich die beste Lösung.