Distributed Tracing

All, Tools

Although my master thesis was in local tracing, e.g. Lttng and dtrace, there are very powerful tools called end-to-end tracers that basically work tracing a request from top to bottom in distributed systems. In other words, it allows to log information of distributed system.

The example in [3] is the wikipedia, but any major platform nowadays is distributed in several places and could potentially use this tool.

An example of end-to-end tracer is X-trace[1], which was developed by Rodrigo Fonseca, and presented at his PhD Thesis and it’s available in his github account [2].

Currently there are several tools, in this so called end-to-end tracers but also techniques and tools to complement this, e.g. Pivot tracing technique.

This is clearly a hot-topic and has received for attention from several companies, e.g. Google and others.

I will be posting more about end-to-end tracers soon.

[1] http://xtrace.sourceforge.net/

[2] https://github.com/rfonseca

 

 

 

O que é Tracing?

All, Tools

Introducao basica – o que eh tracing?

Gravacao de eventos .

Nao eh logging, pois esta ligado a eventos em baixo nivel e muito mais rapidos nao sendo tambem profiling 

Pode ser no lado em eventos de usuario e eventos do kernel.  A gravacao eh feita em runtime e portanto ha uma interferencia, que é chamada de overhead. O numero de eventos gravados tambem varia, ocorrendo por vezes perda de alguns eventos a depender da ferramenta de tracing.

     Basicamente o que deve ser feito?

Rodar o aplicativo, ligar o trace e fazer a analise.

Ferramentas

LTTNG

Eh um tracing dos eventos do kernel e dominio usuario com baixo overhead.

Eh possivel analisar apenas alguns eventos do kernel ou todos os eventos, assim como eh possivel fazer a analise de eventos padrao no kernel ou criar pontos de tracing no proprio codigo (aplicativo) para fazer a gravacao.

Para fazer a analise dos traces, eh necessaria a ferramenta de analise dos traces, que pode ser o BabelTrace, ou o TraceCompass. É desenvolvido pela EfficiOS.

Dtrace

É um framework para analises de performance e deteccao de erros que eh incluso por padrao em diversos sistemas operacionais, incluindo Solaris, Mac OS X and FreeBSD.

perf

É uma ferramenta para profiling para Linux 2.6+. Um interessante tutorial pode ser encontrado aqui: https://perf.wiki.kernel.org/index.php/Tutorial

strace

É uma ferramenta para debbuing e diagnostico Pode alterar sua aplicacao a medida que usa ptrace no kernel, tendo um overhead grande.

   ftrace

É um framework para tracing em Linux desenvolvido por Steven Rostedt e que foi incorporado ao kernel do Linux.