DTrace

DTrace  on Sun Microsystemsin luoma dynaaminen jäljityskehys reaaliaikaista ytimen ja sovellusten virheenkorjausta varten. DTrace luotiin alun perin Solarisille , minkä jälkeen se julkaistiin Common Development and Distribution License (CDDL) -lisenssillä ja siirrettiin useisiin Unix-tyyppisiin järjestelmiin.

DTracen avulla voidaan valvoa käynnissä olevan järjestelmän aktiivisten prosessien kulutetun muistin määrää, suoritinaikaa , tiedostojärjestelmiä ja verkkoresursseja. Voit myös saada tarkempia tietoja, kuten luettelon argumenteista, joilla kutakin funktiota kutsutaan, tai luettelon tiettyä tiedostoa käyttävistä prosesseista.

Jäljitysskriptit on kehitetty erikoiskielellä . Työkalu tukee vuorovaikutusta koodin kanssa, joka on luotu seuraavilla ohjelmointikielillä kirjoitetuille ohjelmille : C , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , Tcl , funktiokutsujen ja alkuperäisten kutsukontekstien tunnistamista. Useat Unix-ohjelmat tukevat DTracea, joka tarjoaa toimintojen ja järjestelmäkutsujen jäljittämisen, erityisesti erityisiä DTrace-palveluntarjoajia on kehitetty MySQL- , PostgreSQL- , Oracle Database- , Univa Grid Engine- ja Firefox -selaimelle .

Työkalua on turvallista käyttää elävässä ympäristössä: suorituskyky ei juuri heikkene testauksen aikana.

Skriptikieli

Jäljitysskriptit on kirjoitettu kielellä, joka on kehitetty erityisesti työkalua D varten C:n kaltaisella syntaksilla ja varustettu valmiilla jäljitykseen liittyvillä funktioilla ja muuttujilla [1] . D - ohjelmat ovat rakenteeltaan samanlaisia ​​kuin awk - ohjelmat ; ne sisältävät luettelon antureista ,  joita toiminnot vastaavat. Kun tietty ehto täyttyy, anturi laukeaa ja vastaava toimenpide suoritetaan. Ehto voi olla esimerkiksi tietyn tiedoston avaaminen, prosessin käynnistäminen tai tietyn koodirivin suorittaminen. Tietoa on mahdollista siirtää anturista toiseen.

Koska työkalu tarjoaa seurannan minimaalisella kululla, kymmeniä tuhansia antureita voi olla käynnissä samanaikaisesti, uusia antureita voidaan luoda dynaamisesti.

Käyttöesimerkkejä

DTrace-komentosarjat voidaan ajaa komentoriviltä käyttämällä yhtä tai useampaa anturia argumentteina. Esimerkkejä:

# Uudet prosessit argumenteilla, dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' # Prosessin avaamat tiedostot, dtrace -n 'syscall::open*:entry { printf ("%s %s",execname,copyinstr(arg0)); }' # Syscall count ohjelman mukaan, dtrace -n 'syscall:::entry { @num[execname] = count(); }' # Syscall count syscall, dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' # Syscall count prosessin mukaan, dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' # Levyn koko prosessin mukaan, dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' # sivua sivuttuna prosessin mukaan, dtrace -n 'vminfo:::pgpgin { @pg[execname] = summa(arg0); }'

Tuetut alustat

DTrace esiteltiin marraskuussa 2003, ja se julkaistiin virallisesti osana Solaris 10 -käyttöjärjestelmää tammikuussa 2005. Tuli OpenSolaris-projektin ensimmäinen komponentti, jonka lähdekoodi julkaistiin Common Development and Distribution License ( CDDL ) -lisenssillä.

Vuoden 2009 alussa DTrace siirrettiin FreeBSD :lle (versio 7.1).

Apple lisäsi tuen DTracelle Mac OS X 10.5 "Leopardissa", mukaan lukien Instruments -grafiikkaohjelma . Toisin kuin muissa alustoissa, Mac OS X:ssä on lippu ( P_LNOATTACH ), joka estää prosessien jäljityksen työkaluilla, kuten DTrace tai gdb . Aluksi tämä aiheutti ongelmia, koska muita järjestelmätietoja ei voitu testata tämän lipun käytön seurauksena. Tämä ongelma korjattiin muutamaa kuukautta myöhemmin Mac OS X 10.5.3 -päivityksessä.

DTracen siirtäminen QNX 7 :ään on raportoitu .

Koska CDDL ei ole yhteensopiva GPL :n kanssa , siirtäminen Linuxiin on mahdollista, mutta ei laillista . Linuxille kehitetään samankaltaista apuohjelmaa nimeltä SystemTap , joka perustuu kprobes- instrumentointimekanismiin . Oracle kuitenkin lisäsi DTracen beta-version Oracle Linuxiin vuonna 2011 [2] , vakaa versio julkaistiin joulukuussa 2012, työkalu on saatavilla osana Unbreakable Enterprise Kerneliä (toisesta julkaisusta alkaen), kun taas DTrace- ydin moduuli säilytti CDDL-lisenssin [3] .

Likimääräiset analogit

Microsoft WPP/ETW, tuettu Windows Vistasta .

Tekniikka perustuu WMI :hen , ensisijaisesti WMI-tapahtumiin, ja vain helpottaa näitä tapahtumia herättävän koodin kirjoittamista.

Lähdetiedostot, joissa on tapahtumia herättäviä kutsuja, on käsiteltävä jonkinlaisen esiprosessorin avulla, joka poistaa kaikki muotorivit (kutsu tapahtuman nostamiseksi on samanlainen kuin printf() ) erilliseksi binääritiedostoksi (.TMF) jättäen vain kutsuparametreja uudelleenfaktoroidussa lähdekoodissa.

Ilman TMF-tiedostoa komponentille kuluttava sovellus näkee vain tapahtumanumerot ja tapahtumaparametrit, ei tekstikuvauksia.

Tämä parantaa huomattavasti järjestelmän suorituskykyä. Teknologia ei myöskään johda suorituskyvyn heikkenemiseen, jos kuluttajasovellusta ei ole.

2010-luvun puolivälistä lähtien Microsoft ei ole julkaissut TMF-tiedostoja millekään tavalliselle Windows-komponentille, lukuun ottamatta NDIS:ää (julkaistu noin vuoden 2010 lopussa).

Muistiinpanot

  1. Tämä on DTracelle luotu erikoisaluekohtainen kieli , jolla ei ole mitään tekemistä yleiskäyttöisen D-ohjelmointikielen kanssa.
  2. dtrace:n kokeilu . Haettu 10. joulukuuta 2012. Arkistoitu alkuperäisestä 18. huhtikuuta 2015.
  3. DTrace Linuxissa (downlink) . Käyttöpäivä: 10. joulukuuta 2012. Arkistoitu alkuperäisestä 7. heinäkuuta 2014. 

Linkit

Englanniksi

venäjäksi