我已经编写了一些多线程测试,现在我想确保该测试的最高 CPU 使用率等于100 * CPU_NUMBER
当前机器的最高 CPU 使用率。可以做吗?
UPD 0:我说的是Linux系统。
答案1
我认为您正在寻找sar
. SAR 代表系统活动报告。它在类 UNIX 操作系统中用于报告 CPU、内存和 IO 使用情况,由sysstat
.
然后,sysatat
可以配置为监视各个进程。关联
收集的频率以及 sar 保留报告的时间由第一个设置决定。
您只是想注意,这样的数据收集不是“免费的”,所以我不会将其保留在生产服务器上。
配置完成后,您可以使用命令sar
和grep
轻松从脚本中的报告中提取数据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 数量。