DTrace

1,057 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,057
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

DTrace

  1. 1. DTrace „Totalna inwigilacja”Marcin Kula
  2. 2. Agenda Wstęp Wprowadzenie do DTrace Mała przerwa Ćwiczenia laboratoryjne
  3. 3. Kim jestem ? Absolwet Wydziału Elektrycznego PW Administrator Systemów Linux Moje ulubione OS ● Centos ● FreeBSD ● Solaris
  4. 4. Wybrane funkcjonalności Solaris  FreeBSD  Linux ● DTrace ● DTrace ● SystemTap ● ZFS ● ZFS ● Brtfs ● Zones ● Jails ● LXC ● ... ● ... ● ...
  5. 5. Jak zbadać ... Przykład Języki Java, PHP /usr/bin/*Pliki wykonywalne Biblioteki /usr/lib/* Syscall man -s2 ZFS,TCP Kernel disk data Sprzęt controller
  6. 6. Jak zbadać ... Przykład Kiedyś Języki Java, PHP debuggersPliki wykonywalne /usr/bin/* truss -ua.out /usr/lib/* apptrace, Biblioteki sotruss Syscall man -s2 truss Kernel ZFS,TCP mdb disk data kstat Sprzęt controller
  7. 7. Jak zbadać ... Przykład Kiedyś DTrace Języki Java, PHP debuggers TakPliki wykonywalne /usr/bin/* truss -ua.out Tak apptrace, Biblioteki /usr/lib/* sotruss Tak Syscall man -s2 truss Tak Kernel ZFS,TCP mdb Tak Sprzęt disk data kstat Nie controller (Pośrednio, tak)
  8. 8. DTrace Dynamiczna instrumentacja ● Nieaktywne sondy nie obniżają wydajności Ujednolicona instrumentacja ● Śledzenie jądra i aplikacja ● Śledzenie przejścia między warstwami Sondy z predykatami i akcjami Język „D” wysokiego poziomu ● Podobny do awk, C Agregacja danych
  9. 9. Blok instrukcji Sonda ● Dostawca – moduł DTrace jądra ● Moduł – nazwa modułu jądra lub biblioteki ● Funkcja – nazwa funkcji zawierającej sonde ● Nazwa – nazwa identyfikująca sonde Predykat – rodzaj wyrażenia warunkowego Akcja – zgrupowane intrukcje języka „D” syscall::openat:entry / pid == 123 / { trace(1); }
  10. 10. Dostawcy fbt  pid fsinfo  profile io  sched  syscall lockstat  sysinfo / vminfo mib  ... proc # dtrace -l
  11. 11. Dostawcy pid - probes for tracing any function in a user process ● entry : arg0, arg1, … are the values of the arguments ● return: arg1 holds the return value fbt -probes associated with most functions in the kernel ● entry : arg0,.. are the values of the arguments ● return: arg1 holds the return value fbt:::{ printf(“%s:%s:%sn”,probemod,probefunc,probename); }
  12. 12. Dostawcy syscall - probes associated with system call in the system ● entry : arg0 .. argn are the arguments to the system call. ● return: both arg0 and arg1 contain the return value ● A non-zero value in the errno indicates system call failure. syscall::open:entry { printf("%s %s", execname, copyinstr(arg0)); } io - probes related to disk input and output ● probes: start, done, wait-start, wait-done ● arg[0]: bufinfo_t *, arg[1]: devinfo_t *, arg[2]: fileinfo_t * io:::start { /* DEVICE, FILE, RW */ printf("%10s %58s %2sn", args[1]->dev_statname,args[2]->fi_pathname, args[0]->b_flags & B_READ ? "R" : "W"); }
  13. 13. Dostawcy sched - probes related to CPU scheduling ● on-cpu, off-cpu, enqueue,.. proc - probes pertaining to the following activities: ● process creation and termination ● LWP creation and termination proc:::exec-success ● executing new program images {trace(curpsinfo->pr_psargs);} ● sending and handling signals ● Ex. create, exec, exit, signal-send, signal-handle profile - probes associated with a time-based interrupt firing every fixed, specified time interval
  14. 14. Dostawcy sysinfo / vminfo ● kernel statistics classified by the name sys / vm mib - counters in the Solaris management information bases ip - probes for tracing both IPv4 and IPv6 protocols. lockstat ● allow to understand virtually any aspect of locking behavior ...
  15. 15. Free your mind
  16. 16. When to use DTraceSystem monitoring Probing kernel subsystems ● file systems ● networks ● zones ● etc. Collecting information from whole system ● DExplorer tool Tuning system and applications
  17. 17. When to use DTraceWeb-development Server-side  Tools ● Ruby ● Apache ● Java ● Glassfish ● PHP ● MySQL ● Groovy ● PostgreSQL ● Perl ● Python Client-side ● Java-script
  18. 18. When to use DTraceSoftware development Debugging Profiling ● Memory leaks ● Lost CPU cycles ● Function calls ● etc.
  19. 19. Złota myśl“It needs to borrow your brain to do the thinking” Brendan Gregg http://blogs.oracle.com/brendan/entry/unusual_disk_latency
  20. 20. Więcej informacji Solaris Dynamic Tracing Guide ● http://download.oracle.com/docs/cd/E19082-01/819-3620/ Wiki ● http://wikis.sun.com/display/DTrace/Documentation Blog twórców ● http://dtrace.org/blogs/ DTrace Tools ● http://www.brendangregg.com/dtrace.html
  21. 21. Ćwiczenialaboratoryjne
  22. 22. Pytania ?
  23. 23. DziękujeMarcin Kula

×