#!/bin/bash
+
set -e
TESTNAME=$(basename $0 .sh)
init_logging
ALWAYS_EXCEPT="$PERFORMANCE_SANITY_EXCEPT "
-always_except LU-16658 6
build_test_filter
-[ -x "$MDSRATE" ] || FAIL_ON_ERROR=true error "No mdsrate program. Aborting."
-which mpirun > /dev/null 2>&1 ||
- FAIL_ON_ERROR=true error "No mpirun program. Aborting."
+check_and_setup_lustre
+
+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"
+ # LU-2600/LU-4108 - Decrease load on zfs
+ if [[ "$SLOW" == no && "$mds1_FSTYPE" == zfs ]]; then
+ NUM_FILES=10000
+ fi
+ run_mdtest create-small
+}
+run_test 1 "small files create/open/delete"
-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_2() {
+ env_verify
+ echo "Large files creation performance test"
+ run_mdtest create-large
+}
+run_test 2 "large files create/open/delete"
-# mdsrate-create-small
test_3() {
- echo "File creation performance tests for file objects"
- bash mdsrate-create-small.sh
+ env_verify
+ NUM_DIRS=1
+ NUM_FILES=200000
+ echo "Single directory lookup rate for $NUM_FILES files"
+ run_mdtest lookup-single
}
-run_test 3 "small file create/open/delete ======"
+run_test 3 "lookup rate 200k files in single directory"
-# mdsrate-create-large
test_4() {
- # LU-2600/LU-4108 - Decrease load on zfs
- [ "$SLOW" = no -a "$mds1_FSTYPE" = zfs ] &&
- NUM_FILES=10000
- echo "Large file creation performance"
- bash mdsrate-create-large.sh
+ 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 "large file create/open/delete"
+run_test 4 "lookup rate 200k files in 100 directories"
-# mdsrate-lookup-1dir
test_5() {
- echo "Single directory lookup retrieval rate"
- bash mdsrate-lookup-1dir.sh
+ touch $DIR/$tfile
+ for((i=0; i < 20000; i++)) {
+ echo "W$((i * 10)), 5"
+ } | flocks_test 6 $DIR/$tfile
+ rm -r $DIR/$tfile
}
-run_test 5 "lookup rate 10M file dir ======"
+run_test 5 "enqueue 20k no overlap flocks on same file"
-# mdsrate-lookup-10dir
test_6() {
- echo "Directory lookup retrieval rate 10 directories, 1 million files each"
- bash mdsrate-lookup-10dirs.sh
+ touch $DIR/$tfile
+ for((i=0; i < 20000; i++)) {
+ [ $i -eq 0 ] && echo "W0,99999999" && continue
+ echo "R$((i * 10)), 5"
+ } | flocks_test 6 $DIR/$tfile
+ rm -r $DIR/$tfile
}
-run_test 6 "lookup rate 10M file 10 dir ======"
+run_test 6 "split a flock 20k times"
-# mdsrate-stat-small
test_7() {
- echo "File attribute retrieval rate for small file creation"
- bash mdsrate-stat-small.sh
-}
-run_test 7 "getattr small file ======"
-
-# mdsrate-stat-large
-test_8() {
- echo "File attribute retrieval rate for large file creation"
- bash mdsrate-stat-large.sh
+ touch $DIR/$tfile
+ for((i=0; i < 20001; i++)) {
+ echo "R$((i * 10)), 5"
+ [ $i -eq 20000 ] && echo "W0,99999999" && continue
+ } | flocks_test 6 $DIR/$tfile
+ rm -r $DIR/$tfile
}
-run_test 8 "getattr large files ======"
+run_test 7 "merge 20k flocks"
complete_test $SECONDS
check_and_cleanup_lustre
-[ -f "$LOG" ] && cat $LOG || true
exit_status