DTrace
Kapcsolódó tárgy:
Operációs rendszerek - UNIX előadások Jegyzetvázlat a DTrace előadáshoz (előadó: Fischer Erik, Sun)
Készítette Mészáros Tamás, BME MIT, 2009
A feladat: hibakeresés, diagnosztika, optimalizáció
- végzetes hibák
- tranziens hibák
- percepcionális "hibák" ("lassú a gép") okainak felderítése
Korábbi megoldások: gyenge megfigyelhetőség és invazív technikák
- egyszerű, nem túl rugalmas megfigyelő parancsok (vmstat, iostat, stb.)
- bináris vagy forráskódú beavatkozások szükségesek a hibakereséshez
- rendszerkönyvtár és kernel debug változatok használata szükséges
- erőszakosak, nehézkesek, időigényesek, korlátozottak, élő rendszeren nem alkalmazhatók, új hibákat vihetnek a rendszerbe
A DTrace összetevői:
- mérőrendszer: mérőpontok függvény be- és kilépési pontokon és adatfeldolgozók (fogyasztók)
- a mérőrendszer programozási nyelve (D)
- a megvalósító kernel modul
A mérési helyek (ún. provider-ekben):
- felhasználói függvények
- rendszerhívások
- kernel függvények
- összesen > 50 ezer mérőpont
Provider-ek:
- lista: dtrace -l
- fbt: kernel függvények (~45 ezer)
- syscall: rendszerhívások (~ 400 db mérőpont)
- I/O, processz, ütemezés, zárolás, stb.
Fogyasztók:
- DTrace parancs (szkriptek)
- programozási nyelvekben
- stb.
Működési mód:
- dinamikus mérőkód beszúrás a megfelelő fv. be/kilépési pontokra
- kernel szintű adatgyűjtés a meghatározott mérőpontokról
- a fogyasztók (pl. "dtrace" parancs) lekérdezik az adatgyűjtőt
A DTrace programozási nyelve: D
- C, awk, perl keverék
- szokásos adattípusok
- speciális típusok: asszociatív tömb
- aggregációs műveletek
- beépített változók (pid, ppid, execname, stb.)
- szálakra lokális változók: this->...
- nanoszekundum felbontású időmérés
- hozzáférés a megfigyelt függvények argumentumaihoz és visszatérési értékeihez
- megjelenítés: printf, pinta (asszociatív tömbökre)
- akciók (destruktívak is, pl. stop(), panic(), ha engedélyezzük)
DTrace mintapéldák
- l. fóliák
- A hozzászóláshoz bejelentkezés szükséges