我想在Linux机器上创建一个接近100%的负载。这是四核系统,我要所有核都全速运转。理想情况下,CPU负载将持续一段指定的时间,然后停止。我希望bash里有什么妙招。我在想某种无限循环。
当前回答
我用压力来做这种事情,你可以告诉它要最大化多少内核。它还允许对内存和磁盘施加压力。
例如,对2个核心施加压力60秒
压力——cpu 2——超时60
其他回答
我认为这个更简单。打开“终端”,输入以下命令并按“Enter”。
yes > /dev/null &
要充分利用现代CPU,一行命令是不够的,您可能需要重复该命令以耗尽所有CPU功率。
为了结束这一切,简单地说
killall yes
这个想法最初是在这里发现的,尽管它是为Mac用户设计的,但这应该也适用于*nix。
无限循环也是我的想法。一个看起来很怪异的例子是:
while :; do :; done
(:与true相同,不执行任何操作并以0退出)
你可以在子shell中调用它并在后台运行。执行$num_cores次数应该就足够了。在睡眠到所需的时间后,您可以将它们全部杀死,使用jobs -p获得pid(提示:xargs)
这对我来说很有用:
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。
一个核心(不调用外部进程):
while true; do true; done
两个核心:
while true; do /bin/true; done
后者只会让我的两个都达到50%…
这将使两者都达到100%:
while true; do echo; done
你也可以
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在这个用户上运行,否则也会杀死它)。