Construindo Perf com Babeltrace (para conversão de Perf em CTF)

Estou tentando usar o TraceCompass para investigar melhor o rastreamento do meu sistema. Para isso, você precisa do formato CTF e há duas maneiras possíveis de obtê-lo no Linux, a seguir:

Usando LTTng para rastrear e usando o formato CTF a partir desseUsando 'perf data convert' para criar dados CTF a partir de perf.data

Eu tenho tentado usar a segunda opção, pois a primeira exige a instalação de pontos de rastreamento e o que obtive do perf é simplesmente o suficiente para mim. Então, supondo que eu tenha meus perf.data disponíveis, Aplicando

perf data convert --to-ctf=./ctf 

resultou em:Nenhum suporte de versão compilado. Analisando os recursos online do lwn, descobri que essa conversão não está disponível sem o babeltrace. Para instalar o babeltrace, tentei os seguintes métodos:

1º:

sudo apt-get install libbabeltrace-ctf-dev libbabeltrace-ctf1 libbabeltrace1 libbabeltrace-dev python3-babeltrace

que não resolveu completamente o problema de:Nenhum suporte de versão compilado.

Segundo

Eu tentei construir o babeltrace a partir da fonte. Eu cavei e encontrei todas as suas dependências de antemão:

sudo apt-get install dh-autoreconf bison libdw-dev libelf-dev flex uuid-dev libpopt-dev
git clone git://git.efficios.com/babeltrace.git
cd babeltrace
./bootstrap
sudo ./configure --prefix=/opt/libbabeltrace LDFLAGS=-L/usr/local/lib
sudo make -j4 prefix=/opt/libbabeltrace
sudo make install prefix=/opt/libbabeltrace

Então tentei,

LD_LIBRARY_PATH=/opt/libbabeltrace/lib perf data convert --to-ctf=./ctf

O que também resultou no erro:Nenhum suporte de versão compilado.

Então, no final das contas, acho que agora o problema está ligando o babeltrace ao perf. Embora eu ainda não saiba compilar o perf com o suporte ao babeltrace. Devo construir tudo a partir de módulos do kernel (fornecidos abaixo) ou existe uma solução alternativa para recompilar ou adaptar meu perf atual com o suporte ao babeltrace?

Observe que o perf / core_ctf_convert está implementado neste módulo do kernel:git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git

Observe também que estou usando o Raspbian Jessie em um Raspberry Pi 3.

A orientação é apreciada com antecedência.

Felicidades,

Referências:

https://lwn.net/Articles/634333/

http://tracingsummit.org/w/images/9/98/TracingSummit2014-Perf-CTF.pdf

https://patchwork.kernel.org/patch/5883821/

https://patchwork.kernel.org/patch/5858601/

EDIT: RESOLVED Ok, isso foi complicado. Primeiro, todos os créditos vão para jolsa do kernel.org, que com suas sugestões me fez descobrir isso.

Depois que o libbabeltrace é construído a partir da fonte, o seguinte é feito:

Algumas dependências instaladas (algumas podem não ser necessárias, estas são as que eu instalei para atender à maioria dos recursos de rastreamento disponíveis para o Raspbian. Infelizmente, o bfd não está disponível, disponível)

sudo apt-get install libnewt-dev binutils-arm-none-eabi libcrypto++-dev libunwind-dev systemtap-sdt-dev libssl-dev libperl-dev libiberty-dev

Então,

sudo git clone git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git
cd linux/tools/perf
sudo git checkout perf/core
sudo LIBBABELTRACE=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/ make
sudo LIBBABELTRACE=1 LIBBABELTRACE_DIR=/opt/libbabeltrace/ make install

Após a conclusão da instalação, o perf é executado com o LD_LIBRARY_PATH env. isto é

No diretório em que o perf.data está localizado, chame o seguinte, assumindo que o perf recém-construído esteja localizado em / home / user / linux / tools / perf:

sudo LD_LIBRARY_PATH=/opt/libbabeltrace/lib ./home/user/linux/tools/perf/perf data convert --to-ctf=./ctf

E então, o CTF poderia ser importado para o TraceCompass :)

questionAnswers(1)

yourAnswerToTheQuestion