SlideShare a Scribd company logo
DTrace „Totalna inwigilacja”




Marcin Kula
Agenda

   Wstęp
   Wprowadzenie do DTrace
   Mała przerwa
   Ćwiczenia laboratoryjne
Kim jestem ?

   Absolwet Wydziału Elektrycznego PW
   Administrator Systemów Linux
   Moje ulubione OS
    ●   Centos
    ●   FreeBSD
    ●   Solaris
Wybrane funkcjonalności

   Solaris         FreeBSD         Linux
    ●   DTrace       ●   DTrace       ●   SystemTap
    ●   ZFS          ●   ZFS          ●   Brtfs
    ●   Zones        ●   Jails        ●   LXC
    ●   ...          ●   ...          ●   ...
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
Jak zbadać ...

                    Przykład Kiedyś
     Języki         Java, PHP    debuggers

Pliki 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
Jak zbadać ...

                    Przykład Kiedyś               DTrace
     Języki         Java, PHP    debuggers         Tak

Pliki 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)
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
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); }
Dostawcy

   fbt           pid
   fsinfo        profile
   io
                  sched
                  syscall
   lockstat
                  sysinfo / vminfo
   mib
                  ...
   proc
                             # dtrace -l
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);
                     }
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"); }
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
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
   ...
Free your mind
When to use DTrace
System monitoring


   Probing kernel subsystems
    ●   file systems
    ●   networks
    ●   zones
    ●   etc.
   Collecting information from whole system
    ●   DExplorer tool
   Tuning system and applications
When to use DTrace
Web-development


   Server-side          Tools
    ●   Ruby              ●   Apache
    ●   Java              ●   Glassfish
    ●   PHP               ●   MySQL
    ●   Groovy            ●   PostgreSQL
    ●   Perl
    ●   Python
   Client-side
    ●   Java-script
When to use DTrace
Software development


   Debugging
   Profiling
    ●   Memory leaks
    ●   Lost CPU cycles
    ●   Function calls
    ●   etc.
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
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
Ćwiczenia
laboratoryjne
Pytania




          ?
Dziękuje


Marcin Kula

More Related Content

What's hot

What is Linux?
What is Linux?What is Linux?
What is Linux?
Piotr Perzyna
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
Future Processing
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Semihalf
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
Semihalf
 
Python io
Python ioPython io
Python io
robert_zaremba
 
201105 OWASP Fuzzing interpretera PHP
201105 OWASP Fuzzing interpretera PHP201105 OWASP Fuzzing interpretera PHP
201105 OWASP Fuzzing interpretera PHPLogicaltrust pl
 
MCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMarcin Daczkowski
 

What's hot (8)

What is Linux?
What is Linux?What is Linux?
What is Linux?
 
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
[FDD 2016] Krzysztof Bartnicki - Wszechświat kontra programista systemów wbud...
 
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
Jak stworzyć wysokowydajny i skalowalny stos sieciowy dla 72 rdzeni CPU?
 
Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
Python io
Python ioPython io
Python io
 
201105 OWASP Fuzzing interpretera PHP
201105 OWASP Fuzzing interpretera PHP201105 OWASP Fuzzing interpretera PHP
201105 OWASP Fuzzing interpretera PHP
 
MCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - DiagnosticsMCTS 70-536 Study Group - Diagnostics
MCTS 70-536 Study Group - Diagnostics
 

Viewers also liked

Agriculture in united kingdom.
Agriculture in united kingdom.Agriculture in united kingdom.
Agriculture in united kingdom.traververa
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)
Christopher Haupt
 
Podemos1
Podemos1Podemos1
Podemos1
traververa
 
Agriculture in australia
Agriculture in australiaAgriculture in australia
Agriculture in australiatraververa
 
Ppp Lettuce2
Ppp Lettuce2Ppp Lettuce2
Ppp Lettuce2Mohandis
 
Edge new media and content 2013 v02.03 to post
Edge new media and content 2013 v02.03 to postEdge new media and content 2013 v02.03 to post
Edge new media and content 2013 v02.03 to postDerrick Chiang
 
Seven centro deportivo montijo welington fabricio sánchez huebl
Seven centro deportivo montijo welington fabricio sánchez hueblSeven centro deportivo montijo welington fabricio sánchez huebl
Seven centro deportivo montijo welington fabricio sánchez huebltraververa
 
Arabic Ict4 Ie Education Conf
Arabic Ict4 Ie Education ConfArabic Ict4 Ie Education Conf
Arabic Ict4 Ie Education ConfAhmed Hussein
 
Mission to Mongolia
Mission to MongoliaMission to Mongolia
Mission to Mongolia
Alex Lim
 
Cartoline Serie Italia Sec Xxi
Cartoline Serie Italia Sec XxiCartoline Serie Italia Sec Xxi
Cartoline Serie Italia Sec Xxi
Luigi Vimercati
 
Agriculture in united kingdom.
Agriculture in united kingdom.Agriculture in united kingdom.
Agriculture in united kingdom.traververa
 
KoLoReAk
KoLoReAkKoLoReAk
KoLoReAk
amunozlhi2008
 

Viewers also liked (13)

Agriculture in united kingdom.
Agriculture in united kingdom.Agriculture in united kingdom.
Agriculture in united kingdom.
 
Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)Metaprogramming Primer (Part 1)
Metaprogramming Primer (Part 1)
 
Podemos1
Podemos1Podemos1
Podemos1
 
Agriculture in australia
Agriculture in australiaAgriculture in australia
Agriculture in australia
 
Ppp Lettuce2
Ppp Lettuce2Ppp Lettuce2
Ppp Lettuce2
 
Edge new media and content 2013 v02.03 to post
Edge new media and content 2013 v02.03 to postEdge new media and content 2013 v02.03 to post
Edge new media and content 2013 v02.03 to post
 
Seven centro deportivo montijo welington fabricio sánchez huebl
Seven centro deportivo montijo welington fabricio sánchez hueblSeven centro deportivo montijo welington fabricio sánchez huebl
Seven centro deportivo montijo welington fabricio sánchez huebl
 
Arabic Ict4 Ie Education Conf
Arabic Ict4 Ie Education ConfArabic Ict4 Ie Education Conf
Arabic Ict4 Ie Education Conf
 
Olalla
OlallaOlalla
Olalla
 
Mission to Mongolia
Mission to MongoliaMission to Mongolia
Mission to Mongolia
 
Cartoline Serie Italia Sec Xxi
Cartoline Serie Italia Sec XxiCartoline Serie Italia Sec Xxi
Cartoline Serie Italia Sec Xxi
 
Agriculture in united kingdom.
Agriculture in united kingdom.Agriculture in united kingdom.
Agriculture in united kingdom.
 
KoLoReAk
KoLoReAkKoLoReAk
KoLoReAk
 

Similar to DTrace

PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
Marcin Kurzyna
 
GlusterFS
GlusterFSGlusterFS
Gluster FS
Gluster FSGluster FS
Gluster FS
3camp
 
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Leszek Mi?
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PROIDEA
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
Redge Technologies
 
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PROIDEA
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
Leszek Mi?
 
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
PROIDEA
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
PROIDEA
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
Kamil Grabowski
 
Przekierowanie strumienia danych
Przekierowanie strumienia danychPrzekierowanie strumienia danych
Przekierowanie strumienia danychJacek Tomczak
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
Semihalf
 
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek MiśPLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
PROIDEA
 
Prezentacja Jabber
Prezentacja JabberPrezentacja Jabber
Prezentacja Jabber
bm9ib2r5
 
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domenPLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
PROIDEA
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
allegro.tech
 
Podążając śladami użytkownika Windows – elementy informatyki śledczej
Podążając śladami użytkownika Windows –elementy informatyki śledczejPodążając śladami użytkownika Windows –elementy informatyki śledczej
Podążając śladami użytkownika Windows – elementy informatyki śledczej
Krzysztof Binkowski
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
Semihalf
 

Similar to DTrace (20)

PHP@Docker - w produkcji
PHP@Docker - w produkcjiPHP@Docker - w produkcji
PHP@Docker - w produkcji
 
GlusterFS
GlusterFSGlusterFS
GlusterFS
 
Gluster FS
Gluster FSGluster FS
Gluster FS
 
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
Exatel Security Days 2017 - Niech dane pozostaną z Tobą! Sieciowe techniki ek...
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
PLNOG22 - Leszek Miś - Symulacje zdarzeń i anomalii sieciowych jako proaktywn...
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.comNGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
NGSec 2016 - Ile warstw, tyle szans. - Leszek Miś@Defensive-Security.com
 
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
4Developers 2015: Orleans - aplikacje, które skalują i dystrybuują się same -...
 
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...infraxstructure: Robert Mroczkowski  "Maszyny się uczą - admińskie rozmówki p...
infraxstructure: Robert Mroczkowski "Maszyny się uczą - admińskie rozmówki p...
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Przekierowanie strumienia danych
Przekierowanie strumienia danychPrzekierowanie strumienia danych
Przekierowanie strumienia danych
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek MiśPLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
PLNOG16: Yoyo ! To my, pakiety ! Złap nas jeśli potrafisz, Leszek Miś
 
Prezentacja Jabber
Prezentacja JabberPrezentacja Jabber
Prezentacja Jabber
 
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domenPLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
PLNOG 21: Paweł Foremski - DNS_intelligence:_czas_życia_nowych_domen
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
Podążając śladami użytkownika Windows – elementy informatyki śledczej
Podążając śladami użytkownika Windows –elementy informatyki śledczejPodążając śladami użytkownika Windows –elementy informatyki śledczej
Podążając śladami użytkownika Windows – elementy informatyki śledczej
 
Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 

DTrace

  • 2. Agenda  Wstęp  Wprowadzenie do DTrace  Mała przerwa  Ćwiczenia laboratoryjne
  • 3. Kim jestem ?  Absolwet Wydziału Elektrycznego PW  Administrator Systemów Linux  Moje ulubione OS ● Centos ● FreeBSD ● Solaris
  • 4. Wybrane funkcjonalności  Solaris  FreeBSD  Linux ● DTrace ● DTrace ● SystemTap ● ZFS ● ZFS ● Brtfs ● Zones ● Jails ● LXC ● ... ● ... ● ...
  • 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. Jak zbadać ... Przykład Kiedyś Języki Java, PHP debuggers Pliki 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. Jak zbadać ... Przykład Kiedyś DTrace Języki Java, PHP debuggers Tak Pliki 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. 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. 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. Dostawcy  fbt  pid  fsinfo  profile  io  sched  syscall  lockstat  sysinfo / vminfo  mib  ...  proc # dtrace -l
  • 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. 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. 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. 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  ...
  • 16. When to use DTrace System monitoring  Probing kernel subsystems ● file systems ● networks ● zones ● etc.  Collecting information from whole system ● DExplorer tool  Tuning system and applications
  • 17. When to use DTrace Web-development  Server-side  Tools ● Ruby ● Apache ● Java ● Glassfish ● PHP ● MySQL ● Groovy ● PostgreSQL ● Perl ● Python  Client-side ● Java-script
  • 18. When to use DTrace Software development  Debugging  Profiling ● Memory leaks ● Lost CPU cycles ● Function calls ● etc.
  • 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. 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
  • 22. Pytania ?