合 Linux下如何让你的CPU保持在90%以上
Tags: LinuxDocker压测stresssysbench
如何让你的CPU保持在90%以上的使用率呢?这在某些场景下非常有用。麦老师统计了一下,有如下几种办法。
命令一:“cat /dev/urandom | md5sum”或“dd if=/dev/zero of=/dev/null”
1 2 | for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do cat /dev/urandom | md5sum & done 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 2 3 4 5 | fg 后按 ctrl + C (因为该命令是放在后台执行) -- 删掉上述会话 pkill -9 dd pkill -9 cat |
注意:
- cat /proc/cpuinfo |grep "physical id" |wc -l 这个命令的目的是获取当前CPU的个数
- 但有的系统,cat /proc/cpuinfo打印出来的信息里没有包含"physical id",可能是其他值
- 这就需要根据实际打印出来的信息,修改grep "physical id"中的关键字
- 最终效果是执行这行命令,打印CPU个数
执行过程:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | [root@docker35 ~]# for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do cat /dev/urandom | md5sum & done for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done [1] 15061 [2] 15063 [3] 15065 [4] 15067 [5] 15069 [6] 15071 [7] 15073 [8] 15075 [root@docker35 ~]# for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done [9] 15091 [10] 15092 [11] 15093 [12] 15094 [13] 15095 [14] 15096 [15] 15097 [16] 15098 |
执行结果:
使用top命令查看: