如何在Linux服务器上生成CPU负载


13

我想测试服务器上的虚假负载,我正在寻找一些会在系统上产生CPU负载的老化或基准命令行实用程序。

我希望仅能够老化CPU(无硬盘负载,网络和co),并且可以设置负载运行的时间。意思是我想要可以运行的东西:系统上的CPU负载10分钟。

有任何想法吗?

Answers:



6

我更喜欢浮点运算:

for i in `seq 64`; do perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $sqrt = sqrt($j) for (1..9999); }' & done

请注意您的CPU编号:-)


time该怎么办?
塞巴斯蒂安

2

这是我经常想要做的事情。但是我没有一个好的方法。我只是编写了一个小的Perl脚本,该脚本将循环播放我想要的时间。

例如(持续10分钟):

perl -e '$z=time()+(10*60); while (time()<$z) { $j++; $j *= 1.1 for (1..9999); }'

当然,如果您有n个处理器,则可能需要添加一个bash循环来创建那么多进程:

#!/bin/bash
# e.g. for 4 processors
for i in 1 2 3 4; do
    perl -e .... &
done
wait

4
次要点:for循环不会按顺序而不是并行运行它们吗?我认为(perl -e '...' &),将它们从外壳中分离出来可以完成这项工作。
SmallClanger 2010年

你是对的。我会改正我的帖子。感谢您指出了这一点。
PP。



1

这是我已经发布的一种纯shell方法(至少是bashksh),用于在此处回答类似的问题

# Usage: lc [number_of_cpus_to_load [number_of_seconds] ]
lc() {
  (
    pids=""
    cpus=${1:-1}
    seconds=${2:-60}
    echo loading $cpus CPUs for $seconds seconds
    trap 'for p in $pids; do kill $p; done' 0
    for ((i=0;i<cpus;i++)); do while : ; do : ; done & pids="$pids $!"; done
    sleep $seconds
  )
}
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.