AMD vs Nvidia no Linux

Olá, hoje vou contar um pouco da minha experiência como usuário de desktop (principalmente do Fedora) com placas de vídeo Nvidia x AMD.

Comecei usando placas Nvidia, já tive gtx 460,560,780 e 1060 3GB. Tenho maior experiência com Nvidia do que AMD, mas atualmente usando minha primeira placa AMD a RX 580 8GB, que não pretendo mudar tão cedo, vou explicar o porque neste artigo.

Instalação

nvidia

Primeiro ponto, relativo a instalação e uso prático de drivers das placas.

Nvidia

Para começar com o famoso dedo do Linus para Nvidia a muitos anos atrás, a situação não mudou até agora… mas trata-se dos problemas com Nvidia hibridas de laptop’s, experiência que nunca tive (graças a Deus).

Com Nvidia nunca tive grandes problemas para instalação de driver, isso por que não fui atrás de qualquer tutorial por aí, aliás, já testei e comprovei na prática que muitos tutoriais sobre instalação de driver nvidia são furados. E seguir o procedimento recomendado da sua distribuição ou repositório (no caso RPMFusion para Fedora) é sempre “flawless”. Talvez não usar uma distribuição Linux muito “exótica” ou as famosas “refisifuques” pode ajudar na experiência.

“siga a recomendação da sua distribuição, se for seguir tutorial, teste e confira se está de acordo com a documentação oficial.”

Todavia, se você é um fuçador/testador que modifica o sistema a ponto de trocar kernel’s seguidamente, a chance de quebrar é grande.

O principal driver da Nvidia é proprietário, é o driver mais usado e que recebe mais atenção dos mantenedores que corrigem bug’s em todas versões.

Existe driver open source “nouveau” mas é constituído de muito trabalho de engenharia reversa e das especificações básicas dadas pela Nvidia, ou seja, o Nouveau não é ruim por culpa dos dev’s, mas sim da empresa fabricante da placa.

Ser proprietário, quer dizer que não está “embutido” no kernel Linux, por isso a troca de kernel (feita inconsequentemente) pode causar problemas com driver Nvidia, assim como a instalação do driver pode ser complicada dependendo da distros / usuário / placa etc…

Então quer dizer que se usar uma distribuição que atualiza seguidamente o kernel, terei problemas?

Não necessariamente, no caso do Fedora usam recursos via akmod’s. Que basicamente “reinstalam” os modulos/drivers Nvidia a cada nova versão de Kernel instalado/atualizado. O processo é automaticamente feito no boot e geralmente não leva mais de 1 minuto. Além de o driver passar por uma curadoria / QA antes de ser lançado em updates aos usuários.

Em distribuições como o Arch Linux, o driver está nos repositórios que é atualizado, ou não, sempre que disponível. Se a atualização do driver não quebrar, eles enviam o update para os usuários, do contrário seguram.

No openSUSE existe repositórios (diretamente dos domínios da Nvidia) dedicado para Driver Nvidia, compatíveis para versão enterprise (Leap) e a versão mais atualizada (Tumbleweed).

E assim por diante, cada distribuição se encarrega de manter os binários Nvidia, compatíveis com os updates das suas respectivas versões. Mas em todas, desativar o secure boot será necessário.

Inclusive a distribuição PopOS que dedica uma .iso para Nvidia, avisa sobre o secureboot antes do download:

Resumindo, não é uma boa você (usuário comum de desktop) baixar o binário do site e instalar por conta própria. Apesar de ser possível, caso saiba o que está fazendo.

Distribuições como Ubuntu / PopOS tendem a ser mais amigáveis a drivers Nvidia, principalmente as problemáticas placas híbridas, pois já trazem o driver pré instalado no sistema.

Placas híbridas, algo que não recomendo para ninguém, se com placas de desktop pode ser preciso alguma ação externa da distro/usuário para fazer funcionar, com as híbridas pode não haver o que fazer por pura falta de suporte da Nvidia.

AMD

Instalação manual de driver (amdgpu) não é necessário, pois está no kernel Linux, todavia se você usa Debian free, terá que instalar firmwares do repo nonfree para funcionar. Tirando esta acessão de distro, é instalar o OS, a Steam e jogar!

Existe driver proprietário da AMD, porém é destinado ao uso em sistemas enterprise e com foco nas tecnologias gráficas de renderização/composição/encoder etc (O Davinci Resolve/Blender (com sorte) é compatível).

O driver proprietário pode ser usado em desktop em games, porém não tem tanta atenção como o amdgpu (open source) que é gerenciado pelo “mesa”. O driver proprietário da AMD para Linux pode gerar inúmeros problemas de integração com app’s de desktop comuns, como: players de video, navegadores e DE’s/compositores…

Então se realmente precisa do driver proprietário para uso do OpenCL em alguns deste programas, recomendo usar com um sistema dedicado a isso.

O AMDGPU (driver open source default no Kernel Linux) tem mais atenção de mantenedores da Valve, Intel, RedHat, Mesa e inclusive a própria AMD, ou seja, quando encontrem bug’s em jogos, a chance do report e correção vir primeiro para o mesa/amdgpu são grandes.

Um fator importante para placas AMD é ter pacotes mesa/kernel relativamente atualizados. Não é preciso usar uma distribuição bleeding edge ou rolling release tipo ArchLinux, mas usar um Debian old stable sem backports é pedir para encontrar incompatibilidades.

Existe um problema causado por uma desinformação, onde o usuário comum que acabou de comprar sua placa de video do ano (problema não tão comum aqui no BR) escolhe um sistema “user friedly” porém, este mesmo sistema congela pacotes/drivers e pode levar meses para fazer backport (isso quando faz) dos novos drivers ou atualização de compatibilidade com novos hardwares (falo de distros geralmente LTS) levando a problemas de incompatibilidade.

Mas resumindo a situação dos drives AMD:

Driver open source = melhor experiência pronto para uso.

Driver closed = pior experiência e não vem pronto para uso.

Tweak’s e centro de controle/monitoramento

images

Nvidia

Junto com o driver Nvidia, geralmente vem o pacote “nvidia-settings” (este da imagem acima, que parece ter saído do Windows XP!) que é uma interface gráfica para gerenciamentos específicos da placa/driver que não estão integrados a DE ou o próprio sistema. Por exemplo: controles de filtros de cores/imagem/processamento, consumo energético, desempenho, monitoramento de temperaturas, clock, resolução da tela (esta última é integrada na DE) etc.

É uma ferramenta fantástica e também avançada, algumas opções podem exigir privilégios de super usuário/root, como para salvar um perfil de configurações avançadas ou liberar alguns recursos travados por padrão.

O nvidia-settings é necessário para ativação de opções como o “composittion pipeline” que elimina (tenta) o tearing que possa haver em jogos, compositores de janelas, app’s gráficos, navegadores… a custo de algum desempenho (que pode ser muito pouco para perceber ou não, depende da placa).

É uma opção não vem ativa por padrão e usuários de primeira viagem podem não saber da sua existência e sofrer com a tela rasgada na sua primeira experiência, ou até descobrir como consertar isso.

Para monitoramento de temperaturas, pode-se usar o próprio nvidia-settings. Para informações “ingame” existe uma opção no próprio do nvidia-settings (porém não mostra frametimes) ou ferramentas open source como: Vulkan Overlay, DXVK_HUD e MangoHUD.

Para monitoramento “externo” existe o próprio nvidia-settings, GreenWithEnvy e Nvidia System Monitor dos app’s que conheço.

AMD

Se com Nvidia não possui uma integração “out of the box” com as DE’s/distribuições/kernel Linux, com AMD é ao contrário, você não vai precisar fazer nada para resolver tearing (pelo menos usando driver amdgpu open source).

Ele vem basicamente no modo “pronto para jogar” e não precisa de tweak’s.

Porém, se você quiser ter maior controle das configurações e monitoramento da GPU AMD, não existe um “centro de controle oficial” como o nvidia-settings da Nvidia.

Existe algumas soluções open source, algumas tem controle de clock/fan, monitoramento de temperaturas… porém nem todos softwares funcionam em todas placas e podem necessitar de procedimentos muito complexos para usuário comum.

Existe uma ferramenta muito interessante chamada “coreCtrl” está nos repositórios do Fedora e tem o objetivo de oferecer controle do hardware em geral, criação de perfis etc:

Captura de tela de 2020-07-10 20-35-11

Para monitoramento de temperaturas, pode-se usar também o próprio lm_sensors ou qualquer GUI que faça uso dele.

Para  informações “ingame” como contador de FPS, frametime… existe ferramentas como GALLIUM_HUD para OpenGL, Vulkan Overlay e MangoHUD.

Compatibilidade de Software / Games

Captura de tela de 2019-11-12 18-01-41.png

Este é um ponto que não vejo diferença, pois hoje em dia, a compatibilidade está muito diferente do que foi a alguns anos, jogos eram portados sem compatibilidade com Mesa (usado com AMD e Intel). Hoje em dia até os jogos antigos (teoricamente sem suporte) estão rodando com AMD/Mesa.

Todos os jogos de minha lib na Steam rodaram com AMD/Nvidia, tanto os nativos quanto via Proton. Tive mais casos de bug’s corrigidos em atualizações de driver Nvidia, porém por conta do maior tempo de uso. É bem possível que se eu tivesse começado a usar AMD no desktop Linux, teria passado por mais bug’s e incompatibilidades também.

Existe incompatibilidades de drivers ou recursos dos drivers AMDGPU (driver open source) com programas que precisam de implementação OpenCL proprietária (que vem no driver proprietário) como: Davinci Resolve e Blender. O encoder via hardware AMF da AMD funciona apenas com driver proprietário.

O driver proprietário / fechado da AMD, suportado apenas para UbuntuLTS / SUSE / RHEL e em versões específicas, não são muito sincronizados com pequenas atualizações destes sistemas, ou seja, pode ser complicado manter um sistema assim para um usuário comum. Este mesmo driver proprietário da AMD não é recomendado para games em geral.

Na grande maioria dos casos, apenas usar o driver open source padrão irá ser o suficiente.

Gravação de tela / encoders

Captura de tela de 2019-11-12 18-02-31.png

Este é um ponto que comparo NVENC (nvidia) e VAAPI (amd/intel). São os encoders via hardware, necessários para fazer gravação de tela sem usar muito processamento, evitando lag enquanto joga/transmite.

A AMD possui o encoder AMF, porém funciona apenas com driver proprietário (o mesmo que não é recomendado para games).

Não tenho como fazer um benchmark comparativo, tenho apenas minha impressão de que com Nvenc, no geral, consigo melhor qualidade na gravação ou talvez melhor adaptação no balanceamento do desempenho do game / gravação, pois usa hardware dedicado nas placas Nvidia para o encoder. Embora a experiência pode não ser tão boa assim, veja este artigo testando Nvenc no Wayland.

No geral consegui fazer boas gravações com a GTX 1060 / Nvenc e VAAPI / RX 580, principalmente com VAAPI, que atualmente está em um nível de desempenho muito bom via Gstreamer, como mostro aqui.

Compatibilidade com tecnologias open source

Captura de tela de 2019-11-12 18-05-25.png

Se você usa desktop Linux (independente da distros/DE) então usa muitas tecnologias open source, creio ser um ponto interessante para você!?

Este é um ponto que mais me agradou na AMD, pois sou o tipo de usuário “entusiasta” e gosto de testar novas tecnologias (como foi com Wayland) sendo assim, usar Wayland com Nouveau ninguém merece, o desempenho é ruim por conta da questão de falta de suporte da nvidia.

O driver proprietário da NVidia apartir da versão 470, teoricamente tem compatibilidade com Wayland e atualmente está usável com alguns “pequenos grandes” detalhes a serem resolvidos pela Nvidia.

Uso GNOME Wayland a um bom tempo em meu notebook com Intel e queria ter a mesma experiência no desktop (um dos motivos de ter adquirido uma GPU AMD).

Creio que a compatibilidade / otimização com compositores e DE’s também é melhor com AMD, por usar tecnologias nativas e integradas com o sistema, porém pode ser algo mais sutil, que dependendo do usuário ou situação, talvez nem note a diferença usando gpu nvidia/amd.

Também tive a experiência de um bug de incompatibilidade com Driver Nvidia usando GNOME Boxes (um software que gosto e uso muito). Reportei ao desenvolvedor do Boxes e ele concluiu que simplesmente não podia fazer nada, pois dependia da Nvidia lançar um update para talvez corrigir o problema, isso aconteceu a anos atrás.

É o tipo de problema que pode ter com drivers proprietários. Drivers open source também podem ter problemas de incompatibilidade, porém são muito raros e corrigidos rapidamente.

Desempenho

Algo que também não tenho queixa em nenhuma das marcas, mostrei em muitos vídeos do meu canal, consegui rodar tranquilamente jogos AAA, nem todos no máximo obviamente, mas nenhum problema que impeça de jogar. Notei um pequeno upgrade em games com vulkan em relação a gtx1060 3GB para a RX580 8GB, mas ao meu ver não foi nada além do esperado.

Open vs Closed Source

Este é um fator que favorece a AMD (partindo do princípio que o open source seja sua preferência) além de seus drivers serem open source e inclusos no kernel, existe mais engajamento de várias empresas e projetos de software.

No lado do desenvolvedor, fica mais fácil integrar suas tecnologias open em outras tecnologias open, pois as coisas são mais transparentes sem depender do suporte nem sempre muito eficaz por parte da Nvidia, a exemplo, por anos é esperado o suporte ao Wayland, problemas / bug’s / inconsistências com compositores de janelas de várias DE’s e softwares em geral, muitas vezes dependem do interesse da Nvidia (isso quando existe) em corrigir os mesmos.

Por outro lado, caindo no problema da compatibilidade de software, ser open não quer dizer ser compatível com tudo, quer dizer que PODE ser compatível com quem tem interesse de implementar.

O que não acontece com programas como Davinci Resolve e Blender, que funcionam apenas com implementação proprietária do OpenCL, incluso nos driver fechados da AMD e Nvidia.

Conclusão: Qual eu recomendo?

Resposta simples, recomendo as duas. Porém sou mais inclinado a recomendar Nvidia para quem pretende usar muito o nvenc e cuda (streamers, editores e artistas 3d profissionais..).

Creio que o VAAPI esta um pouco atrás do Nvenc na questão otimização no streaming/screencast, mas creio que hoje é totalmente usável para estes propósitos.

Se precisar do OpenCL, provavelmente limitar na escolha e dificultar o uso do sistema / distro por parte da AMD.

Já para quem quer o máximo de compatibilidade com tecnologias open source e experiencia mais out of the box, creio que é mais seguro a recomendação de GPU AMD.

Se não se importa nem com o uso do Nvenc da Nvidia ou as possibilidades de usar placa com driver open source e quer apenas “jogar”. Basta analisar o desempenho bruto de cada placa, especificações e comparar seus preços independentemente da marca e escolher o melhor CxB.

E sim, se você acha que minhas opiniões podem estar “contaminadas” devido minha experiência com GNOME, você está certo!

Apesar de eu não ter tido uma experiências “muito ruins” com GNOME + Nvidia + Xorg, eu aprendi que é uma batalha perdida com driver Nvidia, sempre em algum update o driver poderá falhar, ter incompatibilidade com novos kernel’s ou novas tecnologias. Isso porque o Linux não é prioridade para a empresa (que é a única que pode e mantem o driver).

Com AMD, a única distribuição que não tive uma boa experiência default foi no Debian, mas é uma questão de saber usar os repositórios da distro, como contei neste artigo.

Embora usando drivers open source da AMD não te garanta imunidade de bug’s ou regressões, na minha experiência são corrigidas mais rápido que eu possa notar, creio que por existir muito mais pessoas e empresas envolvidas em toda stack gráfica do Linux, do que a equipe de driver da Nvidia para o Linux.

Se deseja me dar sugestões, mande para fastos2016@gmail.com ou nas redes sociais.

2 comentários em “AMD vs Nvidia no Linux

Adicione o seu

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

Blog no WordPress.com.

Acima ↑

%d blogueiros gostam disto: