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

將所有測試腳本的運行進程都提高后,發現程序還是能正常運行,並不會殺死優先級低的進程。。。

 

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM