1. 程式人生 > 其它 >Linux下模擬CPU佔用100%

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是最高優先順序

將所有測試指令碼的執行程序都提高後,發現程式還是能正常執行,並不會殺死優先順序低的程序。。。

這個問題暫時就到這,後面再研究下是否有其他方法。