120 likes | 245 Views
Investigarea contoarelor de referință de la nivelul nucleului Linux. Emma – Camelia Mirică emma.mirica@gmail.com. As. Dr. Ing. Răzvan Deaconescu Ing. Daniel Băluță. Sesiunea de licen ţe - Iulie 2012. Cuprins. Introducere Motivație Structura kref Captură Filtrare Procesare Întrebări.
E N D
Investigarea contoarelor de referință de la nivelul nucleului Linux Emma – Camelia Miricăemma.mirica@gmail.com As. Dr. Ing. Răzvan Deaconescu Ing. Daniel Băluță • Sesiunea de licenţe - Iulie 2012
Cuprins • Introducere • Motivație • Structura kref • Captură • Filtrare • Procesare • Întrebări Sesiunea de Licenţe - Iulie 2012
Introducere • Aplicație: • Modul de kernel (captură și filtrare) • Script Python (procesare) • Analiză dinamică • Oferă statistici (tabele, liste etc.) despre contoarele de referință filtrate după anumite criterii: valoare contor, id proces Sesiunea de Licenţe - Iulie 2012
Motivație Sesiunea de Licenţe - Iulie 2012
Structura kref kref_get kref_init kref_put Sesiunea de Licenţe - Iulie 2012
Aplicația în ansamblu Spațiu kernel Spațiu user Modulul kref-count Scriptul ref_leaks Funcții kref și parametrii modulului captură filtrare procesare Statistici (valori, liste, tabele) Sesiunea de Licenţe - Iulie 2012
Captură • Colectare într-un hash table și actualizare de informații utile despre structurile kref din nucleu • Id și nume proces de creare • Numărul de operații get și put • Hash table pentru contexte • Integritatea informației • În spațiu kernel, implementat în modulul kref-count • Sincronizare folosind spinlock Sesiunea de Licenţe - Iulie 2012
Captură (2) • Primă fază de control prin parametrii modulului: • nokref • omode • leaks Sesiunea de Licenţe - Iulie 2012
Filtrare • Filtrarea informațiilor colectate anterior după: • Valoare contor • Id proces • În spațiu kernel, implementat în modulul kref-count • Folosește procfs, adăugând un nou folder (/proc/kref_debug) cu intrările: • kref_filter: control filtrare • kref_0x<kref_addr>: rezultatele filtrării Sesiunea de Licenţe - Iulie 2012
Modulul kref-count Funcție kref NU DA kref nou NU Actualizare informații Verifică nokref Ignoră Verifică leaks DA Șterge kref și intrare din /proc, dacă există NU Verifică omode Ignoră NU DA Verifică filtru NU Adaugă noul kref DA Șterge intrare din /proc, dacă există Verifică filtru Adaugă noua intrare în /proc/kref_debug DA Adaugă noua intrare în /proc/kref_debug Sesiunea de Licenţe - Iulie 2012
Procesare • Oferă statistici pe baza intrărilor din /proc/kref_debug • În user space, implementat în scriptul ref_leaks ref_leaks -h -v -s -w -a -t Intrări din /proc/kref_debug Statistici (valori, liste, tabele) -k -l -d -f -p -g Sesiunea de Licenţe - Iulie 2012
Cuvinte cheie • nucleul Linux • struct kref • modul de kernel • interceptare • script Python • procfs • captură • filtrare • procesare Vă Mulțumesc! Sesiunea de Licenţe - Iulie 2012