是否有任何linux函数调用通过传递线程ID来获取特定线程的CPU使用率?

时间:2014-04-02 13:02:52

标签: c linux pthreads

是否有任何直接的linux函数调用通过传递线程ID来获取特定线程的运行时CPU使用率? 如果没有函数调用,还有其他可能的方法来实现相同的吗?

我有一个用c编写的应用程序,它运行在linux平台上。它有多个并行运行的线程。其中我需要识别每个线程的CPU使用情况。为此,我需要通过系统调用来增强我的代码,这使我可以获得特定线程的CPU使用率。考虑我在运行时准备好结构中的所有线程ID。

2 个答案:

答案 0 :(得分:1)

您可以按如下方式获取特定流程的CPU使用情况

 ps -p <pid> -o %cpu

您可以从

输出中设置%CPU
ps -p <pid> -o %cpu | tail -n +2

您也可以在系统调用中传递上述命令。

同时查看获取名为getusage

的当前流程利用率的函数

答案 1 :(得分:0)

在不知道您要查找的信息量和深度的情况下,如果您想对每个线程的工作做出相对简单的估计,可以查看pthread_getcpulockid。您使用已保存的线程ID来获取每个线程的clockid,然后使用clockids为每个线程调用clock_gettime。手册页上有一个很好的小例子程序。

否则我认为你会进入/ proc领域。