【发布时间】:2013-09-05 14:08:14
【问题描述】:
我有多线程 C 应用程序(守护程序)。我可以通过线程来测量我的应用程序的 CPU 使用率吗?
【问题讨论】:
标签: c multithreading linux-kernel cpu-usage core
我有多线程 C 应用程序(守护程序)。我可以通过线程来测量我的应用程序的 CPU 使用率吗?
【问题讨论】:
标签: c multithreading linux-kernel cpu-usage core
虽然这是一个老问题,但它在我自己的 Google 搜索中却是相关热门。所以我会提供我想出的答案。
假设您正在使用 pthread 或使用它的库,例如 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);
}
【讨论】:
您可以解析出/proc/<PID>/stat 中的数据。 CPU线是这样的:-
cpu 143359 8217 480152 132054567 45162 5678 24656 0 0
【讨论】: