Viewing: performance-sanity.sh
#!/usr/bin/bash
set -e
TESTNAME=$(basename $0 .sh)
LOG=${LOG:-"$TMP/${TESTNAME}.log"}
MOUNT_2=${MOUNT_2:-"yes"}
LUSTRE=${LUSTRE:-$(dirname $0)/..}
. $LUSTRE/tests/test-framework.sh
init_test_env "$@"
init_logging
ALWAYS_EXCEPT="$PERFORMANCE_SANITY_EXCEPT "
build_test_filter
check_and_setup_lustre
CLIENTS=${CLIENTS:-$HOSTNAME}
env_verify()
{
[[ -x "$MPIRUN" ]] || skip_env "no mpirun program found"
[[ -x "$MDTEST" ]] || skip_env "no mdtest program found"
get_mpiuser_id $MPI_USER
MPI_RUNAS=${MPI_RUNAS:-"runas -u $MPI_USER_UID -g $MPI_USER_GID"}
$GSS_KRB5 && refresh_krb5_tgt $MPI_USER_UID $MPI_USER_GID $MPI_RUNAS
}
test_1() {
env_verify
echo "Small files creation performance test"
run_mdtest create-small
}
run_test 1 "small files create/open/delete"
test_2() {
env_verify
echo "Large files creation performance test"
# LU-2600/LU-4108 - Decrease load on zfs
if [[ "$SLOW" == no && "$mds1_FSTYPE" == zfs ]]; then
NUM_FILES=10000
fi
run_mdtest create-large
}
run_test 2 "large files create/open/delete"
test_3() {
env_verify
NUM_DIRS=1
NUM_FILES=200000
echo "Single directory lookup rate for $NUM_FILES files"
run_mdtest lookup-single
}
run_test 3 "lookup rate 200k files in single directory"
test_4() {
env_verify
NUM_DIRS=100
NUM_FILES=200000
echo "Directory lookup rate $NUM_DIRS directories, $((NUM_FILES/NUM_DIRS)) files each"
run_mdtest lookup-multi
}
run_test 4 "lookup rate 200k files in 100 directories"
test_5a() {
local tmpfile=$DIR/$tfile
for((i=0; i < 20001; i++)) {
echo "R$((i * 10)), 5"
} > $tmpfile
stack_trap "rm $tmpfile || true" EXIT
do_nodes $CLIENTS flocks_test 6 $DIR/$tfile $tmpfile &
do_nodes $CLIENTS flocks_test 6 $DIR2/$tfile $tmpfile &
wait || error "flocks_test failed"
}
run_test 5a "enqueue 20k no overlap flocks on same file"
test_5b() {
local tmpfile=$DIR/$tfile
echo "W0,99999999" > $tmpfile
for((i=0; i < 20001; i++)) {
echo "R$((i * 10)), 5"
} >> $tmpfile
stack_trap "rm $tmpfile || true" EXIT
do_nodes $CLIENTS flocks_test 6 $DIR/$tfile $tmpfile &
do_nodes $CLIENTS flocks_test 6 $DIR2/$tfile $tmpfile &
wait || error "flocks_test failed"
}
run_test 5b "split a flock 20k times"
test_5c() {
local tmpfile=$DIR/$tfile
for((i=0; i < 20001; i++)) {
echo "R$((i * 10)), 5"
} > $tmpfile
echo -e "R0,99999999\nT0" >> $tmpfile
stack_trap "rm $tmpfile || true" EXIT
do_nodes $CLIENTS flocks_test 6 $DIR/$tfile $tmpfile &
do_nodes $CLIENTS flocks_test 6 $DIR2/$tfile $tmpfile &
wait || error "flocks_test failed"
}
run_test 5c "merge 20k flocks"
test_5d() {
local tmpfile=$DIR/$tfile
echo "S20100" > $tmpfile
for((i=0; i < 20000; i++)) {
echo -e "F$i\nR400, 100"
} >> $tmpfile
for((i=0; i < 20000; i++)) {
echo -e "F$i\nR400, 101"
} >> $tmpfile
stack_trap "rm $tmpfile || true" EXIT
do_nodes $CLIENTS flocks_test 6 $DIR/$tfile $tmpfile &
do_nodes $CLIENTS flocks_test 6 $DIR2/$tfile $tmpfile &
wait || error "flocks_test failed"
}
run_test 5d "Enqueue 20k same range flocks, then expand them"
complete_test $SECONDS
check_and_cleanup_lustre
exit_status