我想在Linux机器上创建一个接近100%的负载。这是四核系统,我要所有核都全速运转。理想情况下,CPU负载将持续一段指定的时间,然后停止。我希望bash里有什么妙招。我在想某种无限循环。


当前回答

这对我来说很有用:

bash -c 'for (( I=100000000000000000000 ; I>=0 ; I++ )) ; do echo $(( I+I*I )) & echo $(( I*I-I )) & echo $(( I-I*I*I )) & echo $(( I+I*I*I )) ; done' &>/dev/null

它只使用bash。

其他回答

你也可以

dd if=/dev/zero of=/dev/null

要运行更多这样的程序,将负载放在更多的内核上,请尝试fork:

fulload() { dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null | dd if=/dev/zero of=/dev/null & }; fulload; read; killall dd

重复花括号中的命令的次数与您想要生成的线程数相同(这里是4个线程)。 简单的输入hit将停止它(只要确保没有其他dd在这个用户上运行,否则也会杀死它)。

加载3个核5秒:

seq 3 | xargs -P0 -n1 timeout 5 yes > /dev/null

这将导致许多write()系统调用带来的高内核(sys)负载。

如果你更喜欢用户区cpu负载:

seq 3 | xargs -P0 -n1 timeout 5 md5sum /dev/zero

如果你只是想继续加载,直到按下Ctrl-C:

seq 3 | xargs -P0 -n1 md5sum /dev/zero

虽然我迟到了,但这篇文章是谷歌搜索“在linux中生成负载”的顶级结果之一。

标记为solution的结果可以用来生成系统负载,我更倾向于使用sha1sum /dev/zero来对cpu内核施加负载。

其思想是从一个无限的数据流(例如。/dev/zero, /dev/urandom,…)该进程将尝试最大化一个cpu-core,直到进程终止。 要为更多内核生成负载,可以将多个命令连接在一起。

如。产生2个核心负荷: Sha1sum /dev/zero | Sha1sum /dev/zero

增加负载或消耗CPU 100%或X%

sha1sum /dev/zero &

在某些系统上,这将增加X%插槽的负载,在这种情况下,你必须多次运行相同的命令。

然后你可以通过输入命令查看CPU使用情况

top

释放负荷

killall sha1sum

我用压力来做这种事情,你可以告诉它要最大化多少内核。它还允许对内存和磁盘施加压力。

例如,对2个核心施加压力60秒

压力——cpu 2——超时60