FERRAMENTAS LINUX: A Red Hat Desenvolve o eu-stracktrace para Profiling sem os Frame Pointers

terça-feira, 11 de junho de 2024

A Red Hat Desenvolve o eu-stracktrace para Profiling sem os Frame Pointers

 


No ano passado, vimos o Fedora parar de omitir o frame pointer para ajudar na depuração/profiling dos pacotes do Fedora, e o Ubuntu 24.04 LTS também habilitou os frame pointers para uma melhor depuração/profiling. 

Entre outras distribuições, há as conhecidas implicações de desempenho de não mais omitir o frame pointer. 

Mas agora, com o objetivo de fazer o melhor dos dois mundos, a Red Hat tem desenvolvido o eu-stracktrace como um novo meio de profiling sem depender dos frame pointers.

Serhei Makarov, da Red Hat, anunciou hoje seu trabalho sobre perfis de sistema de binários sem os frame pointers. 




A ferramenta experimental eu-stracktrace depende das bibliotecas de unwinding do kit de ferramentas elfutils para suportar um profiler de amostragem para dados de amostra de pilha sem frame pointers.


Anúncio de Makarov

Makarov escreveu hoje no blog da Red Hat:

"A versão protótipo do eu-stacktrace consiste em uma ferramenta de linha de comando implementada em um branch do repositório de origem do elfutils e um conjunto de patches para o profiler Sysprof.

Para dar uma ideia inicial da sobrecarga de CPU do unwinding do eu-stacktrace em comparação com o modo de operação padrão do Sysprof, usei o Sysprof com e sem o eu-stacktrace para perfilar um sistema que estava executando o benchmark 'matrix' do stress-ng, invocado com stress-ng --matrix 0 -t 30s. Em um sistema que estava levemente carregado, usar o Sysprof com o profiling padrão de frame pointer resultou em 0,09% das amostras vindo do processo sysprof-cli, enquanto o profiling com eu-stacktrace resultou em 1,18% das amostras vindo do sysprof-cli e eu-stacktrace.

A sobrecarga do unwinder do elfutils escala com o número de processos distintos para os quais os dados eh_frame precisam ser processados, em vez de com o número de amostras. Após iniciar vários aplicativos de desktop e executar novamente o benchmark, a sobrecarga do profiling subiu para 1,39% do total de amostras.

De acordo com as discussões do projeto Fedora na época em que os frame pointers estavam sendo reativados nas principais distribuições, a desaceleração devido aos frame pointers é relatada como caindo na faixa de 0…2%. Desacelerações mais extremas foram observadas para programas específicos, como o interpretador Python, mas não são ubíquas.

É importante notar que, ao contrário da sobrecarga devido ao profiling, a desaceleração devido aos frame pointers ocorre independentemente de um sistema específico estar sendo perfilado ou precisar ser perfilado no futuro. Assim, aproximadamente 1% de sobrecarga com o eu-stacktrace apenas durante o profiling é uma troca razoável em relação a 0…2% de sobrecarga para a inclusão de frame pointers em todos os sistemas, o tempo todo. A sobrecarga poderia ser ainda mais reduzida tornando o eu-stacktrace acessível via uma API de biblioteca em vez de um fifo, ao custo de requerer modificações mais complexas nas ferramentas de profiling que o utilizam."


O trabalho com o eu-stracktrace é muito interessante e pode, no futuro, permitir que as distribuições Linux voltem a omitir os frame pointers como uma otimização de desempenho do compilador. No momento, no entanto, o eu-stracktrace permanece experimental, precisando ser integrado com mais ferramentas de profiling além do Sysprof e outras melhorias.



Para aqueles que desejam aprender mais, podem fazê-lo através do blog do desenvolvedor da Red Hat. O código do eu-stracktrace está atualmente hospedado no branch eu-stracktrace do elfutils.




Fonte
Até a próxima !!

Nenhum comentário:

Postar um comentário