我有多线程 C 应用程序(守护程序)。我可以通过线程来测量我的应用程序的 CPU 使用率吗?
问问题
2626 次
2 回答
7
虽然这是一个古老的问题,但它在我自己的谷歌搜索中却是最热门的。所以我会提供我想出的答案。
假设您正在使用 pthreads 或使用它的库,例如 Boost 库。
您可以使用pthread_getcpuclockid
和clock_gettime
。
手册页链接pthread_getcpuclockid、clock_gettime。
这是一个简单的示例,它以double形式返回当前时间。
double cpuNow( void ) {
struct timespec ts;
clockid_t cid;
pthread_getcpuclockid(pthread_self(), &cid);
clock_gettime(cid, &ts);
return ts.tv_sec + (((double)ts.tv_nsec)*0.000000001);
}
于 2014-06-04T20:49:36.113 回答
1
您可以从中解析出数据 /proc/<PID>/stat
。CPU 线如下所示:-
cpu 143359 8217 480152 132054567 45162 5678 24656 0 0
于 2013-09-05T14:11:45.760 回答