3 min read

Linux 負載測試

針對 Ubuntu Server 不安裝任何額外軟體(如 stress、sysbench)的情況下,利用內建工具讓 CPU 滿載產熱其實非常簡單。現代主機/伺服器 CPU 核心數通常較多,如果只跑單一程序負載/溫度會上不去,所以關鍵在於「平行執行」,讓所有核心同時運作。

以下提供三種方法,依照產熱效率由低到高排列:

方法一:使用yes 指令(最簡單)

yes 是一個內建指令,原本是用來自動回答"y"的,但如果把輸出導向 /dev/null,它就會瘋狂佔用 CPU 線程。

1. 啟動壓力測試(單行指令,自動吃滿所有核心)

 for i in $(seq $(nproc)); do timeout 60s yes > /dev/null & done
  • nproc:自動偵測你的CPU 有幾個執行緒。
  • for loop:根據核心數,在背景啟動對應數量的 yes 程序。
  • timeout <time_length>:設定持續時間
  • &:讓它們在背景執行。

2. 監控系統

watch -n 1 sensors 
  • 假設系統未預裝任何軟體時使用。
  • 如果想要更清楚的圖表,推薦安裝 btop,並且在終端輸入 btop 就可以清楚地看到漂亮的介面了。

3. 中斷/停止測試

sudo killall yes
  • 需要中斷時可以輸入這行停止操作,但僅建議用於 yes 場景
  • 其他類型的負載可能誤殺必要的進程,建議使用 timeout 自動停止

方法二:使用sha1sum 計算雜湊(產熱效率更高,推薦)

單純的邏輯迴圈(如 yes)有時候產生的熱量不如「數學運算」。計算雜湊值(Hash)會大量使用ALU(算術邏輯單元),通常能讓溫度升得更快。

1. 啟動壓力測試(單行指令,自動吃滿所有核心)

for i in $(seq $(nproc)); do timeout 60s sha1sum /dev/zero & done
  • 這會不斷地計算/dev/zero 的 SHA-1 值,對 CPU 負載很重。

2. 停止測試

建議使用 timeout 參數以自動停止,因為 killall 可能誤殺其他進程

方法三:使用 Python(如果系統有內建/安裝 Python3)

如果你的 Ubuntu Server 有安裝 Python 3,可以用 Python 跑數學運算,這通常比 Shell 指令更暴力一點。

1. 啟動壓力測試

for i in $(seg $(nproc)); do python3 -c "while True: x=2**20" & done
  • 這會讓每個核心不斷計算2的20次方。

2. 停止測試

尤其建議使用 timeout 參數以自動停止, killall 會誤殺其他調用python的進程

測試建議流程

1. 開啟兩個終端機視窗(或SSH Session)

  • 視窗 A:輸入指令監控設備。
  • 視窗 B:準備輸入壓力測試指令。

2. 視窗 B 執行壓力測試。

  • 推薦方法: sha1sum

3. 觀察視窗 A:

  • 看溫度從待機(例如 35°C)爬升到50°C、60°C...
  • 關鍵點:觀察當溫度跨過你設定的節點(例如 60°C)時,風扇轉速(RPM)是否如預期地增加?
  • 如果溫度降下來,轉速是否也慢慢降下來?