ddn-ime-evaluation/benchmark/run_v2.sh

139 lines
4.8 KiB
Bash
Raw Normal View History

2018-10-24 09:12:52 +00:00
#!/bin/bash
function force_exit {
echo "Committing suicide (PID $$)"
exit
}
trap force_exit SIGINT
2018-11-13 07:35:25 +00:00
. ./config.sh
2018-10-24 09:12:52 +00:00
2018-11-13 15:07:38 +00:00
for COUNT in ${COUNT_ARR[@]}; do
2018-10-24 09:12:52 +00:00
for TYPE in ${TYPE_ARR[@]}; do
for NN in ${NN_ARR[@]}; do
for T in ${T_ARR[@]}; do
for PPN in ${PPN_ARR[@]}; do
for API in ${API_ARR[@]}; do
2018-12-11 21:30:58 +00:00
for FS in ${FS_ARR[@]}; do
BENCHFILE="./output_v2/COUNT:$COUNT-NN:$NN-PPN:$PPN-API:$API-FS:$FS-T:$T-TYPE:$TYPE.txt"
2018-10-24 09:12:52 +00:00
2018-11-14 11:27:24 +00:00
if [ ! -e "${BENCHFILE}" ]; then
2018-11-13 07:35:25 +00:00
OUTDIR="$(dirname $BENCHFILE)"
[ ! -d $OUTDIR ] && mkdir $OUTDIR
2018-10-24 09:12:52 +00:00
touch $BENCHFILE
2018-11-23 04:26:30 +00:00
if [[ $API == "IME" ]]; then
if [[ "read" == $TYPE ]]; then
IOR_TYPE_OPTS="-r -E -k"
2018-12-11 21:30:58 +00:00
#IOR_TYPE_OPTS="-w -k"
TESTFILE="ime:///gsfs/jtacquaviva/file_read"
ime-stat $TESTFILE
#ime-prestage -b $TESTFILE
#ime-stat $TESTFILE
elif [[ "write" == $TYPE ]]; then
IOR_TYPE_OPTS="-w"
CLEAN_UP_TESTFILE="/gsfs/jtacquaviva/file_write"
TESTFILE="ime:///gsfs/jtacquaviva/file_write"
fi
elif [[ $API == "MPIIO" ]]; then
if [[ "read" == $TYPE ]]; then
IOR_TYPE_OPTS="-r -E -k"
if [[ "gpfs" == $FS ]]; then
2018-12-12 12:43:42 +00:00
TESTFILE="/gsfs/jtacquaviva/file_read_gpfs"
2018-12-11 21:30:58 +00:00
elif [[ "fuse" == $FS ]]; then
TESTFILE="/ime/jtacquaviva/file_read"
2018-12-12 12:43:42 +00:00
ime-stat $TESTFILE
2018-12-11 21:30:58 +00:00
else
echo "Unknown FS $FS"
fi
2018-11-23 04:26:30 +00:00
TESTDIR="$(dirname $TESTFILE)"
elif [[ "write" == $TYPE ]]; then
IOR_TYPE_OPTS="-w"
2018-12-11 21:30:58 +00:00
if [[ "gpfs" == $FS ]]; then
2018-12-12 12:43:42 +00:00
TESTFILE="/gsfs/jtacquaviva/file_write_gpfs"
2018-12-11 21:30:58 +00:00
elif [[ "fuse" == $FS ]]; then
TESTFILE="/ime/jtacquaviva/file_write"
else
echo "Unknown FS $FS"
fi
2018-11-23 04:26:30 +00:00
TESTDIR="$(dirname $TESTFILE)"
fi
2018-10-24 09:12:52 +00:00
fi
2018-11-23 04:26:30 +00:00
IOR_PARAMS="-i 3 "
2018-11-14 11:27:24 +00:00
IOR_PARAMS+="-s 1 -t $T -b $(($DATASIZE / $PPN)) "
2018-12-11 21:30:58 +00:00
IOR_PARAMS+="-D 60 "
IOR_PARAMS+="-O stoneWallingWearOut=1 "
2018-11-13 07:35:25 +00:00
IOR_PARAMS+="-a $API "
2018-11-14 11:27:24 +00:00
#IOR_PARAMS+="-p " # preallocate -- preallocate file size
#IOR_PARAMS+="-e " # fsync -- perform sync operation after each block write
IOR_PARAMS+="-g " # intraTestBarriers -- use barriers between open, write/read, and close
IOR_PARAMS+="-H " # showHints -- show hints
IOR_PARAMS+="-z " # randomOffset -- access is to random, not sequential, offsets within a file
2018-11-23 04:26:30 +00:00
IOR_PARAMS+="-o $TESTFILE $IOR_TYPE_OPTS "
2018-11-14 11:27:24 +00:00
IOR_PARAMS+="-O summaryFile=${BENCHFILE}.json "
IOR_PARAMS+="-O summaryFormat=JSON "
2018-11-13 07:35:25 +00:00
if [[ "isc17" == ${hostname:0:5} ]]; then
2018-12-11 21:30:58 +00:00
#$MPIEXEC -np $NN --hosts $(hosts $NN) ./drop_caches.sh
$MPIEXEC -np $NN --hosts $(hosts $NN) echo 3 > /proc/sys/vm/drop_caches
2018-11-13 07:35:25 +00:00
MPIEXEC_PARAMS=" -ppn $PPN -np $(($NN * $PPN)) --hosts $(hosts $NN) -wdir $WD "
MPIEXEC_PARAMS+="-genv MV2_NUM_HCAS 1 "
MPIEXEC_PARAMS+="-genv MV2_CPU_BINDING_LEVEL core "
MPIEXEC_PARAMS+="-genv MV2_CPU_BINDING_POLICY scatter "
2018-12-11 21:30:58 +00:00
MPIEXEC_PARAMS+="-genv MV2_SHOW_CPU_BINDING 1 "
MPIEXEC_PARAMS+="-genv RDMAV_FORK_SAFE 1 "
MPIEXEC_PARAMS+="-genv RDMAV_HUGEPAGES_SAFE 1 "
2018-11-13 07:35:25 +00:00
elif [[ "m" == ${hostname:0:1} ]]; then
2018-11-13 14:48:24 +00:00
#MPIEXEC_PARAMS=" -ppn $PPN -n $(($NN * $PPN)) -wdir $WD --host $(hosts $NN) "
MPIEXEC_PARAMS=" -ppn $PPN -n $(($NN * $PPN)) -wdir $WD "
2018-11-13 07:35:25 +00:00
else
echo "Cluster $hostname is not supported. Quitting."
exit 1
fi
2018-10-24 09:12:52 +00:00
2018-11-13 14:48:24 +00:00
NETOUTDIR="${BENCHFILE}_network"
[[ ! -d $NETOUTDIR ]] && mkdir $NETOUTDIR || rm $NETOUTDIR/HOST*PID*.txt
2018-11-14 11:27:24 +00:00
2018-12-11 21:30:58 +00:00
WAIT=true
declare -a avgload
while $WAIT; do
for i in 1 2 3 4; do
avgload[$i]=$(ssh ime${i} 'cat /proc/loadavg' | cut -f1 -d" ")
if [[ ${avgload[$i]} > 25 ]]; then
WAIT=true
echo "ime$i is not ready. Average load is ${avgload[$i]}. Waiting."
break
else
WAIT=false
fi
done
sleep 5
done
2018-11-14 11:27:24 +00:00
(
set -x
2018-12-11 21:30:58 +00:00
$MPIEXEC $MPIEXEC_PARAMS ./ior_wrapper.sh "$IOR_PARAMS" "$NETOUTDIR" | tee -a $BENCHFILE
#$MPIEXEC $MPIEXEC_PARAMS $IOR $IOR_PARAMS | tee -a $BENCHFILE
if [[ "" != $CLEAN_UP_TESTFILE ]]; then
echo rm $CLEAN_UP_TESTFILE
fi
2018-10-24 09:12:52 +00:00
set +x
2018-11-13 07:35:25 +00:00
) 2> >(tee -a $BENCHFILE)
else
echo "skip $(readlink -f $BENCHFILE), already exists"
fi
2018-10-24 09:12:52 +00:00
done
done
done
done
done
done
2018-12-12 12:43:42 +00:00
done
2018-10-24 09:12:52 +00:00