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是最高优先级

将所有测试脚本的运行进程都提高后,发现程序还是能正常运行,并不会杀死优先级低的进程。。。

这个问题暂时就到这,后面再研究下是否有其他方法。

原文地址:https://www.cnblogs.com/daydayup-lin/p/14993230.html