我需要编写压力测试实用程序来将所有 CPU 设置为特定的负载值,并且需要每隔 1 秒将 CPU 负载显示到终端窗口(这取决于用户传递的参数),以便用户可以验证 CPU 负载
我将 CPU 负载设置为 80%(基于用户输入),并在后台运行 Stress-ng 实用程序特定时间(120 秒)
stress-ng -c 8 -l 80 --timeout 120s &
现在我如何才能每隔 1 秒将所有 CPU 负载(这里我正在对 8 核进行压力测试)信息显示到终端中,以便用户可以验证他使用实用程序设置的任何负载值,所有 CPU 当前都以相同的负载运行
答案1
根据您的处理器品牌和型号,您可能能够使用 turbostat(linux-tools-common 包)来获取所需内容。它适用于大多数最新的 Intel 处理器,如果您的 turbostat 版本足够新,则还适用于许多 AMD 处理器。
例如,我在 6 核 12 CPU Intel 10600K 处理器上以 273 赫兹的工作/睡眠频率运行 12 个程序实例,利用率为 80%,并且每次采样率为 6 秒:
$ sudo turbostat --quiet --show Core,CPU,Busy%,Bzy_MHz,IRQ,PkgWatt,PkgTmp --interval 6
Core CPU Busy% Bzy_MHz IRQ PkgTmp PkgWatt
- - 78.55 4800 90958 67 85.25
0 0 78.53 4800 7598 67 85.25
0 6 78.55 4800 7579
1 1 78.55 4800 7570
1 7 78.56 4800 7568
2 2 78.55 4800 7594
2 8 78.56 4800 7575
3 3 78.54 4800 7570
3 9 78.56 4800 7574
4 4 78.55 4800 7569
4 10 78.57 4800 7564
5 5 78.54 4800 7563
5 11 78.55 4800 7634
Core CPU Busy% Bzy_MHz IRQ PkgTmp PkgWatt
- - 78.54 4800 90801 67 85.27
0 0 78.55 4800 7567 67 85.27
0 6 78.54 4800 7575
1 1 78.55 4800 7562
1 7 78.55 4800 7576
2 2 78.54 4800 7563
2 8 78.54 4800 7569
3 3 78.54 4800 7563
3 9 78.54 4800 7563
4 4 78.54 4800 7564
4 10 78.55 4800 7571
5 5 78.55 4800 7562
5 11 78.54 4800 7566
Core CPU Busy% Bzy_MHz IRQ PkgTmp PkgWatt
- - 78.53 4800 90805 68 85.00
0 0 78.51 4800 7567 68 85.00
0 6 78.56 4800 7574
1 1 78.57 4800 7565
1 7 78.43 4800 7571
2 2 78.45 4800 7565
2 8 78.58 4800 7570
3 3 78.55 4800 7564
3 9 78.53 4800 7566
4 4 78.54 4800 7564
4 10 78.54 4800 7570
5 5 78.54 4800 7561
5 11 78.55 4800 7568
Core CPU Busy% Bzy_MHz IRQ PkgTmp PkgWatt
- - 78.50 4800 90765 68 84.39
0 0 78.34 4800 7569 68 84.39
0 6 78.58 4800 7573
1 1 78.59 4800 7560
1 7 78.36 4800 7570
2 2 78.52 4800 7563
2 8 78.55 4800 7567
3 3 78.30 4800 7535
3 9 78.58 4800 7566
4 4 78.54 4800 7561
4 10 78.55 4800 7569
5 5 78.55 4800 7564
5 11 78.54 4800 7568