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

我想testing服务器上的假加载,我正在寻找一些烧机或基准命令行实用程序,可能会在系统上产生CPU负载。

我希望能够只烧录CPU(没有硬盘负载,networking和公司),我将能够设置负载运行的时间段。 含义我想要能够运行的东西:系统上的CPU负载10分钟。

有任何想法吗?

您可以下载并安装“压力”实用程序…它允许您从命令行生成CPU,内存,磁盘和IO负载。

主页: http : //people.seas.harvard.edu/~apw/stress/

常见问题: http : //people.seas.harvard.edu/~apw/stress/FAQ

我prefere浮点操作:

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

注意你的CPU号码:-)

这是我经常想要做的事情。 但是我没有一个好的办法。 我只写了一个小的Perl脚本,只需要循环多less秒就可以了。

例如(10分钟):

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

当然,如果你有n个处理器,你可能需要添加一个bash循环来创build许多进程:

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

的cpuburn

“我如何运行一个命令,让它在N秒后中止(超时)?”

我build议使用stress-ng,它具有比压力更多的function,可以运行更多的操作系统。

http://kernel.ubuntu.com/~cking/stress-ng/

这里是一个纯shell(至lessbashksh )的方式,我已经在这里发布了对类似问题的回复

 # 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 ) }