gpt4 book ai didi

linux - 如何在 Redhat Linux 中获取线程 CPU 利用率指标

转载 作者:IT王子 更新时间:2023-10-29 00:50:48 25 4
gpt4 key购买 nike

我需要获取进程中所有线程的 CPU 利用率指标。

  • 操作系统 = Redhat linux
  • 编程语言 = 使用 POSIX 的 C++
  • 要求 = 需要无限期地每隔几秒采集一次样本,而不仅仅是一次快照。
  • constraints = 不允许在线程中写额外的代码

    我知道您可以使用“top”命令,但还有哪些其他方法?有“ps”的标志吗?

预先感谢您的所有帮助。

最佳答案

你可以阅读/proc/[your PID]/stat的内容来获取整个过程的信息,如果你有一个2.6内核还有/proc/[your PID]/task/[thread ID]/stat 包含各个线程的信息。 (参见 here)

具体来说,你会发现这两个字段:

The number of jiffies that this process has been scheduled in user mode.

stime %lu

The number of jiffies that this process has been scheduled in kernel mode.

cutime %ld

这里有问题的部分是给出值的单位。一个 jiffy 是 1/HZ 秒,其中 HZ 是内核时钟节拍率,确定这个时钟率是困难的部分。

如果您只对一个特定系统需要这个,您可以只做一些测试或查看您的内核头文件并将这个值硬编码到您的程序中。如果你想知道如何以更一般的方式确定它,你可以通过查看 its source code 来了解像 top 这样的工具是如何做的。 (参见 old_Hertz_hack() 函数和相关注释)

关于linux - 如何在 Redhat Linux 中获取线程 CPU 利用率指标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/765781/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com