Nada certo

Patch para otimizar kernel Linux com x86_64 é criticado e pode não avançar

Um patch que propõe novos níveis de otimização x86_64 para o kernel Linux recebeu críticas dos desenvolvedores upstream. A falta de justificativa clara e a complexidade adicional podem impedir sua aceitação no kernel principal.

Processadores AMD Ryzen 7020 Series para dispositivos móveis trazem desempenho de ponta e longa duração da bateria para o dia a dia
Processadores AMD Ryzen 7020 Series para dispositivos móveis trazem desempenho de ponta e longa duração da bateria para o dia a dia

Um patch foi enviado recentemente para o kernel Linux que visa introduzir opções de configuração específicas para otimizar a compilação do kernel em diferentes níveis de microarquitetura x86_64. A ideia é aprimorar o desempenho em sistemas modernos da Intel e AMD. No entanto, essa proposta já encontrou críticas significativas dos desenvolvedores upstream do kernel e pode não ser aceita no kernel principal.

Proposta do patch

O patch adiciona novos níveis de recurso x86_64 v2, v3 e v4 como opções no Kconfig. Essas opções permitem que, ao compilar o kernel com os compiladores GCC e LLVM Clang mais recentes, sejam configuradas instruções como “-march=x86-64-v4”, otimizando a compilação para sistemas modernos.

A microarquitetura x86_64-v2 corresponde a processadores Intel Nehalem e AMD Bulldozer ou mais recentes, que suportam instruções SSE4.1/SSE4.2. A versão x86_64-v3 abrange processadores Intel Haswell e AMD Excavator, incluindo AVX/AVX2, BMI2 e outras instruções modernas. Já o x86_64-v4 adiciona suporte para AVX-512, uma tecnologia presente em CPUs mais recentes.

Desafios e críticas

Apesar de as instruções x86_64 v2/v3/v4 serem eficazes para otimizar a compilação de código de aplicativos, o impacto no kernel Linux parece ser muito menor. O código do kernel já inclui otimizações manuais em Assembly, e os compiladores já fazem boa parte do trabalho de otimização.

O engenheiro da Intel, Dave Hansen, levantou várias questões sobre a real utilidade dessas opções para os usuários finais, apontando que muitos usuários poderiam ficar confusos com essas configurações. Ele também destacou que o uso do parâmetro “-march” pode gerar binários que não funcionam em CPUs mais antigas, o que seria prejudicial.

Por outro lado, o engenheiro da AMD, Borislav Petkov, criticou o patch, afirmando que propostas semelhantes já surgiram antes, mas não trouxeram benefícios significativos ao código do kernel. Ele também destacou que as otimizações específicas de microarquitetura não apresentam impacto relevante na geração de código do kernel, já que o compilador realiza as principais otimizações necessárias.

Futuro incerto

Até o momento, parece que o patch não conta com suporte suficiente dos desenvolvedores upstream para ser incorporado ao kernel principal. A comunidade sugere que as variáveis de ambiente KCFLAGS/KCPPFLAGS já permitem a configuração de opções como “-march=x86-64-v4”, oferecendo o mesmo impacto sem a necessidade de complexidade adicional no Kconfig.

Acesse a versão completa
Sair da versão mobile