Linux下模拟CPU占用100%
测试中会存在一些场景要求将CPU占用100%,那我们如果才能将测试机器的CPU打满呢?
测试之前,首先通过top命令看下机器的CPU占用情况。
我们先了解下第三行数据代表的实际意义:
1.5% us — 用户空间占用CPU的百分比。 1.5% sy — 内核空间占用CPU的百分比。 0.0% ni — 改变过优先级的进程占用CPU的百分比 96.3% id — 空闲CPU百分比 0.7% wa — IO等待占用CPU的百分比 0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比 0.0% si — 软中断(Software Interrupts)占用CPU的百分比
由此,我们可以看出当前这台机器的CPU空间率为96.3%,离CPU占用100%还有很大空间。
下面就记录下如何使CPU占用达到100%。
1、编写脚本
在Linux机器上touch run_cpu.sh
脚本内容如下:
#!/bin/bash function while_test() { while ((1)); do i=2; done } function run_cpu() { for ((i=0; i<$1; i++)); do while_test & done } run_cpu $1
2、执行脚本
在文件所在目录执行脚本:
sh run_cpu.sh 8 (这里假设当前机器是8核,这里的数值执行的时候根据cpu实际核数做调整)
3、再次查看cpu使用情况
由下图可以看出,cpu空闲率已经达到0,已经实现了我想要的效果。
4、提高测试脚本进程运行优先级
上面3不实现之后发现,虽然CPU占用已经100%,但是我要测试的程序还是能够正常运行,并没有出现程序进程被杀掉等情况。
此时我仔细看了下,发现测试脚本进程和测试应用程序进程的nice值都是0,我想提高下测试脚本运行进程优先级,看下在争夺CPU资源的时候是否会杀死低优先级的进程。
执行命令:
renice -20 -p 5200 #将PID为5200的进程的nice设为-20,-20是最高优先级
将所有测试脚本的运行进程都提高后,发现程序还是能正常运行,并不会杀死优先级低的进程。。。
这个问题暂时就到这,后面再研究下是否有其他方法。