Dtrace

Propaganda
Coluna do Alexandre
COLUNA
Dtrace
Uma breve apresentação do Dtrace, com alguns
exemplos do que ele permite fazer com facilidade.
S
olucionar problemas (o famoso troubleshooting)
em sistemas operacionais é sempre um dos serviços mais importantes e difíceis praticados hoje
em dia por todos os administradores. Talvez mais complexo do que isso é a atividade de localizar gargalos de
desempenho no sistema. Não importa se isso ocorre no
Linux, no FreeBSD, no OpenSolaris ou qualquer outro
sistema, pois em todos eles isso será muito complicado.
No caso do OpenSolaris, o sistema possui as ferramentas básicas para localização de problemas de desempenho (vmstat, sar, iostat, mpstat, truss etc.), entretanto,
estas apenas apontam, quando bem utilizadas, para a
região causadora dos transtornos (CPU, memória ou
I/O), mas não trazem o que realmente os administradores precisam saber: quais processos estão causando
o problema? É aí que entra o Dtrace.
Não tenho qualquer intenção de ensinar Dtrace nesta
coluna (até porque um dos artigos de OpenSolaris que
ainda vou escrever é sobre esse assunto), porém, muitos
me perguntam o que é o Dtrace. Simples: um conjunto
enorme de sensores (chamados de probes pela Sun e cujo
número ultrapassa facilmente os 40.000) espalhados pelo
kernel do OpenSolaris e que registram qualquer ocorrência
no sistema operacional. Para aprender Dtrace, é necessário
saber um pouco como funciona o sistema operacional por
dentro e ainda ter noções mínimas da linguagem utilizada
para escrever seus scripts, a linguagem D.
É claro que é muito mais interessante testar o Dtrace
para saber um pouco melhor como ele funciona. Em
vez de ensinar aqui a fazer scripts, segue uma pequena
lista de scripts de apenas uma linha prontos para usar:
Listar novos processos com seus respectivos argumentos:
dtrace -n ‘proc:::exec-success { trace(curpsinfo
->pr_psargs); }’
Q
uais são os arquivos abertos pelos processos:
18
dtrace -n ‘syscall::open*:entry { printf(“%s
%s”,execname,copyinstr(arg0)); }’
N
úmero de chamadas de sistema (system calls) realizadas por cada programa:
dtrace -n ‘syscall:::entry { @num[execname]
= count(); }’
N
úmero de chamadas de sistema (system calls) realizadas por cada processo:
dtrace -n ‘syscall:::entry { @nt by
process,num[pid,execname] = count(); }’
N
úmero de bytes lidos por cada processo:
dtrace -n ‘sysinfo:::readch { @bytes[execname]
= sum(arg0); }’
Quantidade de i/o transferida do disco ou para o disco
em cada processo:
dtrace -n ‘io:::start { printf(“%d %s
%d”,pid,execname,args[0]->b_bcount); }’
N
úmero de interrupções da CPU:
dtrace -n ‘sdt:::interrupt-start { @num[cpu]
= count(); }’
É importante perceber que estes são scripts extremamente simples que ilustram de forma muito básica o poder que o Dtrace oferece aos administradores de sistemas
OpenSolaris. Se você ainda quiser, existem projetos do
Dtrace que o implementam em Linux, FreeBSD e Apple
Mac OS X. Agora é só sentar e começar a estudar. n
Alexandre Borges é Especialista Sênior em Solaris, OpenSolaris e Linux.
Trabalha com desenvolvimento, segurança, administração e performance
desses sistemas operacionais, atuando como instrutor e consultor. É pesquisador de novas tecnologias e assuntos relacionados ao kernel.
http://www.linuxmagazine.com.br
Download