6

C、Linux 3.2の場合:プログラムでpthread作成された各スレッドの状態に関する統計をプログラムで収集する方法はありますか?たとえば、各スレッドが実行中、アイドル状態で費やした時間を取得したいと思います。

4

2 に答える 2

1

clock_gettime()スレッド固有のCPU時間を返すことができます。単に行う:

struct timespec ts;
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);

しかし、私の理解では、これはこのスレッドのユーザー時間とシステム時間の合計です。また、マニュアルページの最後にあるSMPシステムに関する警告メッセージを検討する必要があります。

また、現在のスレッドではなく、一部のpthreadでタイミング情報が必要な場合は、clockid_tを使用してを使用するclock_gettime()ことができますint pthread_getcpuclockid(pthread_t thread, clockid_t *clock_id)

于 2012-05-27T14:48:10.977 に答える
1

getrusage()

編集:アイドル時間を取得するには、スレッドがアクティブだった合計時間からシステムとユーザーの時間を差し引きます。

プローブに使用できるその他のツールには、system tap、swtrace、tprof、oprofile、perf、sysprof、ptt などがあります。

于 2012-05-27T15:34:09.680 に答える