pthreads:以编程方式收集有关在不同状态上花费的时间的信息?

时间:2012-05-27 14:06:04

标签: c linux pthreads

在C中,Linux 3.2:有没有办法以编程方式收集有关某个程序上每个pthread创建的线程的状态的统计信息?例如,我想让每个线程花时间运行,并处于空闲状态。

2 个答案:

答案 0 :(得分: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)一起使用。

答案 1 :(得分:1)

getrusage()

编辑:要获得空闲时间,我会从线程处于活动状态的总时间中减去系统和用户时间。

您可以用来探测的其他工具包括:系统点击,swtrace,tprof,oprofile,perf,sysprof,ptt等。