3

我有多线程 C 应用程序(守护程序)。我可以通过线程来测量我的应用程序的 CPU 使用率吗?

4

2 回答 2

7

虽然这是一个古老的问题,但它在我自己的谷歌搜索中却是最热门的。所以我会提供我想出的答案。

假设您正在使用 pthreads 或使用它的库,例如 Boost 库。

您可以使用pthread_getcpuclockidclock_gettime
手册页链接pthread_getcpuclockidclock_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 回答