1) STEPがWareHouseを割り切る数でないと、ロードするWareHouseの数がズレる。
⇒450WHを100STEPで実行すると実際にロードされるのは500WH、とか。
2) (WareHouse/STEP) * 3 + 1のロードを一斉にかける。
⇒2CPUの仮想環境とかでやるとひどいことに。
で、少しチューニングしたものを書いてみた。
1) 1STEPずつ走らせる。
2) プロセス数のMAXを指定して、MAXより少なければロード用のプロセスを上げる。
MAXに達していたら指定時間SLEEPしてプロセス数をチェック。
抜群に速くなった。やってみるもんだ。
#!/bin/bash
maxProcs=2
interval=60
LOAD="/root/tpcc-mysql/tpcc_load"
DB=tpcc10
USER=tpc
PASS=test
WH=10
function gotohell {
while true ; do
if [ `/bin/ps auxww | /bin/grep -c [t]pcc_load` -lt ${maxProcs} ] ; then
/usr/bin/nohup $1 >> $2 &
break
fi
/bin/sleep ${interval}
done
}
gotohell "$LOAD localhost $DB $USER $PASS $WH 1 1 $WH" "/tmp/1.out"
for n in `/usr/bin/seq 1 $WH` ; do
gotohell "$LOAD localhost $DB $USER $PASS $WH 2 $n $n" "/tmp/2-$n.out"
gotohell "$LOAD localhost $DB $USER $PASS $WH 3 $n $n" "/tmp/3-$n.out"
gotohell "$LOAD localhost $DB $USER $PASS $WH 4 $n $n" "/tmp/4-$n.out"
done
0 件のコメント :
コメントを投稿