2012年5月5日土曜日

tpcc-mysqlのデータロード

tpcc-mysql同梱のload.shは色々問題があったのでメモ。

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 件のコメント :

コメントを投稿