
我目前正在處理調試 Cacti 安裝並想要建立 CPU 負載來調試我的 CPU 使用率圖表。
我嘗試簡單地運行cat /dev/zero > /dev/null
,效果很好,但只利用 1 個核心:
是否有更好的方法來測試/最大化負載下的系統資源?
答案1
嘗試stress
它幾乎相當於Windows consume.exe
:
oliver$ ./stress --cpu 3
stress: info: [18472] dispatching hogs: 3 cpu, 0 io, 0 vm, 0 hdd
答案2
無需安裝任何額外的軟體包,您的舊 shell 就可以單獨完成此操作。
這一行將以100%加載您的四個核心1 :
for i in 1 2 3 4; do while : ; do : ; done & done
它的工作原理非常簡單,它啟動四個無限循環。他們每個人都在重複空指令(:
)。每個循環都能以 100% 載入 CPU 核心。
如果您使用bash
,ksh93
以及其他支援範圍的 shell(即不dash
或更舊的ksh
),則可以使用以下不可移植語法:
for i in {1..4}; do ...
如果與 不同,請替換4
為您要載入的 CPU 數量4
。
假設您在啟動這些循環之一時沒有正在執行的背景作業,則可以使用該命令停止負載產生:
for i in 1 2 3 4; do kill %$i; done
回答 @underscore_d 的評論,這裡是一個增強版本,它大大簡化了停止負載的過程,並且還允許指定超時(預設 60 秒Control)C。這個 shell 函數至少可以在bash
和下工作ksh
。
# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
(
pids=""
cpus=${1:-1}
seconds=${2:-60}
echo loading $cpus CPUs for $seconds seconds
trap 'for p in $pids; do kill $p; done' 0
for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
sleep $seconds
)
}
1請注意,由於 CPU 每核心支援多個執行緒(超執行緒),作業系統會將負載分派給所有虛擬 CPU。在這種情況下,載入行為取決於實作(每個執行緒可能報告為 100% 繁忙或不繁忙)。。
答案3
一種替代方法是
openssl speed -multi $(grep -ci processor /proc/cpuinfo)
或(如果 nproc 存在)
openssl speed -multi $(nproc --all)
OpenSSL 幾乎總是存在於當今的發行版中,因此不需要額外的軟體包。
答案4
開始二
sha1sum /dev/zero &
系統中每個核心的命令。
停止
killall sha1sum
或者
kill sha1sum