是否有任何直接的linux函数调用通过传递线程ID来获取特定线程的运行时CPU使用率? 如果没有函数调用,还有其他可能的方法来实现相同的吗?
我有一个用c编写的应用程序,它运行在linux平台上。它有多个并行运行的线程。其中我需要识别每个线程的CPU使用情况。为此,我需要通过系统调用来增强我的代码,这使我可以获得特定线程的CPU使用率。考虑我在运行时准备好结构中的所有线程ID。
答案 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领域。