[Linux小技巧] 一行命令让CPU占用率达到100%

转至:

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

原文地址:https://www.cnblogs.com/my-first-blog-lgz/p/13884537.html