Linux下模擬CPU佔用100%
阿新 • • 發佈:2021-07-10
測試中會存在一些場景要求將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是最高優先順序
將所有測試指令碼的執行程序都提高後,發現程式還是能正常執行,並不會殺死優先順序低的程序。。。
這個問題暫時就到這,後面再研究下是否有其他方法。