2017-07-05 30 views
5

Uruchamiam program w C++ w systemie Linux.Jak mogę zmierzyć czas procesora dla określonego zestawu wątków?

Istnieje kilka pul wątków (dla obliczeń, dla io, dla ... takich rzeczy).

Zegar wywołania systemowego() daje mi sposób na zmierzenie czasu procesora zużytego przez wszystkie rdzenie procesora dla procesu.

Jednak chcę zmierzyć czas procesora spędzony tylko przez wątki w puli wątków obliczeniowych.

Jak mogę to osiągnąć?

Dzięki: D

+0

To nie jest idealna, ale myślę, że najprostszym rozwiązaniem jest zalogowanie jakąś wiadomość ze znaczników czasu startu i zatrzymania każdego wątku i ci taktowania przez przetwarzanie tych dzienników. –

Odpowiedz

5

Aby uzyskać CPU clock ID każdego wątku można użyć: pthread_getcpuclockid i stosując ten CPU clock ID można pobrać aktualny czas procesora wątek przy użyciu: clock_gettime.

Poniżej znajduje się przykładowy kod do wykazania samo:

struct timespec currTime; 
clockid_t threadClockId; 

//! Get thread clock Id 
pthread_getcpuclockid(pthread_self(), &threadClockId); 
//! Using thread clock Id get the clock time 
clock_gettime(threadClockId, &currTime); 
+0

Tego właśnie szukałem, thx – syko