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

标签 c multithreading linux-kernel cpu-usage core

我有一个多线程 C 应用程序(守护进程)。我可以按线程测量应用程序的 CPU 使用率吗?

最佳答案

虽然这是一个老问题,但它在我自己的 Google 搜索中被列为最相关的问题。所以我会提供我想到的答案。

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

您可以使用pthread_getcpuclockidclock_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);
}

关于我可以通过线程进入应用程序来测量 Linux 中的 CPU 使用率吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18638590/

相关文章:

c - 对 `pow' 和 `floor' 的 undefined reference

c - "Section type conflict"由于 GCC 4.8.2 中的宏定义

c - 我正在尝试从由制表符分隔的文本文件中获取数据。但我无法得到结果

c# - MethodInvoker + lambda + 参数 + 跨线程操作

c - 我应该如何转换 14 位位域的字节序?

java - 在 Java 中为方法创建超时的最佳方法是什么?

c++ - 线程中的 QTcpSocket 并不总是立即发送数据

c - 为什么存在系统调用

linux - 使用TSC作为时钟源是否提高定时器和调度粒度?

c++ - Linux 内核事件 : timeval or timespec