Merge branch 'linux-zpios' into refs/top-bases/linux-zfs-branch

This commit is contained in:
Brian Behlendorf 2009-01-16 12:27:17 -08:00
commit e40814f8c4
8 changed files with 220 additions and 127 deletions

View File

@ -19,10 +19,10 @@ RUN_THREAD_DELAY=${12}
RUN_FLAGS=${13} RUN_FLAGS=${13}
RUN_RESULT=${14} RUN_RESULT=${14}
PROFILE_ZPIOS_PIDS_BIN=/home/behlendo/src/zfs/scripts/profile-zpios-pids.sh PROFILE_ZPIOS_PIDS_BIN=${TOPDIR}/scripts/profile-zpios-pids.sh
PROFILE_ZPIOS_PIDS_LOG=${RUN_LOG_DIR}/${RUN_ID}/pids-summary.csv PROFILE_ZPIOS_PIDS_LOG=${RUN_LOG_DIR}/${RUN_ID}/pids-summary.csv
PROFILE_ZPIOS_DISK_BIN=/home/behlendo/src/zfs/scripts/profile-zpios-disk.sh PROFILE_ZPIOS_DISK_BIN=${TOPDIR}/scripts/profile-zpios-disk.sh
PROFILE_ZPIOS_DISK_LOG=${RUN_LOG_DIR}/${RUN_ID}/disk-summary.csv PROFILE_ZPIOS_DISK_LOG=${RUN_LOG_DIR}/${RUN_ID}/disk-summary.csv
PROFILE_ZPIOS_ARC_LOG=${RUN_LOG_DIR}/${RUN_ID}/arcstats PROFILE_ZPIOS_ARC_LOG=${RUN_LOG_DIR}/${RUN_ID}/arcstats

View File

@ -1,5 +1,7 @@
#!/bin/bash #!/bin/bash
# profile-zpios-pre.sh
prog=profile-zpios-pre.sh
. ../.script-config
trap "PROFILE_ZPIOS_READY=1" SIGHUP trap "PROFILE_ZPIOS_READY=1" SIGHUP
@ -19,7 +21,7 @@ RUN_THREAD_DELAY=${12}
RUN_FLAGS=${13} RUN_FLAGS=${13}
RUN_RESULT=${14} RUN_RESULT=${14}
PROFILE_ZPIOS_BIN=/home/behlendo/src/zfs/scripts/profile-zpios.sh PROFILE_ZPIOS_BIN=${IOPDIR}/scripts/profile-zpios.sh
PROFILE_ZPIOS_READY=0 PROFILE_ZPIOS_READY=0
OPROFILE_LOG=${RUN_LOG_DIR}/${RUN_ID}/oprofile.txt OPROFILE_LOG=${RUN_LOG_DIR}/${RUN_ID}/oprofile.txt

50
scripts/zpios-test/small.cfg Executable file
View File

@ -0,0 +1,50 @@
#!/bin/bash
#
#
# Usage: zpios
# --chunksize -c =values
# --chunksize_low -a =value
# --chunksize_high -b =value
# --chunksize_incr -g =value
# --offset -o =values
# --offset_low -m =value
# --offset_high -q =value
# --offset_incr -r =value
# --regioncount -n =values
# --regioncount_low -i =value
# --regioncount_high -j =value
# --regioncount_incr -k =value
# --threadcount -t =values
# --threadcount_low -l =value
# --threadcount_high -h =value
# --threadcount_incr -e =value
# --regionsize -s =values
# --regionsize_low -A =value
# --regionsize_high -B =value
# --regionsize_incr -C =value
# --cleanup -x
# --verify -V
# --zerocopy -z
# --threaddelay -T =jiffies
# --regionnoise -I =shift
# --chunknoise -N =bytes
# --prerun -P =pre-command
# --postrun -R =post-command
# --log -G =log directory
# --pool | --path -p =pool name
# --load -L =dmuio
# --help -? =this help
# --verbose -v =increase verbosity
ZPIOS_CMD="${CMDDIR}/zpios/zpios \
--load=dmuio \
--path=zpios \
--chunksize=1M \
--regionsize=4M \
--regioncount=256 \
--threadcount=4 \
--offset=4M \
--cleanup \
--verbose \
--human-readable \
${ZPIOS_OPTIONS}

View File

@ -1,159 +1,200 @@
#!/bin/bash #!/bin/bash
#
# Wrapper script for easily running zpios based tests
#
prog=zpios.sh . ./common.sh
. ../.script-config PROG=zpios.sh
SPL_OPTIONS="spl=spl_debug_mask=0 spl_debug_subsys=0 spl_debug_mb=-1 ${1}" PROFILE_ZPIOS_PRE=${TOPDIR}/scripts/profile-zpios-pre.sh
ZFS_OPTIONS="zfs=${2}" PROFILE_ZPIOS_POST=${TOPDIR}/scripts/profile-zpios-post.sh
ZPIOS_OPTIONS=$3
PROFILE_ZPIOS_LOGS=$4
ZPIOS_PRE=$5
ZPIOS_POST=$6
PROFILE_ZPIOS_PRE=/home/behlendo/src/zfs/scripts/profile-zpios-pre.sh MODULES=( \
PROFILE_ZPIOS_POST=/home/behlendo/src/zfs/scripts/profile-zpios-post.sh ${MODDIR}/zpios/zpios.ko \
)
DEVICES="/dev/hda" usage() {
cat << EOF
USAGE:
$0 [hvp] [c <config>]
echo ------------------------- ZFS TEST LOG --------------------------------- DESCRIPTION:
echo -n "Date = "; date Helper script for easy zpios benchmarking.
echo -n "Kernel = "; uname -r
echo ------------------------------------------------------------------------
echo
echo "rm /etc/zfs/zpool.cache" || exit 1 OPTIONS:
rm -f /etc/zfs/zpool.cache -h Show this message
-v Verbose
-p Enable profiling
-c Specify disk configuration
echo "./zfs.sh" EOF
./zfs.sh "${SPL_OPTIONS}" "${ZPOOL_OPTIONS}" || exit 1 }
echo
echo ---------------------- SPL Sysctl Tunings ------------------------------ print_header() {
sysctl -A | grep spl echo --------------------- ZPIOS RESULTS ----------------------------
echo echo -n "Date: "; date
echo -n "Kernel: "; uname -r
dmesg | grep "Loaded Solaris Porting Layer" | tail -n1
dmesg | grep "Loaded ZFS Filesystem" | tail -n1
echo
}
echo ------------------- SPL Module Tunings --------------------------- print_spl_info() {
if [ -d /sys/module/spl/parameters ]; then echo --------------------- SPL Tunings ------------------------------
sysctl -A | grep spl
if [ -d /sys/module/spl/parameters ]; then
grep [0-9] /sys/module/spl/parameters/* grep [0-9] /sys/module/spl/parameters/*
else else
grep [0-9] /sys/module/spl/* grep [0-9] /sys/module/spl/*
fi fi
echo
echo ------------------- ZFS Module Tunings --------------------------- echo
if [ -d /sys/module/zfs/parameters ]; then }
print_zfs_info() {
echo --------------------- ZFS Tunings ------------------------------
sysctl -A | grep zfs
if [ -d /sys/module/zfs/parameters ]; then
grep [0-9] /sys/module/zfs/parameters/* grep [0-9] /sys/module/zfs/parameters/*
else else
grep [0-9] /sys/module/zfs/* grep [0-9] /sys/module/zfs/*
fi fi
echo
echo "${CMDDIR}/zpool/zpool create -f lustre ${DEVICES}" echo
${CMDDIR}/zpool/zpool create -f lustre ${DEVICES} || exit 1 }
echo "${CMDDIR}/zpool/zpool status lustre" print_stats() {
${CMDDIR}/zpool/zpool status lustre || exit 1 echo ---------------------- Statistics -------------------------------
sysctl -A | grep spl | grep stack_max
echo "Waiting for /dev/zpios to come up..." if [ -d /proc/spl/kstat/ ]; then
while [ ! -c /dev/zpios ]; do
sleep 1
done
if [ -n "${ZPIOS_PRE}" ]; then
${ZPIOS_PRE} || exit 1
fi
# Usage: zpios
# --chunksize -c =values
# --chunksize_low -a =value
# --chunksize_high -b =value
# --chunksize_incr -g =value
# --offset -o =values
# --offset_low -m =value
# --offset_high -q =value
# --offset_incr -r =value
# --regioncount -n =values
# --regioncount_low -i =value
# --regioncount_high -j =value
# --regioncount_incr -k =value
# --threadcount -t =values
# --threadcount_low -l =value
# --threadcount_high -h =value
# --threadcount_incr -e =value
# --regionsize -s =values
# --regionsize_low -A =value
# --regionsize_high -B =value
# --regionsize_incr -C =value
# --cleanup -x
# --verify -V
# --zerocopy -z
# --threaddelay -T =jiffies
# --regionnoise -I =shift
# --chunknoise -N =bytes
# --prerun -P =pre-command
# --postrun -R =post-command
# --log -G =log directory
# --pool | --path -p =pool name
# --load -L =dmuio
# --help -? =this help
# --verbose -v =increase verbosity
# --prerun=${PROFILE_ZPIOS_PRE} \
# --postrun=${PROFILE_ZPIOS_POST} \
CMD="${CMDDIR}/zpios/zpios \
--load=dmuio \
--path=lustre \
--chunksize=1M \
--regionsize=4M \
--regioncount=256 \
--threadcount=4 \
--offset=4M \
--cleanup \
--verbose \
--human-readable \
${ZPIOS_OPTIONS} \
--log=${PROFILE_ZPIOS_LOGS}"
echo
date
echo ${CMD}
$CMD || exit 1
date
if [ -n "${ZPIOS_POST}" ]; then
${ZPIOS_POST} || exit 1
fi
echo
echo "${CMDDIR}/zpool/zpool destroy lustre"
${CMDDIR}/zpool/zpool destroy lustre
echo
echo ---------------------- SPL Sysctl Tunings ------------------------------
sysctl -A | grep spl
echo
if [ -d /proc/spl/kstat/ ]; then
if [ -f /proc/spl/kstat/zfs/arcstats ]; then if [ -f /proc/spl/kstat/zfs/arcstats ]; then
echo "------------------ ARCSTATS --------------------------" echo "* ARC"
cat /proc/spl/kstat/zfs/arcstats cat /proc/spl/kstat/zfs/arcstats
echo echo
fi fi
if [ -f /proc/spl/kstat/zfs/vdev_cache_stats ]; then if [ -f /proc/spl/kstat/zfs/vdev_cache_stats ]; then
echo "-------------- VDEV_CACHE_STATS ----------------------" echo "* VDEV Cache"
cat /proc/spl/kstat/zfs/vdev_cache_stats cat /proc/spl/kstat/zfs/vdev_cache_stats
echo echo
fi fi
fi fi
if [ -f /proc/spl/kmem/slab ]; then if [ -f /proc/spl/kmem/slab ]; then
echo "-------------------- SLAB ----------------------------" echo "* SPL SLAB"
cat /proc/spl/kmem/slab cat /proc/spl/kmem/slab
echo echo
fi
}
check_test() {
if [ ! -f ${ZPIOS_TEST} ]; then
local NAME=`basename ${ZPIOS_TEST} .cfg`
ERROR="Unknown test '${NAME}', available tests are:\n"
for TST in `ls ${TOPDIR}/scripts/zpios-test/`; do
local NAME=`basename ${TST} .cfg`
ERROR="${ERROR}${NAME}\n"
done
return 1
fi
return 0
}
PROFILE=
ZPOOL_CONFIG="zpool-config.cfg"
ZPIOS_TEST="zpios-test.cfg"
while getopts 'hvpc:t:' OPTION; do
case $OPTION in
h)
usage
exit 1
;;
v)
VERBOSE=1
;;
p)
PROFILE=1
;;
c)
ZPOOL_CONFIG=${OPTARG}
;;
t)
ZPIOS_TEST=${TOPDIR}/scripts/zpios-test/${OPTARG}.cfg
;;
?)
usage
exit
;;
esac
done
if [ $(id -u) != 0 ]; then
die "Must run as root"
fi fi
echo "./zfs.sh -u" # Validate your using a known test
./zfs.sh -u || exit 1 check_test || die "${ERROR}"
# Pull in the zpios test module is not loaded. If this fails it is
# likely because the full module stack was not yet loaded with zfs.sh
if check_modules; then
if ! load_modules; then
die "Run 'zfs.sh' to ensure the full module stack is loaded"
fi
fi
if [ ${VERBOSE} ]; then
print_header
print_spl_info
print_zfs_info
fi
# Create the zpool configuration
./zpool-create.sh -c ${ZPOOL_CONFIG} || exit 1
msg "${CMDDIR}/zpool/zpool status zpios"
${CMDDIR}/zpool/zpool status zpios || exit 1
msg "Waiting for /dev/zpios to come up..."
while [ ! -c /dev/zpios ]; do
sleep 1
done
if [ -n "${ZPIOS_PRE}" ]; then
msg "Executing ${ZPIOS_PRE}"
${ZPIOS_PRE} || exit 1
fi
# Source the zpios test configuration
. ${ZPIOS_TEST}
if [ $PROFILE ]; then
ZPIOS_CMD="${ZPIOS_CMD} --log=${PROFILE_ZPIOS_LOGS}"
ZPIOS_CMD="${ZPIOS_CMD} --prerun=${PROFILE_ZPIOS_PRE}"
ZPIOS_CMD="${ZPIOS_CMD} --postrun=${PROFILE_ZPIOS_POST}"
fi
echo
date
echo ${ZPIOS_CMD}
$ZPIOS_CMD || exit 1
if [ -n "${ZPIOS_POST}" ]; then
msg "Executing ${ZPIOS_POST}"
${ZPIOS_POST} || exit 1
fi
msg "${CMDDIR}/zpool/zpool destroy zpios"
${CMDDIR}/zpool/zpool destroy zpios
print_stats
exit 0 exit 0