wtorek, 18 sierpnia 2015

NeteXt'73 - wsparcie dla Optimusa

Niedawno na łamach naszej strony, a dokładnie w tym wpisie informowałem Was o rozpoczęciu prac nad wdrażaniem wsprawcia dla ukadów typu Optimus (Intel GPU + NVidia). Miło mi zakomunikować, że prace idą w dobrym kierunku, a właściwie są na finiszu :). Tomek opracował sposób instalacji, a ja to tradycyjnie 'okodowałem', żeby proces ten był dla użytkownika przyjazny.
Wczoraj w późnych godzina wieczornych udało nam się ukończyć instalator sterowników. Tu po stronie użytkownika nic się nie zmienia. Program sam będzie sprawdzał z jaką konfiguracją ma do czynienia i zainstaluje sterowniki Nvidii w sposób "tradycyjny" lub nowy, po rozpoznaniu stosownej platformy.

Po czym rozpoznamy, że program znalazł Optimusa?

Standardowe okno instalatora sterowników do kart graficznych Nvidia wygląda tak.


Jeżeli system rozpozna konfigurację "Optimus", okno zyska dodatkowy klawisz:


lub nawet dwa klawisze.


Ilość klawiszy zależna jest od tego, czy posiadamy jakieś pliki *.desktop do wywoływania np. gier Steam na pulpicie. Jeżeli tak, to mamy 2 klawisze, jeżeli nie, to zarządzamy tylko aplikacjami uruchamianymi z poziomu menu czyli z katalogu:
/usr/share/applications/

 Wiemy już, że są nowe klawisze, ale do czego one służą?

Funkcja, którą wywołują klawisze, powinna przypaść do gustu graczom. Jest nią moduł pozwalający wymusić uruchamianie aplikacji z wykorzystaniem opcji PRIMUSRUN. W dużym uproszczeniu da to duży przypływ mocy, co jak wiadomo szczególnie przydatne jest w grach :)


Funkcja jak widać jest dwukierunkowa, czyli oprócz wymuszenia Primusrun można przywracać wartości defaultowe.

  • on - włączony prumusrun
  • off - primusrun wyłączony.
Poniżej przykład, jak będą widziane aplikacje umieszczone na pulpicie [e X t 7 3]:



Dodatkowo pojawił się w logach stosowny wpis w zakładce glxinfo po rozpoznaniu platformy OPTIMUS.

Jeszcze ode mnie [e X t 7 3] - w obszarze logów, zmiany widoczne będą w dwóch miejscach - na głównym ekranie, pojawi się informacja czy układ Nvidii jest aktywny - wtedy będziemy mieli komunikat - Nvidia Optimus - ON oraz gdy wyłączony - tu w większości przypadków, jeśli nie korzystamy z żadnych aplikacji, ani procesów wykorzystujących układ Nvidii, pojawi się komunikat - Nvidia Optimus - OFF, jak na poniższym screenie. To wyłączenie układu Nvidii skutkować będzie oszczędzaniem energii i chłodniejszą maszyną. To z oczywistych względów ma głównie znaczenie w czasie pracy na zasilaniu bateryjnym. Uwaga bumblebee automatycznie aktywuje układ Nvidii, gdy będzie to konieczne i automatycznie go dezaktywuje. Zatem w sytuacji gdy nie korzystamy z tego układu, pozycja Nvidia Optimus - OFF jest jak najbardziej właściwa:


Ponad powyższe informacje na temat zainstalowanych sterowników znajdziemy dodatkowo w dziale logi - glxinfo:



Tyle na gorąco ode mnie. Zapraszam do pytań w komentarzach. Zakładam, że więcej powie Tomek, jako posiadacz takiej platformy. 


Zatem wywołany do tablicy - jeszcze parę słów ode mnie [e X t 7 3]. Konfigurację tego rozwiązania dobrałem tak aby "wycisnąć" z Nvidii wszystko co się da. Tu zrealizowałem to zarówno przez konfigurację X`ów dla układu Nvidii, konfiguracje samego bumblebee, jak i zapewnienie najnowszych bibliotek Primus [przy jednoczesnej najstabilniejszej obecnie architekturze samego bumblebee], aż poprzez proces wywołania primusrun - tu wymuszam korzystanie z wszystkich rdzeni/wątków danego procesora, oczywiście aby zmaksymalizować wydajność.

Ponad to co już napisaliśmy wprowadziliśmy jeszcze istotny skrypt do bazy "Przydatnych skryptów". Nazwany został "Steam - Nvidia Optimus fix". Wykonujemy go wtedy, gdy gry dystrybuowane przez Steam nie chcą działać pomimo oznaczenia ich w w/w primus-menu-start lub primus-desktop-start. Tu problem polega na pewnych zmianach jakie wprowadzono w bibliotekach DRM, co właśnie skutkuje problemami z uruchamianiem gier, w szczególności tych bazujących na silniku Source. Jeśli tak sie dzieje odpalamy skrypt i wszystko powinno działać w najlepszym porządku.


Powyższe rozwiązanie plus inne optymalizacje jakie proponujemy w ramach NeteXt'73, pozwalają na komfortową zabawę m.i. grą War Thunder na maszynie wyposażonej w Nvidia Optimus:

Rozdzielczość: 1920x1080:

Ustawienia:



Sprzęt/Machine: Asus zenbook ux303ln

CPU: Intel Core i5-5200U (2 rdzenie, od 2.2 GHz do 2.7 GHz, 3 MB cache),
GPU: Nvidia GF 840M 2 GB Ram + Intel HD Graphics 5500,
RAM: 8 GB Ram

System: Kubuntu Linux 14.04.3 64 bit

Kernel: Linux version 4.1.6-ext73-41.6-broadwell (root@ext73-kernel) (gcc version 5.2.1 20150811 (eXt73-build_v6.3) ) #38 SMP PREEMPT Tue Aug 18 00:09:05 CEST 2015

Sterowniki/Drivers: Nvidia 352.30

NvidiaOptimus: Bumblebee + najnowsze biblioteki Primus/+the latest Primus library.

Zarządzanie energią/wydajnością | Performance and Energy Management: APM 5.0




Na poniższych screenach widać jakość oprawy graficznej oraz liczbę klatek/s, jakie osiąga wskazana powyżej konfiguracja:






Pozdrawiamy