手动提高CPU利用率到接近100%

对于如下有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盘等存储设备的读写能力测试,参考命令如下

    原文作者:江君
    原文地址: https://blog.csdn.net/qq_33586006/article/details/121983181
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞