在C中,Linux 3.2:有没有办法以编程方式收集有关某个程序上每个pthread
创建的线程的状态的统计信息?例如,我想让每个线程花时间运行,并处于空闲状态。
答案 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)
编辑:要获得空闲时间,我会从线程处于活动状态的总时间中减去系统和用户时间。
您可以用来探测的其他工具包括:系统点击,swtrace,tprof,oprofile,perf,sysprof,ptt等。