Os desenvolvedores do Fedora estão pensando em adicionar uma opção aos sinalizadores de compilação padrão para o Fedora 37 que pode melhorar o perfil de desempenho e a capacidade de depuração dos pacotes gerados. Porém, isso pode trazer possíveis implicações de sobrecarga de desempenho – possivelmente alguns por cento com base em números anteriores. Portanto, a distribuição Fedora Linux 37 faz mudanças para melhorar depuração.
A proposta de mudança que está sendo avaliada é adicionar o “-fno-omit-frame-pointer” aos sinalizadores de compilação padrão como uma mudança em todo o sistema. Essa opção do compilador garantirá para programas C/C++ que o ponteiro de quadro esteja sempre disponível para que as ferramentas de depuração/criação de perfil possam usá-lo para fornecer dados de desempenho precisos.
Eles esperam que isso leve a melhorias de desempenho nas bibliotecas principais e executáveis, mas ao não omitir o ponteiro de quadro, há possíveis implicações de desempenho. O comportamento padrão de não usar o ponteiro de quadro pode salvar três instruções por função e pode tratar o registrador de ponteiro de quadro/base RBP como um registrador de propósito geral a ser usado para outra coisa.
Os benchmarks internos do Meta/Facebook descobriram que a construção com “-fno-omit-frame-pointer” não afetou dois de seus aplicativos com maior desempenho. Mas dados em 2017 do SUSE com um kernel Linux 4.18 mostraram que houve regressões de 5 a 10% em alguns benchmarks.
Fedora 37 faz mudanças para melhorar depuração
Os desenvolvedores do Fedora reconhecem o risco dessa mudança regredindo algumas cargas de trabalho, para as quais a proposta de mudança sugere que pacotes individuais podem optar por não receber essa mudança de sinalizador do compilador se acharem seu desempenho significativamente prejudicado. A proposta de mudança para o Fedora 37 está sendo sugerida pelos engenheiros do Facebook/Meta.
Os detalhes desta proposta de mudança podem ser encontrados no Fedora Wiki.
Na lista de discussão do Fedora já há muita discussão sobre este comportamento “-fno-omit-frame-pointer” proposto por padrão e o possível impacto negativo que poderia ter no desempenho. Ainda não há testes que mostrem exatamente essa redução de desempenho.
Será interessante ver o que é decidido por esta mudança proposta para o Fedora 37, dado o possível impacto no desempenho dos usuários finais em nome de uma melhor experiência de perfil e depuração de desempenho.