Whamcloud - gitweb
LU-6900 tests: parallel-scale-nfs improvement
[fs/lustre-release.git] / lustre / tests / parallel-scale-nfs.sh
index 9955dc1..4188c3b 100755 (executable)
@@ -12,83 +12,78 @@ fi
 . ${CONFIG:=$LUSTRE/tests/cfg/$NAME.sh}
 init_logging
 
+racer=$LUSTRE/tests/racer/racer.sh
 . $LUSTRE/tests/setup-nfs.sh
 
 check_and_setup_lustre
 
-# first unmount all the lustre client
+# first unmount all the lustre clients
 cleanup_mount $MOUNT
-# mount lustre on mds
-lustre_client=$(facet_active_host $SINGLEMDS)
-[ "$NFSVERSION" = "4" ] && cl_mnt_opt="$MOUNTOPT,32bitapi" || cl_mnt_opt=""
-zconf_mount_clients $lustre_client $MOUNT "$cl_mnt_opt" || \
-    error "mount lustre on $lustre_client failed"
+# lustre client used as nfs server (default is mds node)
+LUSTRE_CLIENT_NFSSRV=${LUSTRE_CLIENT_NFSSRV:-$(facet_active_host $SINGLEMDS)}
+NFS_SRVMNTPT=${NFS_SRVMNTPT:-$MOUNT}
+NFS_CLIENTS=${NFS_CLIENTS:-$CLIENTS}
+NFS_CLIENTS=$(exclude_items_from_list $NFS_CLIENTS $LUSTRE_CLIENT_NFSSRV)
+NFS_CLIMNTPT=${NFS_CLIMNTPT:-$MOUNT}
+
+[ -z "$NFS_CLIENTS" ] &&
+       skip_env "need at least two nodes: nfs server and nfs client" && exit 0
+
+[ "$NFSVERSION" = "4" ] && cl_mnt_opt="${MOUNT_OPTS:+$MOUNT_OPTS,}32bitapi" ||
+    cl_mnt_opt=""
+
+cleanup_exit () {
+       trap 0
+       cleanup
+       check_and_cleanup_lustre
+       exit
+}
+
+cleanup () {
+       cleanup_nfs "$NFS_CLIMNTPT" "$LUSTRE_CLIENT_NFSSRV" "$NFS_CLIENTS" ||
+               error_noexit false "failed to cleanup nfs"
+       zconf_umount $LUSTRE_CLIENT_NFSSRV $NFS_SRVMNTPT force ||
+               error_noexit false "failed to umount lustre on"\
+                       "$LUSTRE_CLIENT_NFSSRV"
+       # restore lustre mount
+       restore_mount $MOUNT ||
+               error_noexit false "failed to mount lustre"
+}
+
+trap cleanup_exit EXIT SIGHUP SIGINT
+
+zconf_mount $LUSTRE_CLIENT_NFSSRV $NFS_SRVMNTPT "$cl_mnt_opt" ||
+    error "mount lustre on $LUSTRE_CLIENT_NFSSRV failed"
 
 # setup the nfs
-if ! setup_nfs "$NFSVERSION" "$MOUNT" "$lustre_client" "$CLIENTS"; then
-    error_noexit false "setup nfs failed!"
-    cleanup_nfs "$MOUNT" "$lustre_client" "$CLIENTS" || \
-        error_noexit false "failed to cleanup nfs"
-    if ! zconf_umount_clients $lustre_client $MOUNT force; then
-        error_noexit false "failed to umount lustre on $lustre_client"
-    elif ! zconf_mount_clients $CLIENTS $MOUNT; then
-        error_noexit false "failed to mount lustre"
-    fi
-    check_and_cleanup_lustre
-    exit
-fi
+setup_nfs "$NFSVERSION" "$NFS_SRVMNTPT" "$LUSTRE_CLIENT_NFSSRV" \
+               "$NFS_CLIENTS" "$NFS_CLIMNTPT" ||
+       error false "setup nfs failed!"
 
 NFSCLIENT=true
 FAIL_ON_ERROR=false
 
 # common setup
-#
 MACHINEFILE=${MACHINEFILE:-$TMP/$(basename $0 .sh).machines}
-clients=${CLIENTS:-$HOSTNAME}
+clients=${NFS_CLIENTS:-$HOSTNAME}
 generate_machine_file $clients $MACHINEFILE || \
     error "Failed to generate machine file"
 num_clients=$(get_node_count ${clients//,/ })
 
 # compilbench
-#
-cbench_DIR=${cbench_DIR:-"/usr/bin"}
-cbench_IDIRS=${cbench_IDIRS:-4}
-# FIXME: wiki page requirements is 30, do we really need 30 ?
-cbench_RUNS=${cbench_RUNS:-4}
-
-if [ "$SLOW" = "no" ]; then
-    cbench_IDIRS=2
-    cbench_RUNS=2
-fi
+# Run short iteration in nfs mode
+cbench_IDIRS=${cbench_IDIRS:-2}
+cbench_RUNS=${cbench_RUNS:-2}
 
-#
 # metabench
-#
-METABENCH=${METABENCH:-$(which metabench 2> /dev/null || true)}
-mbench_NFILES=${mbench_NFILES:-30400}
-[ "$SLOW" = "no" ] && mbench_NFILES=10000
-# threads per client
-mbench_THREADS=${mbench_THREADS:-4}
+# Run quick in nfs mode
+mbench_NFILES=${mbench_NFILES:-10000}
 
-#
 # connectathon
-#
-cnt_DIR=${cnt_DIR:-""}
-cnt_NRUN=${cnt_NRUN:-10}
 [ "$SLOW" = "no" ] && cnt_NRUN=2
 
-#
 # IOR
-#
-IOR=${IOR:-$(which IOR 2> /dev/null || true)}
-# threads per client
-ior_THREADS=${ior_THREADS:-2}
-ior_iteration=${ior_iteration:-1}
-ior_blockSize=${ior_blockSize:-6} # Gb
-ior_xferSize=${ior_xferSize:-2m}
-ior_type=${ior_type:-POSIX}
-ior_DURATION=${ior_DURATION:-60} # minutes
-[ "$SLOW" = "no" ] && ior_DURATION=30
+ior_DURATION=${ior_DURATION:-30}
 
 # source the common file after all parameters are set to take affect
 . $LUSTRE/tests/functions.sh
@@ -100,39 +95,34 @@ 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_compilebench() {
-    run_compilebench
+       run_compilebench $NFS_CLIMNTPT
 }
 run_test compilebench "compilebench"
 
 test_metabench() {
-    run_metabench
+       run_metabench $NFS_CLIMNTPT
 }
 run_test metabench "metabench"
 
 test_connectathon() {
-    run_connectathon
+       run_connectathon $NFS_CLIMNTPT
 }
 run_test connectathon "connectathon"
 
 test_iorssf() {
-    run_ior "ssf"
+       run_ior "ssf" $NFS_CLIMNTPT $NFS_SRVMNTPT
 }
 run_test iorssf "iorssf"
 
 test_iorfpp() {
-    run_ior "fpp"
+       run_ior "fpp" $NFS_CLIMNTPT $NFS_SRVMNTPT
 }
 run_test iorfpp "iorfpp"
 
-# cleanup nfs
-cleanup_nfs "$MOUNT" "$lustre_client" "$CLIENTS" || \
-    error_noexit false "cleanup_nfs failed"
-if ! zconf_umount_clients $lustre_client $MOUNT force; then
-    error_noexit false "failed to umount lustre on $lustre_client"
-elif ! zconf_mount_clients $CLIENTS $MOUNT; then
-    error_noexit false "failed to mount lustre after nfs test"
-fi
+test_racer_on_nfs() {
+       $racer $CLIENTS
+}
+run_test racer_on_nfs "racer on NFS client"
 
-complete $(basename $0) $SECONDS
-check_and_cleanup_lustre
+complete $SECONDS
 exit_status