O engenheiro da NVIDIA quebra e depois corrige rapidamente o desempenho da GPU AMD no Linux

Em uma surpreendente reviravolta, um engenheiro da NVIDIA empurrou uma correção para o kernel Linux, resolvendo uma regressão de desempenho vista na AMD integrada e dedicada hardware GPU (via via Phoronix). Acontece que o mesmo engenheiro introduziu inadvertidamente o problema em primeiro lugar com um conjunto de alterações no kernel na semana passada, tentando aumentar o espaço da barra PCI para mais de 10tib. Isso acabou sinalizando incorretamente a GPU como um desempenho limitado e dificultado, mas felizmente foi rapidamente capturado e corrigido.
No paradigma de código aberto, é uma regra não escrita para consertar o que você quebra. O kernel Linux é de código aberto e aceita contribuições de todos, que são revisados. Espera -se que os colaboradores responsáveis ajudem a corrigir problemas que surgem de suas mudanças. Portanto, apesar de sua rivalidade no mercado de GPU, a Foss (software de código aberto gratuito) é uma avenida que preenche o abismo entre a AMD e a NVIDIA.
A regressão foi causada por um compromisso que se destinava a aumentar o espaço da barra PCI além do 10TIB, provavelmente para sistemas com grandes espaços de memória. Isso reduziu indiretamente um fator chamado entropia do KASLR nos dispositivos do consumidor x86, que determina a aleatoriedade de onde os dados do kernel são carregados na memória em cada inicialização para fins de segurança. Ao mesmo tempo, isso também inflou artificialmente o alcance da memória acessível do kernel (Direct_Map_physmem_end), normalmente para 64tib.
No Linux, a memória é dividida em diferentes zonas, uma das quais é o dispositivo de zona que pode ser associado a uma GPU. O problema aqui é que, quando o kernel inicializaria a memória do dispositivo de zona para Radeon GPUs, uma variável associada (max_pfn) que representa a RAM endereçável total pelo kernel aumentaria artificialmente para 64tib.
Como a GPU provavelmente não pode acessar toda a faixa de 64tib, ele sinalizaria DMA_Addressing_limited () como verdadeiro. Essa variável restringe essencialmente a GPU a usar a zona DMA32, que oferece apenas 4 GB de memória e explica as regressões de desempenho.
A boa notícia é que essa correção deve ser implementada assim que a solicitação de tração aterrisse, logo antes que a janela de mesclagem do Linux 6.15-RC1 feche hoje. Com uma cadência geral de seis a oito semanas antes dos novos kernels do Linux, podemos esperar que o lançamento estável de 6.15 esteja disponível no final de maio ou no início de junho.