Desde o ano passado, ao construir o kernel do Linux usando o compilador Clang do LLVM, foi possível habilitar otimizações de tempo de link (LTO) para a compilação do kernel. Construir o kernel do Linux com o GCC carecia de suporte LTO, enquanto uma série de patches postada hoje é a mais recente tentativa de fazer isso acontecer.

Desde que foi mesclado no Linux 5.16, o suporte Clang LTO continuou no kernel Linux não apenas em nome do desempenho, mas também era necessário para suporte CFI baseado em Clang com o kernel.

Voltando uma década e muito antes de Clang poder construir o kernel Linux principal, havia patches GCC LTO para o kernel Linux, mas no final nunca foram mesclados. Linus Torvalds também expressou na época que não estava convencido de fazer LTO no kernel. Mas agora que nos aproximamos do final de 2022, há uma nova tentativa de suporte GCC LTO para o kernel.

Jiri Slaby da SUSE enviou esta série de patches de suporte GCC LTO como uma”primeira chamada para comentários”e é baseada em parte em patches anteriores de Andi Kleen, bem como no trabalho do colega engenheiro da SUSE, Martin Liska.

Embora as otimizações de tempo de link do compilador em geral sejam benéfico para o desempenho devido à capacidade de fazer otimizações ao levar em consideração todo o programa/base de código no estágio de vinculação, no caso do GCC LTO’ing do kernel do Linux, pelo menos com os últimos testes realizados pelo kernel desenvolvedores não conseguiram registrar muita diferença.

Além das diferenças de desempenho insignificantes em seus testes, eles também descobriram que o kernel do LTO é maior devido a mais ocorrências de inlining.

De qualquer forma, para os interessados ​​nesses patches mais recentes para LTO do kernel com o compilador GCC, eles podem ser encontrados em lista de discussão do kernel.

Categories: IT Info