3428879918
The common prefixes in these scripts indicate that they should really be in directories and not the toplevel. I also provide a helper script in $BIN to assist in calling them on the target VMs Signed-off-by: Anna Schumaker <Anna.Schumaker@Netapp.com>
74 lines
1.8 KiB
Bash
Executable File
74 lines
1.8 KiB
Bash
Executable File
#!/bin/zsh -e
|
|
source common.zsh
|
|
SIZE=(2048)
|
|
ITERATIONS=(1)
|
|
|
|
zparseopts -F -K \
|
|
c:=CLIENT -client:=CLIENT \
|
|
d=DIRECT -direct=DIRECT \
|
|
f:=FILE -file:=FILE \
|
|
i:=ITERATIONS -iterations:=ITERATIONS \
|
|
p:=MOUNTPOINT -mountpoint:=MOUNTPOINT \
|
|
s:=SERVER -server:=SERVER \
|
|
x:=EXPORT -export:=EXPORT \
|
|
z:=SIZE -size:=SIZE
|
|
|
|
COLOR="python -u $BIN/colors/read_plus.py ${SIZE[-1]} ${FILE[-1]}"
|
|
IFLAG=
|
|
SRV_DIR=${EXPORT[-1]}/$USER/read_plus
|
|
TEST_DIR=${MOUNTPOINT[-1]}/read_plus
|
|
TEST_DEV=${SERVER[-1]}:$SRV_DIR
|
|
TEST_FILES=($(echo ${SIZE[-1]}M-{data,hole,mixed-{1,2,4,8,16}{d,h}}))
|
|
TIME_CMD="sudo /usr/bin/time -f \"%Ss kern, %P cpu\""
|
|
|
|
#
|
|
# Prepare to test
|
|
#
|
|
function setup_client_func()
|
|
{
|
|
client_setup read_plus.zsh ${SERVER[-1]} ${EXPORT[-1]} \
|
|
${MOUNTPOINT[-1]} $USER ${SIZE[-1]} \
|
|
1,2,4,8,16 | eval ${COLOR}
|
|
}
|
|
|
|
prepare_to_test
|
|
if [ ${#FILE} -gt 1 ]; then
|
|
mkdir -p $(dirname ${FILE[-1]})
|
|
[[ -f ${FILE[-1]} ]] && rm -fv ${FILE[-1]}
|
|
touch ${FILE[-1]}
|
|
fi
|
|
if [ ${#DIRECT} -gt 0 ]; then
|
|
IFLAG="iflag=direct"
|
|
fi
|
|
|
|
|
|
function dd_file() {
|
|
echo "Reading: $1 ($2 on ${SERVER[-1]})"
|
|
|
|
case $2 in
|
|
"uncached") args="eq" ;;
|
|
"cached") args="tq" ;;
|
|
esac
|
|
|
|
ssh ${SERVER[-1]} "sudo vmtouch -$args $SRV_DIR/$1"
|
|
ssh ${CLIENT[-1]} "sudo vmtouch -eq $TEST_DIR/$1"
|
|
ssh ${CLIENT[-1]} "$TIME_CMD dd if=$TEST_DIR/$1 $IFLAG of=/dev/null bs=$3"
|
|
}
|
|
|
|
for i in $(seq ${ITERATIONS[-1]}); do
|
|
echo
|
|
[[ ${#FILE} -gt 1 ]] && echo >> ${FILE[-1]}
|
|
|
|
ssh ${CLIENT[-1]} "sudo mount -o sec=sys,v4.2 $TEST_DEV $TEST_DIR"
|
|
bsize=$(ssh ${CLIENT[-1]} "mount | grep $TEST_DEV" | awk -F rsize= '{print $2}' | awk -F, '{print $1}')
|
|
if [[ ${ITERATIONS[-1]} -gt 1 ]]; then
|
|
echo "Iteration $i / ${ITERATIONS[-1]}" | eval ${COLOR}
|
|
fi
|
|
for f in $TEST_FILES; do
|
|
for cache in uncached cached; do
|
|
dd_file $f $cache $bsize 2>&1 | eval ${COLOR}
|
|
done
|
|
done
|
|
ssh ${CLIENT[-1]} "sudo umount $TEST_DIR"
|
|
done
|