我可以通过应用程序的线程来测量Linux中的CPU使用率吗

问题描述 投票:0回答:2

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

c multithreading linux-kernel cpu-usage
2个回答
8
投票

虽然这是一个老问题,但它是我自己的谷歌搜索中最热门的相关点击。所以我会提供我想到的答案。

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

您可以使用

pthread_getcpuclockid
clock_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);
}

1
投票

您可以从

/proc/<PID>/stat
中解析出数据。 CPU 线如下所示:-

cpu  143359 8217 480152 132054567 45162 5678 24656 0 0
© www.soinside.com 2019 - 2024. All rights reserved.