在 C、Linux 3.2 中:有没有办法以编程方式收集pthread
某个程序上每个已创建线程的状态的统计信息?例如,我想获取每个线程运行和处于空闲状态的时间。
问问题
901 次
2 回答
1
clock_gettime()
可以返回线程特定的 CPU 时间。只需这样做:
struct timespec ts;
clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
但据我了解,这是该线程的用户和系统时间的总和。您还应该考虑手册页末尾有关 SMP 系统的警告消息。
此外,如果您不想要当前线程上的计时信息,但在某些 pthread 上,您可以clockid_t
使用clock_gettime()
using int pthread_getcpuclockid(pthread_t thread, clockid_t *clock_id)
。
于 2012-05-27T14:48:10.977 回答
1
编辑:为了获得空闲时间,我会从线程处于活动状态的总时间中减去系统和用户时间。
可用于探测的其他工具包括:system tap、swtrace、tprof、oprofile、perf、sysprof、ptt 等。
于 2012-05-27T15:34:09.680 回答