サーバーの偽の負荷をテストしたいのですが、システムにCPU負荷を生成するバーンインまたはベンチマークコマンドラインユーティリティを探しています。
CPUのみをバーンインできるようにしたい(ハードディスクの負荷、ネットワーク、およびcoを使用しない)こと、および負荷を実行する期間を設定できるようにしたい。つまり、システムでCPU負荷を10分間実行できるようにする必要があります。
何か案は?
"stress"ユーティリティをダウンロードしてインストールできます...コマンドラインからCPU、メモリ、ディスク、およびIO loadを生成できます。
私は浮動小数点演算を好みます:
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
私はstress-ngを使用することをお勧めします。これはstressよりもはるかに多くの機能を備えており、はるかに多くのオペレーティングシステムを実行できます。
これは、同様の質問への返信として既に投稿した純粋なシェル(少なくともbash
&ksh
)の方法です here
# 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
)
}