我想测试服务器上的虚假负载,我正在寻找一些会在系统上产生CPU负载的老化或基准命令行实用程序。
我希望仅能够老化CPU(无硬盘负载,网络和co),并且可以设置负载运行的时间。意思是我想要可以运行的东西:系统上的CPU负载10分钟。
有任何想法吗?
我想测试服务器上的虚假负载,我正在寻找一些会在系统上产生CPU负载的老化或基准命令行实用程序。
我希望仅能够老化CPU(无硬盘负载,网络和co),并且可以设置负载运行的时间。意思是我想要可以运行的东西:系统上的CPU负载10分钟。
有任何想法吗?
Answers:
您可以下载并安装“压力”实用程序...它允许您从命令行生成CPU,内存,磁盘和IO负载。
我更喜欢浮点运算:
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脚本,该脚本将循环播放我想要的时间。
例如(持续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
for
循环不会按顺序而不是并行运行它们吗?我认为(perl -e '...' &)
,将它们从外壳中分离出来可以完成这项工作。
我建议使用Stress-ng,它具有比Stress更多的功能,并且可以使用更多的操作系统。
这是我已经发布的一种纯shell方法(至少是bash
&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
)
}
time
该怎么办?