A DTrace egy dinamikus nyomkövetési keretrendszer , amelyet a Sun Microsystems hozott létre valós idejű kernel- és alkalmazáshibakereséshez. A DTrace-t eredetileg a Solaris számára hozták létre , majd a Common Development and Distribution License (CDDL) alatt adták ki, és számos Unix-szerű rendszerre portolták.
A DTrace segítségével nyomon követhető az elhasznált memória mennyisége, a CPU-idő , a fájlrendszerek és a futó rendszer aktív folyamatai által használt hálózati erőforrások. Részletesebb információkat is kaphat, például azon argumentumok listáját, amelyekkel az egyes függvények meghívódnak, vagy egy adott fájlt használó folyamatok listáját.
A nyomkövetési szkripteket speciális nyelven fejlesztik . Az eszköz támogatja az interakciót a következő programozási nyelveken írt programokhoz generált kóddal : C , C++ , Java , Erlang , JavaScript , Perl , PHP , Python , Ruby , Tcl , a függvényhívások és az eredeti hívási kontextusok felismerése. Számos Unix program támogatja a DTrace-et, biztosítva a műveletek és a rendszerhívások nyomon követését, különösen speciális DTrace-szolgáltatókat fejlesztettek ki a MySQL , PostgreSQL , Oracle Database , Univa Grid Engine , Firefox böngészőhöz .
Az eszköz biztonságosan használható élő környezetben: szinte nincs teljesítményromlás a tesztelés során.
A nyomkövető szkriptek speciálisan a D eszközhöz kifejlesztett nyelven , C-szerű szintaxissal és a nyomkövetésre jellemző kész függvényekkel és változókkal vannak felszerelve [1] . A D programok szerkezetileg hasonlóak az awk programokhoz ; tartalmazzák azon szondák listáját, amelyeknek a műveletek megfelelnek. Ha egy bizonyos feltétel teljesül, az érzékelő működésbe lép, és megtörténik a megfelelő művelet. Feltétel lehet például egy bizonyos fájl megnyitása, egy folyamat elindítása vagy egy bizonyos kódsor végrehajtása. Lehetőség van információ átvitelére egyik érzékelőről a másikra.
Mivel az eszköz minimális ráfordítással biztosítja a követést, több tízezer érzékelő futhat egyszerre, új érzékelők hozhatók létre dinamikusan.
A DTrace szkriptek a parancssorból futtathatók egy vagy több érzékelő argumentumként történő használatával. Példák:
# Új folyamatok érvekkel, dtrace -n 'proc:::exec-success { trace(curpsinfo->pr_psargs); }' # folyamat által megnyitott fájlok, dtrace -n 'syscall::open*:entry { printf ("%s %s",execname,copyinstr(arg0)); }' # Syscall száma programonként, dtrace -n 'syscall:::entry { @szám[execname] = count(); }' # Syscall száma syscallenként, dtrace -n 'syscall:::entry { @num[probefunc] = count(); }' # Syscall száma folyamatonként, dtrace -n 'syscall:::entry { @szám[pid,execname] = count(); }' # Lemezméret folyamat szerint, dtrace -n 'io:::start { printf("%d %s %d",pid,execname,args[0]->b_bcount); }' # oldal lapozva folyamat szerint, dtrace -n 'vminfo:::pgpgin { @pg[execname] = sum(arg0); }'A DTrace-t 2003 novemberében mutatták be, és 2005 januárjában adták ki hivatalosan a Solaris 10 operációs rendszer részeként. Az OpenSolaris projekt első komponense lett , amelynek forráskódja a Common Development and Distribution License ( CDDL ) alatt került kiadásra.
2009 elején a DTrace-t a FreeBSD -re (7.1-es verzió) portolták át.
Az Apple hozzáadta a DTrace támogatását a Mac OS X 10.5 "Leopard" rendszerben, beleértve az Instruments grafikus programot is . Más platformokkal ellentétben a Mac OS X rendelkezik egy jelzővel ( P_LNOATTACH ), amely letiltja a folyamatkövetést olyan eszközökkel, mint a DTrace vagy a gdb . Kezdetben ez problémákat okozott, mert a jelző alkalmazása következtében más rendszerinformációkat nem lehetett tesztelni. Ez a probléma néhány hónappal később a Mac OS X 10.5.3 frissítésével megoldódott.
A DTrace QNX 7 -re történő portolását jelentették .
Mivel a CDDL nem kompatibilis a GPL -lel, a Linuxra való portolás lehetséges, de nem legális . Linuxra egy hasonló funkcionalitású segédprogramot fejlesztenek, a SystemTap néven a kprobes műszerezési mechanizmus alapján . Az Oracle azonban 2011-ben hozzáadta a DTrace béta verzióját az Oracle Linuxhoz [2] , a stabil verzió 2012 decemberében jelent meg, az eszköz az Unbreakable Enterprise Kernel részeként érhető el (a második kiadástól kezdve), míg a DTrace kernel modul megtartotta a CDDL licencet [3] .
Microsoft WPP/ETW, a Windows Vista által támogatott .
A technológia a WMI -n , elsősorban a WMI-eseményeken alapul, és nem más, mint megkönnyíti az ezeket az eseményeket előidéző kódok írását.
Az eseményeket előidéző hívásokkal rendelkező forrásfájlokat valamilyen előfeldolgozónak kell feldolgoznia, amely az összes formátumsort kiveszi (az esemény felhívása hasonló a printf() -hez) egy külön bináris fájlba (.TMF), és csak az paraméterek hívása az újrafaktorált forráskódban.
Az összetevőhöz tartozó TMF-fájl nélkül a fogyasztó alkalmazás csak eseményszámokat és eseményparamétereket lát, szöveges leírásokat nem.
Ez nagymértékben javítja a rendszer teljesítményét. Ezenkívül a technológia nem vezet teljesítményromláshoz, ha nincs fogyasztói alkalmazás.
A 2010-es évek közepétől a Microsoft egyetlen szabványos Windows-összetevőhöz sem tett közzé TMF-fájlokat, kivéve az NDIS-t (amely 2010 végén jelent meg).
Solaris | |
---|---|
Technológia | |
OpenSolaris |