Nvidia Optimus - Experiências e Opinião

k4n0

New Member
Registrado
Olá. Eu acho que seria prudente deixar anotado aqui toda a minha experiência com a tecnologia nVidia Optimus no meu hoje zumbi Dell Inspiron 14R 5437. Talvez as informações possam ajudar alguém que esteja passando pelos mesmos problemas, instalando drivers da Nvidia em Notebooks usando Linux.

Pra quem não sabe, a tecnologia Optimus é uma tecnologia proprietária da nVidia que permite que a placa de vídeo de um notebook seja ligada, desligada ou ajustada à medida da carga operacional no sistema. Ela funciona perfeitamente no Windows, normalmente só precisando instalar os drivers proprietários da nVidia pra fazer funcionar. Mas no Linux a experiência varia bastante dependendo da distribuição, e como ela interage com seu sistema com as coisas "pré-prontas" que existem durante a instalação da mesma. Algumas detectam já que seu notebook possui a tecnologia, mas em outras você tem que fazer manualmente.

A primeira coisa que eu aprendi (e isso vale muito pra Linux, mas é expansível pra software e hardware): não existe solução mágica. No caso de tecnologia Optimus, principalmente as mais antigas, não existe programa miraculoso ou script miraculoso que vão resolver seu problema só de rodar eles. Você precisa ler a documentação e se informar sobre seu hardware, experiências de outras pessoas com o mesmo hardware ou similares, e disposição pra sujar as mãos pra fazer o que você quer funcionar. Então pesquise, pergunte, não se limite apenas à pergunta do Google, porque tudo pode te aproximar do seu resultado desejado.

Esse Notebook me acompanha desde o final de 2013, e de 2016 até eu venho "brincando com Linux" com ele, que era inclusive meu computador primário. Comecei com Ubuntu Dual Boot com Windows, depois Mint puro, Manjaro (passei o maior tempo com ele) e por fim, Arch. A placa de vídeo dele está se comportando de um jeito muito estranho por dar erro de corrupção da low memory toda hora, e a bateria recentemente pifou, então ele está nas últimas. Mas vou passar as informações que eu consegui pegar com o tempo do jeito mais sucinto que eu conseguir.

  • Toda distro carrega os módulos, que podem ser correlacionados de um jeito muito grosseiro aos drivers do Windows. Isso é importante, porque dependendo da distribuição, não existe a opção entre escolher qual o motor de renderização que vai ser usado pelo computador (entre o nouveau e o proprietário nvidia-driver), então é algo pra ficar atento. Você sempre pode checar se um módulo está carregado usando lsmod. Os módulos da nouveau tem o próprio nome; já os da nvidia, os nomes são nvidia_drm, nvidia_uvm, nvidia-modeset, e nvrm.
  • É importante saber como é a disposição de hardware do seu notebook: onde conecta-se a saída de vídeo, e por que isso é importante? A saída de vídeo do seu móvel pode conectar-se pelo processador, ao qual a placa de vídeo não renderiza diretamente, mas sim envia informação de renderização para seu processador (referido na documentação da nVidia como GPU Offloading); ou a placa de vídeo renderiza diretamente o vídeo, de forma bem parecida com Desktops. Em cada caso, a configuração pra fazer essa tecnologia funcionar é diferente, e isso modifica diretamente como o seu computador reage em situações de estresse e de economia de energia. Eu só tenho experiência na primeira, mas acredito que a segunda seja bem mais fácil de manejar. Um jeito fácil de descobrir é utilizando o manipulador do Xorg pra ver quais as saídas disponíveis:
xrandr --listproviders
  • NÃO INSTALE O DRIVER DO SITE DA PRIMEIRA VEZ. Sempre utilize seu gerenciador de pacotes para instalar os drivers mais recentes, e trabalhe com eles. Esses drivers são já compilados de modo a funcionar na sua distribuição, ao contrário dos arquivos de extensão .run que disponibilizam para download. Se tu já tentou de tudo e não conseguiu fazer funcionar, de fato, tente o arquivo .run. Mas ressalto que não deve ser sua primeira opção nunca.
  • Complementar ao ponto anterior, instale as ferramentas padrão da nVidia pra fazer a configuração: em particular, nvidia-prime. Como ferramenta direta da nVidia, ela já tem alguns presets que podem te auxiliar na hora de preparar o seu computador para o offload. Certifique-se que o módulo do nouveau não está carregado usando lsmod | grep nouveau. Se estiver carregado, você precisa ir para a pasta da sua distribuição que rege os módulos (acredito que a maioria fique em /etc/modprobe.d/, crie um arquivo como blacklist-nouveau.conf ou outro nome de fácil lembrança, e anote para impedir que o módulo inicie:
blacklist nouveau

Isso vai certificar que os módulos da nvidia carreguem, mas isso ainda não é garantia que vá funcionar. Esteja com um pendrive com Liveboot perto por segurança.
  • Utilize as ferramentas da nVidia pra configurar. Outra que tu pode usar é nvidia-smi e prime-run pra ver se a placa de vídeo funciona, em qualquer circunstância. O primeiro vai te dar informações sobre ela e os programas que estão na VRAM dela, enquanto o segundo é usado pra rodar diretamente nela (se por padrão o computador usa o processador apenas).
  • Caso isso não funcione, leia o seu journal o máximo possível: ele vai ter pistas muito úteis pro por que sua placa de vídeo não funciona. Veja também os logs do seu display server (no caso eu recomendo fortemente Xorg/X11, já que Wayland é um pouco problemático, mas você é livre pra tentar com ele também), que podem indicar também o que pode estar acontecendo.
  • Cheque seus initramfs pelos parâmetros de criação da imagem de boot. Ou seja, tente forçar os módulos a serem carregados no seu /etc/grub/grub.cfg (considerando que você usa Grub, claro). Se você usar outro inicalizador, modifique de acordo com a sintaxe do mesmo.
MODULES=(nvidia nvidia-modeset nvidia_uvm nvidia_drm)

Ainda no Grub, você pode tentar modificar um parâmetro que eu honestamente não tenho ideia do que faz, mas que pra algumas pessoas pode resolver:

GRUB_CMDLINE_LINUX_DEFAULT="[INSIRA SEUS PARÂMETROS PADRÃO AQUI] rcutree.rcu_idle_gp_delay=1"

  • Caso tudo dê errado, a solução que funcionou pra mim foi usar um programa chamado nvidia-xrun: ele cria uma sessão especializada usando APENAS a placa de vídeo, e por padrão, apenas o processador. Isso pra mim era interessante porque eu só precisava da placa de vídeo em situações em que eu já estaria conectado na tomada de qualquer jeito, então tanto fazia. Pra habilitá-lo, você tinha que acessar um TTY (por padrão, Ctrl+Alt+F2 a F6), logar e executar. Recomendo dar uma lida sobre como funciona.
  • Caso isso também não esteja funcionando, você pode ter que configurar manualmente o Offload. Acesse o link em GPU Offloading pra mais informações. Caso o comando anterior do xrandr dê mais de uma saída dispnível, você pode usar o offload já pronto com o seguinte comando (troque Intel ou AMD pelo sink disponível primário):
xrandr --setprovideroutputsource [intel|AMD] nvidia
  • Pronto, deu tudo errado e nada funcionou? Hora de ler na documentação da nVidia se seu notebook é um dos pobres coitados que tem que usar os drivers legacy. Dê uma pesquisada a respeito, ou simplesmente teste eles (aí vai depender entre as distribuições, mas como sempre, tome cuidado).
Se for de interesse, eu posso editar o post pra colocar alguns arquivos de configuração que eu tentei usar e outras configurações dentro do X11 que eu mexi pra tentar funcionar. No fim das contas, minha placa de vídeo estava dando esses problemas e não consegui resolver porque parece algo físico mesmo. Mas resolvi deixar documentado num fórum brasileiro, já que existe tão pouco facilmente acessível em português.
 
Antigamente eu usava o bumblebee, era só instalar e inicializar oq eu quisesse com o primusrun.
Hoje em dia parece já ser algo nativo do driver da nvidia (com o próprio prime-run q vc citou), mas nunca tive a oportunidade de testar pois simplesmente desliguei a GPU do meu notebook já que achava ela bem desnecessária.
 
O bumblebee não vem nativo em muitas distribuições; a que funcionou melhor 'fora da caixa" foi o Linux Mint, que brada também a própria compatibilidade com notebooks de Nvidia Optimus na apresentação da sua distro (principalmente com o Cinnamon).

Mas como eu disse, depende muito da arquitetura e de como o notebook é montado. O meu teve o terrível azar de ser a loteria de todos os possíveis problemas que poderiam acontecer.
 

Users who are viewing this thread

Voltar
Topo