如何检测进程在其生命周期内的最高 CPU 使用率

如何检测进程在其生命周期内的最高 CPU 使用率

我已经编写了一些多线程测试,现在我想确保该测试的最高 CPU 使用率等于100 * CPU_NUMBER当前机器的最高 CPU 使用率。可以做吗?

UPD 0:我说的是Linux系统。

答案1

我认为您正在寻找sar. SAR 代表系统活动报告。它在类 UNIX 操作系统中用于报告 CPU、内存和 IO 使用情况,由sysstat.

然后,sysatat可以配置为监视各个进程。关联

收集的频率以及 sar 保留报告的时间由第一个设置决定。

您只是想注意,这样的数据收集不是“免费的”,所以我不会将其保留在生产服务器上。

配置完成后,您可以使用命令sargrep轻松从脚本中的报告中提取数据awk

您没有指定您正在使用什么操作系统,因此我鼓励您搜索如何在您的发行版上设置 sar/sysstat。

答案2

pidstat它通常是程序包的一部分,sysstat可以监视单个进程 ID 并打印其每个线程的统计信息。例如,对于正在运行的 Chrome 浏览器:

$ pidstat -t -p 27680 1
17:17:36   TGID    TID    %usr %system  %guest    %CPU CPU  Command
17:17:37  27680      -   13.00    3.00    0.00   16.00   0  chrome
17:17:37      -  27680    9.00    1.00    0.00   10.00   0  |__chrome
17:17:37      -  27712    2.00    1.00    0.00    3.00   1  |__Chrome_IOThread
17:17:37      -  27714    2.00    0.00    0.00    2.00   1  |__CompositorTileW

这个 1 秒的示例有许多 cpu 为 0% 的线程,我已将其删除。我理解100%意味着只有1个cpu被完全占用。有一个-I标志可以将其除以 cpu 数量。

相关内容