对于如下有4颗核的CPU
~ # cat /proc/cpuinfo | grep processor
processor : 0
processor : 1
processor : 2
processor : 3
可以使用如下命令将4颗核里CPU利用率都提升到接近100%
~ # busybox taskset 0x1 dd if=/dev/zero of=/dev/null &
~ # busybox taskset 0x2 dd if=/dev/zero of=/dev/null &
~ # busybox taskset 0x4 dd if=/dev/zero of=/dev/null &
~ # busybox taskset 0x8 dd if=/dev/zero of=/dev/null &
执行如上命令后可以通过mpstat观察CPU的利用率,可以看到,每颗核的利用率都达100%(cpu利用率=100%-%idle)
~ # mpstat -P ALL 1
Linux 3.18.21 ((none)) 12/16/21 _mips_ (4 CPU)
14:07:43 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
14:07:44 all 21.78 0.50 76.73 0.00 0.00 0.99 0.00 0.00 0.00
14:07:44 0 26.73 0.00 73.27 0.00 0.00 0.00 0.00 0.00 0.00
14:07:44 1 27.72 0.00 72.28 0.00 0.00 0.00 0.00 0.00 0.00
14:07:44 2 15.84 0.00 80.20 0.00 0.00 3.96 0.00 0.00 0.00
14:07:44 3 16.83 1.98 81.19 0.00 0.00 0.00 0.00 0.00 0.00
14:07:44 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %idle
14:07:45 all 19.55 0.50 78.22 0.00 0.00 1.73 0.00 0.00 0.00
14:07:45 0 21.78 0.00 78.22 0.00 0.00 0.00 0.00 0.00 0.00
14:07:45 1 22.77 0.00 77.23 0.00 0.00 0.00 0.00 0.00 0.00
14:07:45 2 15.84 0.00 80.20 0.00 0.00 3.96 0.00 0.00 0.00
14:07:45 3 17.82 1.98 77.23 0.00 0.00 2.97 0.00 0.00 0.00
使用top命令观察到的CPU使用情况如下,空闲率idle为0%(即CPU使用率已达100%)
Mem: 244580K used, 8264K free, 1340K shrd, 9720K buff, 135636K cached
CPU: 18.3% usr 80.2% sys 0.4% nic 0.0% idle 0.0% io 0.0% irq 0.9% sirq
Load average: 14.66 15.07 13.78 5/127 760
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
755 718 root R 1376 0.5 0 24.9 {exe} dd if /dev/zero of /dev/nul
756 718 root R 1376 0.5 1 24.9 {exe} dd if /dev/zero of /dev/nul
757 718 root R 1376 0.5 2 24.9 {exe} dd if /dev/zero of /dev/nul
758 718 root R 1376 0.5 3 23.1 {exe} dd if /dev/zero of /dev/nul
408 349 root S 457m184.3 3 1.1 sonia
760 718 root R 1388 0.5 3 0.7 top -d 1
397 349 root S 59744 23.5 3 0.0 net3g
399 349 root S 11244 4.4 3 0.0 /usr/sbin/vnstatd --alwaysadd -p
703 422 root S 3192 1.2 3 0.0 /usr/sbin/sshd -R
422 1 root S 3132 1.2 3 0.0 /usr/sbin/sshd
713 703 root S 2192 0.8 3 0.0 -dsh
718 713 root S 1400 0.5 3 0.0 {busybox} -/bin/sh
759 718 root T 1392 0.5 3 0.0 mpstat -P ALL 1
1 0 root S 1388 0.5 3 0.0 init
144 1 root S 1384 0.5 3 0.0 watchdog -T 30 -t 3 /dev/watchdog
349 1 root S 1384 0.5 3 0.0 {rcS_post} /bin/sh /usr/etc/init.
396 1 root S 1372 0.5 3 0.0 klogd
398 349 root S 1308 0.5 3 0.0 /usr/sbin/ubusd
681 1 root S 1064 0.4 3 0.0 /mnt/userdata/iperf -s
15 2 root SW 0 0.0 2 0.0 [ksoftirqd/2]
Tips1:taskset——可以将命令操作或者已经存在的进程绑定到指定CPU上运行
~ # busybox taskset
BusyBox v1.19.4 (2021-12-16 11:48:48 CST) multi-call binary.
Usage: taskset [-p] [MASK] [PID | PROG ARGS]
Set or get CPU affinity
-p Operate on an existing PID
Tips2:mpstat——可以统计每个CPU的使用情况
~ # mpstat --help
BusyBox v1.19.4 (2021-12-16 11:48:48 CST) multi-call binary.
Usage: mpstat [-A] [-I SUM|CPU|ALL|SCPU] [-u] [-P num|ALL] [INTERVAL [COUNT]]
Per-processor statistics
-A Same as -I ALL -u -P ALL
-I SUM|CPU|ALL|SCPU Report interrupt statistics
-P num|ALL Processor to monitor
-u Report CPU utilization
Tips3:特殊这边zero与null
/dev/null设备:/dev/null是伪设备,相当于黑洞,of到该设备不会产生IO
/dev/zero设备:/dev/zero是一个伪设备,它只产生空字符流,对它不会产生IO
命令dd if=/dev/zero of=/dev/null并不会产生读写IO,它只消耗CPU(主要消耗%usr和%sys)
利用这两个特殊设备还可以进行磁盘、U盘等存储设备的读写能力测试,参考命令如下