Nos últimos meses houve muita discussão sobre uma proposta para adicionar “-fno-omit-frame-pointer” como um sinalizador de compilador padrão para o Fedora Linux que melhoraria a criação de perfil/depuração, mas com possíveis implicações de desempenho que podem variar com base no aplicativo/carga de trabalho.
Há pouco mais de um mês, o FESCo rejeitou essa mudança, eles votaram novamente hoje e decidiram, afinal, permitir que essa mudança acontecesse, mas garantir que os pacotes possam cancelar facilmente se encontrarem regressões de desempenho. Com o Fedora 40, eles também revisarão o assunto para determinar se os benefícios e custos de desempenho são justificados.
No Fedora Engineering and Steering Committee (FESCo) mais recente, eles votaram novamente sobre a alteração de adicionar -fno-omit-frame-pointer aos sinalizadores padrão do compilador ao compilar pacotes para o Fedora Linux.
A opção do compilador garante que um ponteiro de quadro esteja sempre disponível, mas ao omiti-lo atualmente, três instruções por função são salvas e o registro de ponteiro de base/quadro RBP pode ser usado como um registro de uso geral para outros propósitos. Esta opção ajuda na criação de perfil e depuração do software Fedora, mas com custos de desempenho variados.
Fedora permite sinalizador padrão do compilador para ajudar na depuração e criação de perfil
Existem alguns problemas de desempenho e, no passado, os engenheiros do SUSE o caracterizaram como possível na faixa de 5 a 10%, dependendo do software específico. Os engenheiros do Meta/Facebook estão ansiosos para promover essa mudança para o Fedora, enquanto alguns desenvolvedores do GNOME também gostariam de ver isso acontecer, pois a depuração/criação de perfil aprimorada é suficiente para justificar quaisquer custos de desempenho.
Para tornar a alteração mais fácil de engolir com a segunda rodada de votação, um novo botão foi adicionado para tornar mais fácil para os mantenedores de pacotes RPM optarem por não ter esse sinalizador de compilador, caso achem que o desempenho foi muito afetado negativamente.
Portanto, o resultado da reunião do FESCo de hoje foi:
CONCORDADO: APROVADO (+6,1,-1) Esta Alteração foi implementada para o Fedora Linux 38 e avaliamos se deve ser mantida pelo Fedora Linux 40. Esta Alteração deve ser implementada de uma maneira que os pacotes sejam capazes de descartar trivialmente mantendo os ponteiros do quadro durante a compilação para que os pacotes que recebem maiores impactos de desempenho possam ser facilmente revertidos.
Assim, a mudança pode avançar para o Fedora 38, previsto para abril. Será interessante ver como isso funciona na prática, bem como, curiosamente, ver quantos pacotes acabam desativando esse recurso e quanto dessa desativação é feito logo após o fato de qualquer reclamação de usuário e relatório de bug sobre o desempenho perdido.