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

Posted

技术标签:

【中文标题】是否有任何 linux 函数调用通过传递线程 ID 来获取特定线程的 CPU 使用率?【英文标题】:Is there any linux function call to get CPU usage for a specific thread by passing thread ID? 【发布时间】:2014-04-02 13:02:51 【问题描述】:

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

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

【问题讨论】:

我认为这个链接会对你有所帮助。 ***.com/questions/3017162/… 【参考方案1】:

您可以通过以下方式获取特定进程的CPU使用率

 ps -p <pid> -o %cpu

您可以从输出中删除%CPU 字样

ps -p <pid> -o %cpu | tail -n +2

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

还可以查看名为getusage的获取当前进程利用率的函数

【讨论】:

【参考方案2】:

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

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

【讨论】:

感谢您的回复。这真的很有帮助。

以上是关于是否有任何 linux 函数调用通过传递线程 ID 来获取特定线程的 CPU 使用率?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以调用任何网页的Java脚本功能?

将列表对象作为函数参数传递(而不是默认值),是否有任何陷阱?

linux C语言 pthread_t pthread_self()函数(获取调用线程的ID) pthread_equal() 线程id(thread ID)

线程调用的函数对对象删除安全吗?

linux C语言 pthread_t pthread_self()函数(获取调用线程的ID) pthread_equal() 线程id(thread ID)

通过URL与参数传递记录ID的优点/缺点