#
# In the second usage the new value is appended to the old.
setmodopts() {
- local _append=false
+ local _append=false
- if [ "$1" = -a ]; then
- _append=true
- shift
- fi
+ if [ "$1" = -a ]; then
+ _append=true
+ shift
+ fi
- local _var=MODOPTS_$1
- local _newvalue=$2
- local _savevar=$3
- local _oldvalue
+ local _var=MODOPTS_$1
+ local _newvalue=$2
+ local _savevar=$3
+ local _oldvalue
- # Dynamic naming of variables is a pain in bash. In ksh93 we could
- # write "nameref opts_var=${modname}_MODOPTS" then assign directly
- # to opts_var. Associative arrays would also help, alternatively.
- # Alas, we're stuck with eval until all distros move to a more recent
- # version of bash. Fortunately we don't need to eval unset and export.
+ # Dynamic naming of variables is a pain in bash. In ksh93 we could
+ # write "nameref opts_var=${modname}_MODOPTS" then assign directly
+ # to opts_var. Associative arrays would also help, alternatively.
+ # Alas, we're stuck with eval until all distros move to a more recent
+ # version of bash. Fortunately we don't need to eval unset and export.
- if [ -z "$_newvalue" ]; then
- unset $_var
- return 0
- fi
+ if [ -z "$_newvalue" ]; then
+ unset $_var
+ return 0
+ fi
- _oldvalue=${!var}
- $_append && _newvalue="$_oldvalue $_newvalue"
- export $_var="$_newvalue"
- echo setmodopts: ${_var}=${_newvalue}
+ _oldvalue=${!_var}
+ $_append && _newvalue="$_oldvalue $_newvalue"
+ export $_var="$_newvalue"
+ echo setmodopts: ${_var}=${_newvalue}
- [ -n "$_savevar" ] && eval $_savevar=\""$_oldvalue"\"
+ [ -n "$_savevar" ] && eval $_savevar=\""$_oldvalue"\"
}
echoerr () { echo "$@" 1>&2 ; }
}
mpi_run () {
- local mpirun="$MPIRUN $MPIRUN_OPTIONS --oversubscribe"
+ local mpirun="$MPIRUN $MPIRUN_OPTIONS"
local command="$mpirun $@"
local mpilog=$TMP/mpi.log
local rc
ior_xferSize=${ior_xferSize:-1M}
ior_type=${ior_type:-POSIX}
ior_DURATION=${ior_DURATION:-30} # minutes
+ ior_CLEANUP=${ior_CLEANUP:-true}
local multiplier=1
case ${ior_blockUnit} in
[G])
if [ $rc != 0 ] ; then
error "ior failed! $rc"
fi
- rm -rf $testdir
+ $ior_CLEANUP && rm -rf $testdir || true
}
run_mib() {
# Save mdt values, set threshold to 100% i.e always Round Robin,
# restore the saved values again after creating files...
save_lustre_params mds1 \
- "lov.$FSNAME-MDT0000*.qos_threshold_rr" > $qos_prec_objs
+ "lod.$FSNAME-MDT0000*.qos_threshold_rr" > $qos_prec_objs
save_lustre_params mds1 \
"osp.$FSNAME-OST*-osc-MDT0000.create_count" >> $qos_prec_objs
foeo_calc=$((rr_alloc_NFILES * total_MNTPTS / OSTCOUNT))
local create_count=$((2 * foeo_calc))
- do_facet mds1 "$LCTL set_param -n \
- lov.$FSNAME-MDT0000*.qos_threshold_rr 100 \
- osp.$FSNAME-OST*-osc-MDT0000.create_count $create_count" ||
- error "failed while setting qos_threshold_rr & creat_count"
+
+ # create_count accepted values:
+ # [OST_MIN_PRECREATE=32, OST_MAX_PRECREATE=20000]
+ # values exceeding OST_MAX_PRECREATE are lowered to the maximum.
+ [[ $create_count -lt 32 ]] && create_count=32
+ local i
+ for i in $(seq $MDSCOUNT); do
+ do_facet mds$i "$LCTL set_param -n \
+ lod.$FSNAME-MDT*.qos_threshold_rr=100 \
+ osp.$FSNAME-OST*-osc-MDT*.create_count=$create_count"
+ done
# Create few temporary files in order to increase the precreated objects
# to a desired value, before starting 'rr_alloc' app. Due to default