As emocionantes aventuras de um sysadmin linux na procura pelo uptime perfeito!

Ftrace – tracing de funções do kernel Linux

Posted: novembro 10th, 2010 | Author: coredump | Filed under: Linux e Open Source, Programação | Tags: , , ,

Saiu um artigo sobre o assunto na LWN a alguns meses atrás, o function tracer do Kernel tá uma coisa linda. Basicamente a ferramenta é colocada diretamente no kernel para fazer tracing do que está acontecendo no kernel.

Eu tenho por exatamente usado para estudar internals. Por exemplo:

[tracing]# cat trace
          <idle>-0     [000] 1726568.996435: hrtimer_get_next_event <-get_next_timer_interrupt
          <idle>-0     [000] 1726568.996436: _spin_lock_irqsave <-hrtimer_get_next_event

Essa saída aí em cima mostra a thread idle (swapper), PID 0, rodando na CPU 0, timestamp de quando a função foi executada e as funções que estão rodando. Existem várias configurações que podem ser feitas, como por exemplo adicionar informações de latência no tracing. Isso faz com que além dos timestamps sejam colocadas as informações de quanto tempo cada função demorou para executar.

Eu escrevi um scriptizinho em bash para facilitar minha vida ao ligar e desligar o tracing. Na minha máquina funcionou beleza (ainda tem bugs, mas funciona), mas lembre-se que alguns tracers (como o function) tem de ser habilitados no Kernel e pelo menos no kernel do Debian não estavam. Como eu já estava recompilando o 2.6.36 para fazer alguns testes, aproveitei para habilitar.

O Perfikt é uma ferramenta  GTK que usa dados do Valgrind e aparentemente tem suporte para a interface de tracing do kernel, fornecendo uma interface gráfica bem simpática para a parada.

Mais sobre o assunto (em inglês):

intel

No Comments »