Optimus-manager. Przełączanie się między kartami graficznymi

Obecnie istnieją trzy metody korzystania z GPU Nvidia:

  1. Uruchamianie całej sesji X na GPU Intel i używać Bumblebee, aby odciążyć renderowanie na GPU Nvidia. Chociaż naśladuje to zachowanie Optimusa w systemie Windows, jest to nieoficjalne, zhackowane rozwiązanie z trzema głównymi wadami:

    • zauważalny spadek wydajności (ponieważ Bumblebee musi użyć procesora, aby skopiować ramki na ekran)

    • brak wsparcia dla Vulkan (dlatego jest niezgodny z DXVK i dowolną rodzimą grą używającą Vulkan, na przykład Shadow of the Tomb Raider)

    • nie będziesz mógł korzystać z żadnego wyjścia wideo (takiego jak porty HDMI) podłączonego do procesora graficznego Nvidia, chyba że do tego procesora graficznego zostanie jednocześnie załadowany sterownik „nouveau” typu open source.

  2. Użycie nvidia-xrun, aby procesor graficzny Nvidia działał na własnym serwerze X w innym terminalu wirtualnym . Musisz utrzymywać dwa X serwerów działających jednocześnie, co może mieć negatywny wpływ na wydajność. Ponadto nie masz dostępu do normalnego środowiska pulpitu, gdy jesteś w wirtualnym terminalu GPU Nvidia, i z własnego doświadczenia wynika, że ​​sterownik nvidia jest podatny na awarię podczas przełączania między wirtualnymi terminalami.

  3. Uruchomianie całej sesji X na GPU Nvidia i wyłączenie renderowania na GPU Intel. Umożliwia to uruchamianie aplikacji z pełną wydajnością, z obsługą Vulkan i dostępem do wszystkich wyjść wideo. Ponieważ jednak Twój energochłonny procesor graficzny Nvidia jest włączony przez cały czas, ma to ogromny wpływ na żywotność baterii. Ta metoda jest często nazywana Nvidia PRIME, chociaż technicznie PRIME jest tylko technologią, która pozwala twojej GPU Nvidia wysyłać ramkę do wbudowanego wyświetlacza twojego laptopa za pośrednictwem procesora graficznego Intel.

Link. .Tłumacz google :stuck_out_tongue:


Musimy zainstalować sterowniki dla intela i nvidii. Prawdopodobnie sterownik do intela posiadamy, sprawdzamy:

mhwd -li

> Installed PCI configs:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
           video-linux            2018.05.04                true            PCI
         network-r8168            2016.04.20                true            PCI


Warning: No installed USB configs!

Sprawdzamy jakie stery możemy zainstaloać do nvidii:

mhwd -l

> 0000:02:00.1 (0200:10ec:8168) Network controller Realtek Semiconductor Co., Ltd.:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
         network-r8168            2016.04.20                true            PCI


> 0000:04:00.0 (0302:10de:1140) Display controller nVidia Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-430xx-bumblebee            2019.08.24               false            PCI
video-hybrid-intel-nvidia-418xx-bumblebee            2019.08.24               false            PCI
video-hybrid-intel-nvidia-390xx-bumblebee            2019.08.23               false            PCI
video-hybrid-intel-nvidia-340xx-bumblebee            2019.08.24               false            PCI
    video-nvidia-435xx            2019.08.25               false            PCI
    video-nvidia-430xx            2019.08.25               false            PCI
    video-nvidia-418xx            2019.08.24               false            PCI
    video-nvidia-390xx            2019.08.23               false            PCI
    video-nvidia-340xx            2019.08.23               false            PCI
           video-linux            2018.05.04                true            PCI


> 0000:00:02.0 (0300:8086:0a16) Display controller Intel Corporation:
--------------------------------------------------------------------------------
                  NAME               VERSION          FREEDRIVER           TYPE
--------------------------------------------------------------------------------
video-hybrid-intel-nvidia-430xx-bumblebee            2019.08.24               false            PCI
video-hybrid-intel-nvidia-418xx-bumblebee            2019.08.24               false            PCI
video-hybrid-intel-nvidia-390xx-bumblebee            2019.08.23               false            PCI
video-hybrid-intel-nvidia-340xx-bumblebee            2019.08.24               false            PCI
           video-linux            2018.05.04                true            PCI
            video-vesa            2017.03.12                true            PCI

Należy wejść na stronę i zobaczyć, która wersja sterowników obsłuży naszą kartę.
Jaką mamy kartę np.:

lspci -vnn | grep GeForce

Przykład instalacji:

sudo mhwd -i pci video-nvidia-435xx

Instalujemy i uruchamiamy usługę optimus-manager:

sudo pacman -S optimus-manager
sudo systemctl enable optimus-manager
sudo systemctl start optimus-manager

Przełączamy się na nvidia:

optimus-manager --switch nvidia

You are about to switch GPUs. This will forcibly close all graphical sessions and all your applications WILL CLOSE.
(you can pass the --no-confirm option to disable this warning)
Continue ? (y/N)

Wciskamy Y

Komendy, które możemy zastosować są w “helpie”

optimus-manager -h

Jest w AUR graficzna nakładka optimus-manager-qt, dzięki której poustawiamy sobie różne parametry.


Jeśli mamy zainstalowane stery bumblebee to możemy je wykorzystać. Trzeba tylko doinstalować optimus-manager jw.

Wyłączyć usługę bumblebee:

sudo systemctl stop bumblebeed
sudo systemctl disable bumblebeed

I uruchomić usługę optimus-manager jw.

Sposoby sprawdzenia na jakiej karcie jesteśmy.

INTEL

glxinfo | grep “server glx vendor string”

zwróci:

server glx vendor string: SGI

inxi -Gxx

zwróci:

Graphics:  Device-1: Intel Haswell-ULT Integrated Graphics vendor: ASUSTeK driver: i915 v: kernel bus ID: 00:02.0 
           chip ID: 8086:0a16 
           Device-2: NVIDIA GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] vendor: ASUSTeK driver: N/A 
           bus ID: 04:00.0 chip ID: 10de:1140 
           Display: x11 server: X.Org 1.20.5 driver: intel compositor: kwin_x11 resolution: 1366x768~60Hz 
           OpenGL: renderer: Mesa DRI Intel Haswell Mobile v: 4.5 Mesa 19.1.5 compat-v: 3.0 direct render: Yes

NVIDIA

glxinfo | grep “server glx vendor string”

zwróci:

server glx vendor string: NVIDIA Corporation

inxi -Gxx

zwróci:

 Device-1: Intel Haswell-ULT Integrated Graphics vendor: ASUSTeK driver: i915 v: kernel bus ID: 00:02.0 
           chip ID: 8086:0a16 
           Device-2: NVIDIA GF117M [GeForce 610M/710M/810M/820M / GT 620M/625M/630M/720M] vendor: ASUSTeK driver: nvidia 
           v: 390.129 bus ID: 04:00.0 chip ID: 10de:1140 
           Display: x11 server: X.Org 1.20.5 driver: modesetting,nvidia compositor: kwin_x11 resolution: 1366x768~60Hz 
           OpenGL: renderer: GeForce GT 720M/PCIe/SSE2 v: 4.6.0 NVIDIA 390.129 direct render: Yes

Cóż pozostaje mi tylko życzyć Wam powodzenia. :slightly_smiling_face:

PS.
I jeszcze nvidia-settings wygląda tak:

INTEL

nvidia-settings_intel

NVIDIA

1 polubienie

Brakuje mi tylko jednego, do szczęścia. Krótkiego wyjaśnienia tego, czym różnią się poszczególne wersje (3xxxx, 4xxxx) driverów nVidia?

Nvidia: 340, 390, 418, 430 to wersje LTS, jak przy kernelach.
Np. wersja 418 jest w pełni funkcjonalna, posiada obsługę CUDA, wersja 430 ma dodatkowe opcje, ale ma zepsute CUDA (nie działa). Dla niektórych dana seria może być szybsza niż inna.

Nvidia: 435 to wersja beta (krótko żyjąca, będzie zastąpiona nowszym LTSem), wprowadzająca możliwość PRIME off-load, czyli wyłączania dedykowanych kart na układach hybrydowych. Krótko mówiąc, nareszcie pojawiają się rozwiązanie podobne do tego, które jest w windowsie, jednak to ciągle początki i nie działa to idealnie, np. karta nvidii nie jest w 100% wyłączana, co powoduje, że zużywa więcej energii niż powinna (ale różnica jest niewielka, jakieś 6% więcej niż gdyby była wyłączona).

Dodatkowo, wersja 435 dzieli się na podserie, z których każda ma inne poprawki i właściwości:

435.21 zastępuje 435.17 i zawiera wszystko co ma 435.17 naprawę błędu, który crashował serwer X.
435.19.02 ma sterownik beta vulkan’a, z dodatkowymi cechami i jest oparta o 435.17,ale nie ma patcha do crashu Xorga, który 435.21 xorg posiada, ake ten z kolei nie ma dodatkowych rzeczy z vulkan’a, które posiada 435.19.02…

Następny LTS już będzie integrował wszystkie cechy 435. Sterownik 435 jest obecnie dostępny tylko na gałęzi testing i unstable.

Czyli, o ile dobrze rozumiem, poszczególne wersje/serie (takie jak 430, 390, 340, 418, 435) przeznaczone, są generalnie do wszystkich modeli kart nVidia (pomijając subtelności takie, jak już/jeszcze nie obsługiwane modele), a różnią się tym, że:

  • niektóre, są ‘zwykłe’, a inne LTS;
  • posiadają inną funkcjonalność (częściowo).

A skąd taka mnogość aktywnych serii?

Są modele kart obsługiwane jedynie przez starsze serie nvidii i z różnym, starym sprzętem na rynku potrzebne są starsze serie sterowników. Podobnie (choć trochę inaczej) jest z kernelami linuxowymi. Też masz wiele wersji LTS dostępnych i w zasadzie skoro już ktoś ogłosił daną serię/wersje LTS to musi ona dość długo żyć, więc w pewnym momencie tych LTSów się namnoży.

Jednak większość graczy będzie chciała zdecydowanie najnowsze serie: 430 LTS lub 435 beta. Podobno 435 wybacza dużo w ustawieniach graficznych i wszystko chodzi, nawet jeśli przy poprzednich seriach system w ogóle by nie otwierał sesji graficznych. Ma to jakiś związek z nowymi funkcjonalnościami.

Ja generalnie siedzę na 430, bo używam optimus-manager i w sumie nie potrzeba mi szybko nowych ulepszeń z 435, bo i tak rzadko gram, w większości siedzę na intelu, więc wolę jak najmniejsze zużycie energii i jak najmniej problemów.

A oto dlaczego nie mogę zainstalować nowszych sterowników:

WARNING: The NVIDIA GeForce GT 720M GPU installed in this system is supported through the     
           NVIDIA 390.xx legacy Linux graphics drivers.  Please visit
           http://www.nvidia.com/object/unix.html for more information.  The 430.40 NVIDIA      
           Linux graphics driver will ignore this GPU.
WARNING: You do not appear to have an NVIDIA GPU supported by the 430.40 NVIDIA Linux         
           graphics driver installed in this system.  For further details, please see the       
           appendix SUPPORTED NVIDIA GRAPHICS CHIPS in the README available on the Linux driver 
           download page at www.nvidia.com.

Czyli przed wyborem warto zajrzeć na ich stronę jak piszą i zobaczyć, które wersja sterowników obsłuży naszą kartę.

Zaistniała 4ta metoda przełączania procesora graficznego: GitHub - bayasdev/envycontrol: Easy GPU switching for Nvidia Optimus laptops under Linux jednak nie mi rozwijać temat. Ale może ktoś omówi to narzędzie. Niestety - najpewniej za tępy jeszcze na to jestem - u mnie po przełączeniu na nvidie, ekran logowania pozostaje czarny a cały system się zawiesza. Przełączenie w tryb hybrydowy działa, ale dla renderowania nie ma żadnego wyjścia.