Slide 1

Slide 1 text

Wprowadzenie do DTrace Tomasz Torcz Bydgoszcz 6.06.2009 Massagetherapyfoundation, http://www.flickr.com/photos/8206128@N06/512560597/

Slide 2

Slide 2 text

Plan akcji ● *ja* ● czym właściwie jest DTrace ● jak może się przydać ● hands-on ● SystemTap

Slide 3

Slide 3 text

Dynamic Tracing ● systemowa komisja śledcza ● ( ) ★ ★ ★ ★ ★ Euro NCAP ● język D ● histogramy, agregacje ● Solaris (styczeń 2005), FreeBSD, Mac OS X

Slide 4

Slide 4 text

Co można śledzić ● sąsiada ● wywołania systemowe ● funkcje jądra i sterowników ● wywołania I/O ● żonę sąsiada ● blokady

Slide 5

Slide 5 text

Prezentacja dowodów ● podliczenia ● agregacje ● histogramy ● back trace

Slide 6

Slide 6 text

Jak ● koszernie #! /usr/sbin/dtrace -s syscall:::entry /pid == 1000/ { @c[probefunc] = count(); } ● perliście dtrace -n 'syscall:::entry/pid==1000/{@c[probename]=count();}'

Slide 7

Slide 7 text

Przez granicę syscalli

Slide 8

Slide 8 text

Informacja z aplikacji ● USDT ● coś mądrego o transakcjach (bazy danych) ● PHP, Ruby, Python ● Xen

Slide 9

Slide 9 text

vIH legh ● choQ gnochwI' ● (★★★★★) DivI' NCAP ● Hol D ● ngoqDe', chel ● Hov (wen 2005), FreeBSD, naHnagh OS X

Slide 10

Slide 10 text

vIH legh

Slide 11

Slide 11 text

#pragma D option destructive BEGIN { self->interested =0; } proc:::exec-success /(execname =="rm") && (self->interested == 0) && (dirname(curpsinfo->pr_psargs) != " { self->interested = 1 ; printf("Someone is trying to delete %s\n",dirname(curpsinfo->pr_psargs +3)); printf("%s %d",dirname(curpsinfo->pr_psargs+3),timestamp); printf("Snapshotting %s %d",dirname(curpsinfo->pr_psargs+3),timestamp); system("/usr/sbin/zfs snapshot rpool%s@%d",dirname(curpsinfo->pr_psargs+3),times stop(); system("prun %d", pid); }

Slide 12

Slide 12 text

... ● PowerTop ● tcpdump ● usbmon ● blktrace ● bootchart – any program chart

Slide 13

Slide 13 text

Drób arktyczny ● First rule of … ● Second rule of … ● http://www.crisp.demon.co.uk/blog/ ● kranik ● ½ roku

Slide 14

Slide 14 text

Dziękuję za uwagę.