2017-07-05 96 views
5

Linux'ta C++ programını çalıştırıyorum.Belirli bir iş parçacığı için CPU zamanını nasıl ölçebilirim?

Birkaç iş parçacığı havuzu vardır (hesaplama için, io için, böyle şeyler için).

Sistem çağrısı saati(), işlem için tüm CPU çekirdeği tarafından harcanan CPU süresini ölçmenin bir yolunu sunuyor. Ancak, yalnızca hesaplama iş parçacığı havuzundaki iş parçacıklarının harcadığı CPU süresini ölçmek istiyorum.

Bunu nasıl başarabilirim?

Teşekkür: D

+0

Bu ideal değildir, ama kolay çözüm, her iş parçacığı başında ve durdurma zaman damgaları ile bazı mesaj log tarafından size zamanlamalarını almak için olduğunu düşünüyorum bu günlükleri postprocessing. –

cevap

5

kullanabileceğiniz her dişin CPU clock ID almak için: pthread_getcpuclockid ve bu CPU clock ID kullanmakta anki iş parçacığı CPU zamanı alabilirsiniz kullanarak: clock_gettime. Takip

aynı göstermek için örnek kod:

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

Tam olarak aradığım şey, thx – syko