Categorias
Kernel

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.

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.

Por Emanuel Negromonte

Fundador do SempreUPdate. Acredita no poder do trabalho colaborativo, no GNU/Linux, Software livre e código aberto. É possível tornar tudo mais simples quando trabalhamos juntos, e tudo mais difícil quando nos separamos.

Sair da versão mobile