SDB:NVIDIA Bumblebee
Getestet mit openSUSE | Empfohlene Artikel | Verwandte Artikel | |||
|
Inhaltsverzeichnis
Situation
Nvidia Optimus ist eine Technologie von Nvidia, mit deren Hilfe bei Notebooks Energie gespart werden soll, um die Akkulaufzeit zu erhöhen. Hierzu wird die Leistungsstärkere Nvidia-Grafikkarte nur zur internen zugeschaltet wenn Bedarf besteht oder dies explizit vom Benuzer gewünscht ist.
Um diese Technologie auch unter Linux nutzen zu können wurde das Bumblebee Projekt ins leben gerufen. Als Alternative kann bei vielen Laptops auch die Nvidia Grafikkarte im BIOS deaktiviert werden. Dann wird nur noch der interne Grafikadapter genutzt.
Vorgehensweise
Vorbereitung
Obwohl die Installation von Bumblebee meißt ohne Probleme verläuft, ist es besser vorher ein Backup seiner openSUSE Installation anzulegen. btrfs ist seit openSUSE 13.2 das Standart FileSystem für /root, welches snapshots unterstützt. Mit dem Befehl:
wird ein Snapshot Namens "BeforeBB" angelegt, auf welchen man bei Problemen zurückrollen kann.
Bumblebee mit Open Source Treibern einrichten
Um Bumblebee ohne proprietäre Treiber zu nutzen, kann es so eingerichtet werden das nur die Intel Grafikkarte mit den Open Source Treibern verwendet wird. Der proprietäre Nvidia Treiber wird nicht benötigt.
Das Bumblebee Repository muss entweder durch Yast oder per Zypper dem System hinzugefügt werden:
- Note: 42.2 ist die Version die hier verwendet wird. Sollte eine andere Version laufen, einfach ersetzen
Jetzt kann Bumblebee installiert werden:
Als nächstes muss der User der bumblebee und video Gruppe beitreten:
Danach wird bbswitch und dkms gestartet:
Nun muss in /etc/modprobe.d/50-blacklist.conf noch die Zeile "blacklist nouveau" eingefügt werden (auch wenn der nouveau Treiber genutzt werden soll). Ist die Zeile eingetragen noch ein
ausführen.
Ein Neustart ist nicht unbedingt nötig, schaden tut es aber auch nicht.
Bumblebee mit Nvidia Treiber installieren
Vorbereitung
Um den Nvidia Treiber zu installieren müssen die Kernel Headers installiert sein. Am besten erst einmal sein System auf den neuesten Stand bringen.
Jetzt können die Kernel Headers installiert:
Installieren
Das Bumblebee Repository muss entweder durch Yast oder per Zypper dem System hinzugefügt werden:
- Note: 42.2 ist die Version die hier verwendet wird. Sollte eine andere Version laufen, einfach ersetzen
Jetzt kann Bumblebee installiert werden:
- Note: Wenn ein 64-bit System läuft, sollte ebenfalls nvidia-bumblebee-32bit und VirtualGL-32bit installiert werden, damit 32-bit Andwendungen wie Steam ebenfalls funktionieren.
Als nächstes muss der User der bumblebee und video Gruppe beitreten:
Danach wird bbswitch und dkms gestartet:
- Note: Will man die Nvidia Grafikkarte auch für CUDA Programmierung verwenden, ist zu beachten das die Bumblebee Nvidia Treiber meistens neuer sind als die die mit dem CUDA Package kommen. Aus diesem Grund muss erst Bumblebee installiert werden, dann das CUDA 7.0 Package und danach noch einmal Bumblebee installieren, damit alles korrekt funktioniert.
Nun muss in /etc/modprobe.d/50-blacklist.conf noch die Zeile "blacklist nouveau" eingefügt werden (auch wenn der nouveau Treiber genutzt werden soll). Ist die Zeile eingetragen noch ein
ausführen.
Jetzt muss der Rechner neugestartet werden.
Bumblebee Testen
Mit
kann der Status von Bumblebee abgerufen werden. Ist die Ausgabe "Bumblebee status: Ready (3.2.1). X inactive. Discrete video card is off.", sollte Bumblebee funktionieren.
Um das zu testen kann man "glxspheres" mit optirun starten:
(Note: glxspheres ist im Mesa-demo package zu finden)
Es sollte sich ein neues Fenster mit sich drehenden Kreisen öffnen. Parallel zu den Kreisen sollte folgendes in der Konsole erscheinen:
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres) Visual ID of window: 0x21 Context is Direct OpenGL Renderer: GeForce GTX 970M/PCIe/SSE2 213.450051 frames/sec - 238.210257 Mpixels/sec 221.106897 frames/sec - 246.755297 Mpixels/sec
Optional kann anstatt "optirun" auch "primusrun" genutzt werden:
Polygons in scene: 62464 (61 spheres * 1024 polys/spheres) Visual ID of window: 0x96 Context is Direct OpenGL Renderer: GeForce GTX 970M/PCIe/SSE2 61.235767 frames/sec - 68.339115 Mpixels/sec 59.914242 frames/sec - 66.864294 Mpixels/sec
Wie man sieht ergibt primusrun weniger frames/sec. Das liegt daran das primusrun die Framerate der Frequenz des Monitors anpasst (normalerweise 60MHz). Setzt man "vblank_mode=0" vor primusrun, wird die Sperre der Framerate aufgehoben.
vblank_mode=0 primusrun glxspheres
optirun vs primusrun
Der Unterschied zwischen "optirun" und "primusrun" ist folgender: "optirun" erzeugt eine zweite Instanz von X und kopiert dabei den Framebuffer. Diese Lösung ist relativ langsam was man an der Perfomance merkt. Trotzdem ist es hilfreich, da einige Programme nicht mit "primusrun" funktionieren.
Für mehr Performance kann man VSync abschalten:
vblank_mode=0 primusrun <app>
Steam
NOTE: nvidia-bumblebee-32bit muss installiert sein damit Steam funktioniert
Damit Steam gleich beim Start Bumblebee nutzt, muss es wie folgt gestartet werden:
Als Alternative kann man Steam ohne primusrun starten und bei den Spielen die Nvidia Grafikkarte brauchen, die Startoption "primusrun %command% " in den Eigenschaften setzen.
Manuell zwischen den Karten wechseln
Den Status der Karte abrufen:
um die Karte abzuschalten: