for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done
說明:
cat /proc/cpuinfo |grep "physical id" | wc -l 可以獲得CPU的個數, 我們將其表示為N.
seq 1 N 用來生成1到N之間的數字
for i in `seq 1 N`; 就是循環執行命令,從1到N
dd if=/dev/zero of=/dev/null 執行dd命令, 輸出到/dev/null, 實際上只占用CPU, 沒有IO操作.
由於連續執行N個(N是CPU個數)的dd 命令, 且使用率為100%, 這時調度器會調度每個dd命令在不同的CPU上處理.
最終就實現所有CPU占用率100%
另外,上述程序的結束可以使用:
1. fg 后按 ctrl + C (因為該命令是放在后台執行)
2. pkill -9 dd
測試
top這個命令很常用,在第三行有顯示CPU當前的使用情況。
# top -bn 1 -i -c
top - 16:28:31 up 18 min, 1 user, load average: 7.93, 6.14, 3.79
Tasks: 119 total, 5 running, 114 sleeping, 0 stopped, 0 zombie
%Cpu(s): 29.1 us, 70.9 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 2880.0 total, 2273.3 free, 256.3 used, 350.5 buff/cache
MiB Swap: 0.0 total, 0.0 free, 0.0 used. 2573.9 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
2595 root 20 0 8016 416 352 R 94.4 0.0 3:57.13 dd if=/de+
2596 root 20 0 8016 396 332 R 88.9 0.0 3:59.14 dd if=/de+
2598 root 20 0 8016 436 372 R 88.9 0.0 3:59.18 dd if=/de+
2597 root 20 0 8016 412 352 R 83.3 0.0 3:59.24 dd if=/de+
2605 root 20 0 12420 3348 2828 R 11.1 0.1 0:00.03 top -bn 1+
如上所示,top命令可以看到總體的系統運行狀態和cpu的使用率 。
%us:表示用戶空間程序的cpu使用率(沒有通過nice調度)
%sy:表示系統空間的cpu使用率,主要是內核程序。
%ni:表示用戶空間且通過nice調度過的程序的cpu使用率。
%id:空閑cpu
%wa:cpu運行時在等待io的時間
%hi:cpu處理硬中斷的數量
%si:cpu處理軟中斷的數量
%st:被虛擬機偷走的cpu