私はLinuxでC++プログラムを実行しています。特定のスレッドセットのCPU時間を測定するにはどうすればよいですか?
いくつかのスレッドプールがあります(計算用、io用など)。
システムコールクロック()は、プロセスのすべてのCPUコアが費やしたCPU時間を測定する手段を提供します。
しかし、私は計算スレッドプール内のスレッドによって費やされたCPU時間を測定したいと思います。
どうすれば実現できますか?
ありがとう:D
私はLinuxでC++プログラムを実行しています。特定のスレッドセットのCPU時間を測定するにはどうすればよいですか?
いくつかのスレッドプールがあります(計算用、io用など)。
システムコールクロック()は、プロセスのすべてのCPUコアが費やしたCPU時間を測定する手段を提供します。
しかし、私は計算スレッドプール内のスレッドによって費やされたCPU時間を測定したいと思います。
どうすれば実現できますか?
ありがとう:D
あなたが使用できるすべてのスレッドの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);
それは私が正確に探していたものです、thx – syko
これは理想的ではありませんが、私は最も簡単な解決策は、各スレッドの開始と停止のタイムスタンプを持ついくつかのメッセージをログに記録し、によってあなたのタイミングを取得することだと思いますそれらのログを後処理します。 –