DTrace je dynamický sledovací rámec vytvořený společností Sun Microsystems pro ladění jádra a aplikací v reálném čase . DTrace byl původně vytvořen pro Solaris , poté uvolněn pod Common Development and Distribution License (CDDL) a portován na řadu systémů podobných Unixu .
DTrace lze použít ke sledování množství spotřebované paměti, času CPU , souborových systémů a síťových prostředků používaných aktivními procesy na běžícím systému. Můžete také získat podrobnější informace, jako je seznam argumentů, pomocí kterých je každá funkce volána, nebo seznam procesů používajících konkrétní soubor.
Sledovací skripty jsou vyvíjeny ve specializovaném jazyce . Nástroj podporuje interakci s kódem generovaným pro programy napsané v následujících programovacích jazycích : C , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , Tcl , rozpoznávání volání funkcí a původní kontexty volání. Řada unixových programů podporuje DTrace, zajišťující sledování operací a systémových volání, zejména jsou vyvinuti speciální poskytovatelé DTrace pro MySQL , PostgreSQL , Oracle Database , Univa Grid Engine , prohlížeč Firefox .
Použití nástroje v živém prostředí je bezpečné: během testování nedochází téměř k žádnému snížení výkonu.
Sledovací skripty jsou psány v jazyce speciálně vyvinutém pro nástroj D se syntaxí podobnou C a jsou vybaveny předpřipravenými funkcemi a proměnnými specifickými pro sledování [1] . D programy jsou strukturálně podobné programům awk ; obsahují seznam sond , kterým akce odpovídají. Když je splněna určitá podmínka, senzor se spustí a provede se odpovídající akce. Podmínkou může být například otevření určitého souboru, spuštění procesu nebo provedení určitého řádku kódu. Je možné přenášet informace z jednoho senzoru do druhého.
Protože nástroj poskytuje sledování s minimální režií, mohou současně běžet desítky tisíc senzorů, nové senzory lze vytvářet dynamicky.
Skripty DTrace lze spouštět z příkazového řádku pomocí jednoho nebo více senzorů jako argumentů. Příklady:
# Nové procesy s argumenty, dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' # Soubory otevřené procesem, dtrace -n 'syscall::open*:entry { printf ("%s %s",execname,copyinstr(arg0)); }' # Počet systémových volání podle programu, dtrace -n 'syscall:::entry { @num[execname] = count(); }' # Počet syscall po syscall, dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' # Počet systémových volání podle procesu, dtrace -n 'syscall:::entry { @num[pid,execname] = count(); }' # Velikost disku podle procesu, dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' # Stránky stránkované podle procesu, dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'DTrace byla představena v listopadu 2003 a byla oficiálně vydána jako součást operačního systému Solaris 10 v lednu 2005. Stal se první součástí projektu OpenSolaris , jehož zdrojový kód byl uvolněn pod Common Development and Distribution License ( CDDL ).
Na začátku roku 2009 byl DTrace portován na FreeBSD (verze 7.1).
Apple přidal podporu pro DTrace v Mac OS X 10.5 „Leopard“, včetně grafického programu Instruments . Na rozdíl od jiných platforem má Mac OS X příznak ( P_LNOATTACH ), který zakazuje trasování procesů nástroji jako DTrace nebo gdb . Zpočátku to způsobilo problémy, protože v důsledku použití tohoto příznaku nebylo možné otestovat další systémové informace. Tento problém byl vyřešen o několik měsíců později v aktualizaci Mac OS X 10.5.3.
Portování DTrace na QNX 7 bylo hlášeno .
Vzhledem k tomu, že CDDL není kompatibilní s GPL , je portování na Linux možné, ale není legální . Pro Linux je vyvíjen nástroj s podobnou funkčností nazvaný SystemTap založený na instrumentačním mechanismu kprobes . Oracle však v roce 2011 přidal beta verzi DTrace do Oracle Linux [2] , stabilní verze byla vydána v prosinci 2012, nástroj je dostupný jako součást Unbreakable Enterprise Kernel (počínaje druhým vydáním), zatímco jádro DTrace modul si ponechal licenci CDDL [3] .
Microsoft WPP/ETW, podporovaný z Windows Vista .
Tato technologie je založena na WMI , primárně na událostech WMI, a nic víc než usnadňuje psaní kódu, který tyto události vyvolává.
Zdrojové soubory s voláním vyvolávajícím události musí být zpracovány nějakým druhem preprocesoru, který vyjme všechny formátovací řádky (volání k vyvolání události je podobné printf() ) do samostatného binárního souboru (.TMF), přičemž ponechá pouze parametry volání v refaktorovaném zdrojovém kódu.
Bez souboru TMF pro komponentu vidí konzumující aplikace pouze čísla událostí a parametry událostí, nikoli textové popisy.
To výrazně zlepšuje výkon systému. Technologie také nevede ke snížení výkonu, pokud neexistuje žádná spotřebitelská aplikace.
Od poloviny roku 2010 společnost Microsoft nepublikovala soubory TMF pro žádnou standardní součást Windows, s výjimkou NDIS (publikováno kolem konce roku 2010).
Solaris | |
---|---|
Technika | |
OpenSolaris |