A Red Hat investe em uma nova ferramenta chamada “eu-stacktrace”. Ela serve para criação de perfil sem os chamados “frame pointers”. esses frames pointers ajudam no processo de depuração/criação de perfil de pacotes em distribuições como o Fedora. O Ubuntu 24.04 LTS também habilitou o recurso para melhor depuração/criação de perfil. Então, com o objetivo de fazer o melhor dos dois mundos, acontece que a Red Hat vem desenvolvendo o eu-stracktrace como um novo meio de criação de perfil sem depender de ponteiros de quadro.
Serhei Makarov, da Red Hat, anunciou um trabalho em perfis de binários em todo o sistema sem ponteiros de quadro. A ferramenta experimental eu-stracktrace conta com as bibliotecas de desbobinamento do kit de ferramentas elfutils para oferecer suporte a um perfilador de amostragem para desenrolar dados de amostra de ponteiro de quadro sem pilha.
Makarov escreveu no blog da Red Hat:
“A versão protótipo do eu-stacktrace consiste em uma ferramenta de linha de comando implementada em uma ramificação do repositório de código fonte elfutils e um conjunto de patches para o criador de perfil Sysprof.
…
Para dar uma ideia inicial da sobrecarga da CPU do desdobramento do eu-stacktrace em comparação com o modo de operação padrão do Sysprof, usei o Sysprof com e sem eu-stacktrace para traçar o perfil de um sistema que estava executando o benchmark “matrix” stress-ng, invocado com stress-ng –matrix 0 -t 30s. Em um sistema que foi levemente carregado, o uso do Sysprof com o perfil de ponteiro de quadro padrão resultou em 0,09% das amostras provenientes do processo de criação de perfil sysprof-cli, enquanto o perfil com eu-stacktrace resultou em 1,18% das amostras provenientes de sysprof-cli e eu-stacktrace.
A sobrecarga do desenrolador elfutils escala com o número de processos distintos para os quais eh_frame dados precisam ser processados, em vez de com o número de amostras. Depois de lançar vários aplicativos de desktop e executar novamente o benchmark, a sobrecarga de criação de perfil subiu para 1,39% do total de amostras.
De acordo com as discussões do projeto Fedora em torno do período de tempo os ponteiros estavam sendo reativados nas principais distribuições, a lentidão devido aos ponteiros de quadro é relatada para cair dentro do intervalo de 0… 2%. Desacelerações mais extremas têm sido observadas para programas específicos, como o interpretador Python, mas não são onipresentes.
É importante notar que, ao contrário da sobrecarga devido à criação de perfil, a lentidão devido a ponteiros de quadro ocorre independentemente de um determinado sistema estar sendo perfilado ou precisar ser perfilado.
Assim, aproximadamente 1% de sobrecarga com eu-stacktrace apenas durante a criação de perfis é uma compensação razoável sobre 0… 2% de sobrecarga para inclusão de ponteiro de quadro em todos os sistemas, o tempo todo.
A sobrecarga poderia ser ainda mais reduzida tornando o eu-stacktrace acessível por meio de uma API de biblioteca em vez de um fifo, ao custo de exigir modificações mais complexas nas ferramentas de criação de perfil que o usam.”
Red Hat investe em nova ferramenta
O trabalho eu-stracktrace parece muito interessante para, talvez, no futuro, permitir que as distribuições Linux voltem a omitir ponteiros de quadro como uma otimização de desempenho do compilador. No momento, embora o eu-stracktrace permaneça experimental, integre-se com mais ferramentas de criação de perfil além do Sysprof, e outras melhorias.
Aqueles que quiserem saber mais podem fazê-lo através do blog do Red Hat Developer. O código eu-stracktrace está atualmente hospedado através do ramo eu-stracktrace de elfutils.