2017-07-05 18 views
5

私はLinuxでC++プログラムを実行しています。特定のスレッドセットのCPU時間を測定するにはどうすればよいですか?

いくつかのスレッドプールがあります(計算用、io用など)。

システムコールクロック()は、プロセスのすべてのCPUコアが費やしたCPU時間を測定する手段を提供します。

しかし、私は計算スレッドプール内のスレッドによって費やされたCPU時間を測定したいと思います。

どうすれば実現できますか?

ありがとう:D

+0

これは理想的ではありませんが、私は最も簡単な解決策は、各スレッドの開始と停止のタイムスタンプを持ついくつかのメッセージをログに記録し、によってあなたのタイミングを取得することだと思いますそれらのログを後処理します。 –

答えて

5

あなたが使用できるすべてのスレッドのCPU clock IDを取得するには:clock_gettimeを:pthread_getcpuclockid と、このCPU clock IDを使用して、使用して、現在のスレッドのCPU時間を取得することができます。続き

は同じことを実証するサンプルコードです:

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

それは私が正確に探していたものです、thx – syko

関連する問題