我想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,可以运行更多的操作系统。
这里是一个纯shell(至lessbash
& ksh
)的方式,我已经在这里发布了对类似问题的回复
# 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 ) }