測試中會存在一些場景要求將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是最高優先級
將所有測試腳本的運行進程都提高后,發現程序還是能正常運行,並不會殺死優先級低的進程。。。
這個問題暫時就到這,后面再研究下是否有其他方法。