DTrace

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.

Szkriptnyelv

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.

Használati példák

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); }'

Támogatott platformok

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] .

Hozzávetőleges analógok

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).

Jegyzetek

  1. Ez egy speciális tartomány-specifikus nyelv , amelyet a DTrace számára készítettek, és semmi köze az általános célú D programozási nyelvhez.
  2. a dtrace kipróbálása . Letöltve: 2012. december 10. Az eredetiből archiválva : 2015. április 18..
  3. DTrace Linuxon (lefelé irányuló kapcsolat) . Hozzáférés dátuma: 2012. december 10. Az eredetiből archiválva : 2014. július 7. 

Linkek

Angolul

Oroszul