All pastes #373693 Raw Edit

Stuff

public text v1 · immutable
#373693 ·published 2007-02-26 23:07 UTC
rendered paste body
#!/bin/bash
C=hp #clustername
G=group #groupname
NG=1 #number of groups 
NV=32 #number of volumes per group
RA="8M" #Read ahead
VSIZE="10G" #volume size
VTYPE="shared"
L="rain1" #layout
ROOTDIR="/root/results/"
CONFDIR="$ROOTDIR/conf/$L/" #directory to store conf
SU="16"
GDIR="$CONFDIR/${SU}k/"
BASENODENAME=o185i
NODES="$BASENODENAME/192-195:197-224/"
#DISKS="/dev/sda4 /dev/sdb"
DISKS="/dev/sdb"
USEDNODES=/tmp/usednodes
ONE_VOL_PER_HOST=1
NODELIST="";

source /etc/profile.d/cluster.sh

getNode() {
grep "device node" $2  | cut -d "\"" -f 2 | head -n $1 | tail -1
}


genKANodeList() {
NODELIST="";
for i in `seq 1 $1`; do
        k=$((191 + $i));

        #skipping node 196
        if [ $k -gt 195 ]; then
        k=$(($k +1));
        fi

        NODELIST="$NODELIST -m ${BASENODENAME}${k} ";
done
}

genNodeList() {
NODELIST="";
for i in `seq 1 $1`; do 
        k=$((191 + $i));

        #skipping node 196
        if [ $k -gt 195 ]; then
        k=$(($k +1));
        fi

        NODELIST="$NODELIST ${BASENODENAME}${k} ";
done
}

#NODELIST=$(exa_unexpand $NODELIST)

start() {
for i in `seq 1 $NG`; do
        exa_dgcreate --by -g $GDIR/${NG}groupes$i.conf $C:$G$i -s --really-create &&
        for j in `seq 1 $NV`; do
                exa_vlcreate --access="$VTYPE" $C:$G$i:v$j -s $VSIZE --readahead=$RA;
                NODE=$(getNode $j $GDIR/${NG}groupes$i.conf)

                if [ $ONE_VOL_PER_HOST -eq 1 ]; then
                        cur_node=$j;
                        while ( grep $NODE $USEDNODES ); do
                                cur_node=$(( $cur_node + 1));
                                NODE=$(getNode $cur_node $GDIR/${NG}groupes$i.conf)
                        done
                fi
                echo $NODE >> $USEDNODES
                exa_vlstart $C:$G$i:v$j -n $NODE
        done;
done
}

stop() {
for i in `seq 1 $NG`; do
        exa_dgstop -r $C:$G$i &&
        exa_dgdelete -r --by --real $C:$G$i
done
}

configure() {
if [ $NG -eq 1 ]; then
G="${G}1";
fi
for i in `seq 1 $NG`; do
mkdir -p $GDIR
#export SU
exa_makeconfig --cluster $C --node $NODES --realdevice "$DISKS" -g $G -G $i/$NG -y $L > $GDIR/${NG}groupes$i.conf &&
perl -pi -e 's/ork\">/ork\" su_size=\"$ENV{'SU'}k\">/g' $GDIR/${NG}groupes$i.conf
done
}

cleanparaseq(){
ssh -l root $NKA -- killall -9 paraseq >/dev/null 2>&1
while [ $(pidof paraseq) ]; do
killall -9 paraseq
sleep 0
done
}

statparaseq(){
CLIENT=$1
TEXTMODE=$2
NBNODES=$(exa_expand $NODES | wc -w)
NBDISKS=$(echo $DISKS | wc -w)
NBDISKS=$(( $NBDISKS * $NBNODES ))
OUTDIR=$ROOTDIR/volumes/${NBDISKS}disks/$L/${SU}k/
genKANodeList $CLIENT
KALIST=$NODELIST
SUM_PERF=$(grep "Global stats" $OUTDIR/$CLIENT-paraseq-$TEXTMODE | awk '{print $9}' | head -1 | sed 's/\./,/')
MIN_PERF=$(grep "Global stats" $OUTDIR/$CLIENT-paraseq-$TEXTMODE | awk '{print $9}' | tail -1 | sed 's/\./,/')
echo "$CLIENT $SUM_PERF $MIN_PERF"
}

doparaseq() {
CLIENT=$1
MODE=$2
cleanparaseq
if [ $MODE = "r" ]; then
TEXTMODE="read"
else
TEXTMODE="write"
fi
echo    "                                                                  Read (sum) | Read"
echo -n "Running $CLIENT instances of paraseq (mode $TEXTMODE) @ su=${SU}k: "
NBNODES=$(exa_expand $NODES | wc -w)
NBDISKS=$(echo $DISKS | wc -w)
NBDISKS=$(( $NBDISKS * $NBNODES ))
OUTDIR=$ROOTDIR/volumes/${NBDISKS}disks/$L/${SU}k/
mkdir -p $OUTDIR
date >  $OUTDIR/$CLIENT-paraseq-$TEXTMODE
paraseq --mode server --number_client $1  -d 100 > $OUTDIR/$CLIENT-paraseq-$TEXTMODE &
genKANodeList $CLIENT
KALIST=$NODELIST
rshp2 -c ssh -l root $KALIST -- paraseq --by --mode client --server_name $HOSTNAME -$MODE -s -b 1024 -i 1024 '/dev/exa/g*/v*' >/dev/null
SUM_PERF=$(grep "Global stats" $OUTDIR/$CLIENT-paraseq-$TEXTMODE | awk '{print $9}' | head -1 | sed 's/\./,/')
MIN_PERF=$(grep "Global stats" $OUTDIR/$CLIENT-paraseq-$TEXTMODE | awk '{print $9}' | tail -1 | sed 's/\./,/')
echo "$SUM_PERF $MIN_PERF"
date >>  $OUTDIR/$CLIENT-paraseq-$TEXTMODE
cleanparaseq
}

statfs3() {
CLIENT=$1
NBNODES=$(exa_expand $NODES | wc -w)
NBDISKS=$(echo $DISKS | wc -w)
NBDISKS=$(( $NBDISKS * $NBNODES ))
OUTDIR=$ROOTDIR/volumes/${NBDISKS}disks/$L/${SU}k/
WRITE_PERF=0; for i in `grep $BASENODENAME $OUTDIR/$CLIENT-bonnie | grep -v "," | awk '{print $3}' `; do WRITE_PERF=`echo "$WRITE_PERF + $i" |bc` ; done;
READ_PERF=0; for i in `grep $BASENODENAME $OUTDIR/$CLIENT-bonnie | grep -v "," | awk '{print $5}'`; do READ_PERF=`echo "$READ_PERF + $i" |bc` ; done;
WRITE_PERF=$( echo "scale=2; $WRITE_PERF / 1024" | bc |  sed 's/\./,/')
READ_PERF=$( echo "scale=2; $READ_PERF / 1024" | bc  |  sed 's/\./,/')
echo "$CLIENT : $READ_PERF $WRITE_PERF"
}

dofs3test() {
CLIENT=$1
echo    "                                                    Read  | Write"
echo -n "Running $CLIENT instances of bonnie++ @ su=${SU}k: "
NBNODES=$(exa_expand $NODES | wc -w)
NBDISKS=$(echo $DISKS | wc -w)
NBDISKS=$(( $NBDISKS * $NBNODES ))
OUTDIR=$ROOTDIR/volumes/${NBDISKS}disks/$L/${SU}k/
mkdir -p $OUTDIR
genKANodeList $CLIENT
KALIST=$NODELIST
date >$OUTDIR/$CLIENT-bonnie
rshp2 -c ssh -l root $KALIST -- 'mkfs.ext3 /dev/exa/g*/v* ; mount /dev/exa/g*/v* /mnt/ext3' >/dev/null 2>&1
rshp2 -c ssh -l root $KALIST -- bonnie++ -u 0 -n 0 -f -w -d /mnt/ext3 >$OUTDIR/$CLIENT-bonnie 2>/dev/null
rshp2 -c ssh -l root $KALIST -- 'umount /mnt/ext3';
date >>$OUTDIR/$CLIENT-bonnie
WRITE_PERF=0; for i in `grep $BASENODENAME $OUTDIR/$CLIENT-bonnie | grep -v "," | awk '{print $3}' `; do WRITE_PERF=`echo "$WRITE_PERF + $i" |bc` ; done;
READ_PERF=0; for i in `grep $BASENODENAME $OUTDIR/$CLIENT-bonnie | grep -v "," | awk '{print $5}'`; do READ_PERF=`echo "$READ_PERF + $i" |bc` ; done;

WRITE_PERF=$( echo "scale=2; $WRITE_PERF / 1024" | bc |  sed 's/\./,/')
READ_PERF=$( echo "scale=2; $READ_PERF / 1024" | bc  |  sed 's/\./,/')
echo "$READ_PERF $WRITE_PERF"
}

############ MAIN
rm -f $USEDNODES
case $1 in
        su)
        shift;
        SU="$1"
        export SU
        shift
        ;;
esac
case $1 in
        start)
                start
        ;;
        stop)
                stop
        ;;
        configure)
                configure
        ;;
        paraseq)
                shift
                doparaseq $@
        ;;
        fs)
                shift
                dofs3test $@
        ;;
        bench)
                 for mode in r w; do
                        for i in  1 4 8 16 32; do
                                paraseq $i $mode;
                        done;
                done
                for i in 1 4 8 16 32; do
                        fs $i
                done
        ;;
        statfs3)
                shift
                statfs3 $@
        ;;
        statparaseq)
                for i in 1 4 8 16 32; do
                statparaseq $i read;
                done
                for i in 1 4 8 16 32; do
                statparaseq $i write;
                done;
        ;;
        *)
        echo "$0 {configure|start|stop|dofs3|stopfs3}"
        exit -1
        ;;
esac