[pso] Code profiling in linux

marius zbihlei mariuszbi at yahoo.com
Tue May 19 14:47:44 EEST 2009


Un tool foarte ok (pe care il folosesc de ceva vreme) e callgrind. Instalezi valgrind si rulezi valgrind --tool=callgrind . Apoi instalezi kcachegrind (kde required) pt niste rezultate spectaculoase.

Callgrind nu recesita recompilare si nici cod sursa. E necesar -g ca flag la gcc totusi.

De asemenea recomand cachegrind(cache profiler) si helgrind(pt programe multithreaded)

www.valgrind.org

Bafta






________________________________
From: Tudor Golubenco <tudor.g at gmail.com>
To: Proiectarea Sistemelor de Operare <pso at cursuri.cs.pub.ro>
Sent: Tuesday, May 19, 2009 2:02:57 PM
Subject: Re: [pso] Code profiling in linux

2009/5/15 Andrei Hanganu <handrei at gmail.com>

Stiu ca nu e neaparat legat de PSO, dar cred ca e cea mai potrivita lista de discutii pe care sa intreb.
Ma intereseaza un mecanism de profiling automat in linux, cu interes sporit pentru masurarea timpului de parcurgere a unor pachete/structuri a anumitor cai.
Sistemul care ma intereseaza sa il optimizez merge pe principiul boss-workers, si un anumit eveniment trece printr-o serie de cozi de prelucrare procesate de threaduri separate.


Daca te intereseaza niste timpi specifici, de exemplu care din job-urile de prelucrare sunt mai scumpe, e de multe ori o idee buna sa-ti adaugi propriul cod de profiling. Vei avea overhead-ul minim, deci il poti folosi si in productie. Poti folosi, de exemplu, clock_gettime (2) sa obtii timpi 
per thread.
 

Am incercat sa ma joc cu gprof, dar masoara timpii petrecuti in diferite functii per ansamblu.
Instrumentarae de GCC este draguta dar nu da nici un fel de raportare legata de timpii de executie sau petrecuti pe anumite arce.
M-am mai documentat si pe margina lui oprofile, dar acesta mi s-a parut orientat pe profiling la nivel de sistem de operare si nu anumite linii de cod.
Mai exista ceva alternative?


Oprofile e ok, ti-as recomanda sa incepi cu el ca profiling general. Poti, desigur, filtra doar procesul care te intereaseaza. Deasemenea, overhead-ul este f. mic.

Pentru CPU profilling, mai exista valgrind --tool=callgrind, iar apoi poti folosi Kcachegrind care iti va face niste grafice foarte utile. Este foarte cool, dar use with caution: programul se executa pe un procesor virtual, de aprox 50 ori mai lent. 

Tudor

-- 
Tudor Golubenco                 http://golubenco.org

Beware of bugs in the above code; I have only proved it correct,
not tried it.  -- Donald Knuth


      
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://cursuri.cs.pub.ro/pipermail/pso/attachments/20090519/6bc1d6df/attachment.htm>


More information about the pso mailing list