aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/zpios.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/zpios.sh')
-rwxr-xr-xscripts/zpios.sh281
1 files changed, 0 insertions, 281 deletions
diff --git a/scripts/zpios.sh b/scripts/zpios.sh
deleted file mode 100755
index 0fcb88d4b..000000000
--- a/scripts/zpios.sh
+++ /dev/null
@@ -1,281 +0,0 @@
-#!/bin/bash
-#
-# Wrapper script for easily running zpios based tests
-#
-
-basedir="$(dirname $0)"
-
-SCRIPT_COMMON=common.sh
-if [ -f "${basedir}/${SCRIPT_COMMON}" ]; then
-. "${basedir}/${SCRIPT_COMMON}"
-else
-echo "Missing helper script ${SCRIPT_COMMON}" && exit 1
-fi
-
-PROG=zpios.sh
-DATE=`date +%Y%m%d-%H%M%S`
-if [ "${ZPIOS_MODULES}" ]; then
- MODULES=(${ZPIOS_MODULES[*]})
-else
- MODULES=(zpios)
-fi
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvp] <-c config> <-t test>
-
-DESCRIPTION:
- Helper script for easy zpios benchmarking.
-
-OPTIONS:
- -h Show this message
- -v Verbose
- -f Force everything
- -p Enable profiling
- -c Zpool configuration
- -t Zpios test
- -o Additional zpios options
- -l Additional zpool options
- -s Additional zfs options
-
-EOF
-}
-
-unload_die() {
- unload_modules
- while [ -c /dev/zpios ]; do
- sleep 1
- done
-
- exit 1
-}
-
-print_header() {
- echo --------------------- ZPIOS RESULTS ----------------------------
- 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
-}
-
-print_spl_info() {
- echo --------------------- SPL Tunings ------------------------------
- ${SYSCTL} -A | grep spl
-
- if [ -d /sys/module/spl/parameters ]; then
- grep [0-9] /sys/module/spl/parameters/*
- else
- grep [0-9] /sys/module/spl/*
- fi
-
- echo
-}
-
-print_zfs_info() {
- echo --------------------- ZFS Tunings ------------------------------
- ${SYSCTL} -A | grep zfs
-
- if [ -d /sys/module/zfs/parameters ]; then
- grep [0-9] /sys/module/zfs/parameters/*
- else
- grep [0-9] /sys/module/zfs/*
- fi
-
- echo
-}
-
-print_stats() {
- echo ---------------------- Statistics -------------------------------
- ${SYSCTL} -A | grep spl | grep stack_max
-
- if [ -d /proc/spl/kstat/ ]; then
- if [ -f /proc/spl/kstat/zfs/arcstats ]; then
- echo "* ARC"
- cat /proc/spl/kstat/zfs/arcstats
- echo
- fi
-
- if [ -f /proc/spl/kstat/zfs/vdev_cache_stats ]; then
- echo "* VDEV Cache"
- cat /proc/spl/kstat/zfs/vdev_cache_stats
- echo
- fi
- fi
-
- if [ -f /proc/spl/kmem/slab ]; then
- echo "* SPL SLAB"
- cat /proc/spl/kmem/slab
- echo
- fi
-
- echo
-}
-
-check_test() {
-
- if [ ! -f ${ZPIOS_TEST} ]; then
- local NAME=`basename ${ZPIOS_TEST} .sh`
- ERROR="Unknown test '${NAME}', available tests are:\n"
-
- for TST in `ls ${ZPIOSDIR}/ | grep ".sh"`; do
- local NAME=`basename ${TST} .sh`
- ERROR="${ERROR}${NAME}\n"
- done
-
- return 1
- fi
-
- return 0
-}
-
-zpios_profile_config() {
-cat > ${PROFILE_DIR}/zpios-config.sh << EOF
-#
-# Zpios Profiling Configuration
-#
-
-PROFILE_DIR=/tmp/zpios/${ZPOOL_CONFIG}+${ZPIOS_TEST_ARG}+${DATE}
-PROFILE_PRE=${ZPIOSPROFILEDIR}/zpios-profile-pre.sh
-PROFILE_POST=${ZPIOSPROFILEDIR}/zpios-profile-post.sh
-PROFILE_USER=${ZPIOSPROFILEDIR}/zpios-profile.sh
-PROFILE_PIDS=${ZPIOSPROFILEDIR}/zpios-profile-pids.sh
-PROFILE_DISK=${ZPIOSPROFILEDIR}/zpios-profile-disk.sh
-PROFILE_ARC_PROC=/proc/spl/kstat/zfs/arcstats
-PROFILE_VDEV_CACHE_PROC=/proc/spl/kstat/zfs/vdev_cache_stats
-
-OPROFILE_KERNEL="/boot/vmlinux-`uname -r`"
-OPROFILE_KERNEL_DIR="/lib/modules/`uname -r`/kernel/"
-OPROFILE_SPL_DIR=${SPLBUILD}/module/
-OPROFILE_ZFS_DIR=${MODDIR}
-
-EOF
-}
-
-zpios_profile_start() {
- PROFILE_DIR=/tmp/zpios/${ZPOOL_CONFIG}+${ZPIOS_TEST_ARG}+${DATE}
-
- mkdir -p ${PROFILE_DIR}
- zpios_profile_config
- . ${PROFILE_DIR}/zpios-config.sh
-
- ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --log=${PROFILE_DIR}"
- ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --prerun=${PROFILE_PRE}"
- ZPIOS_OPTIONS="${ZPIOS_OPTIONS} --postrun=${PROFILE_POST}"
-
- /usr/bin/opcontrol --init
- /usr/bin/opcontrol --setup --vmlinux=${OPROFILE_KERNEL}
-}
-
-zpios_profile_stop() {
- /usr/bin/opcontrol --shutdown
- /usr/bin/opcontrol --deinit
-}
-
-PROFILE=
-ZPOOL_CONFIG=zpool-config.sh
-ZPIOS_TEST=zpios-test.sh
-ZPOOL_NAME=zpios
-ZPIOS_OPTIONS=
-ZPOOL_OPTIONS=""
-ZFS_OPTIONS=""
-
-while getopts 'hvfpc:t:o:l:s:' OPTION; do
- case $OPTION in
- h)
- usage
- exit 1
- ;;
- v)
- VERBOSE=1
- VERBOSE_FLAG="-v"
- ;;
- f)
- FORCE=1
- FORCE_FLAG="-f"
- ;;
- p)
- PROFILE=1
- ;;
- c)
- ZPOOL_CONFIG=${OPTARG}
- ;;
- t)
- ZPIOS_TEST_ARG=${OPTARG}
- ZPIOS_TEST=${ZPIOSDIR}/${OPTARG}.sh
- ;;
- o)
- ZPIOS_OPTIONS=${OPTARG}
- ;;
- l) # Passed through to zpool-create.sh
- ZPOOL_OPTIONS=${OPTARG}
- ;;
- s) # Passed through to zpool-create.sh
- ZFS_OPTIONS=${OPTARG}
- ;;
- ?)
- usage
- exit
- ;;
- esac
-done
-
-if [ $(id -u) != 0 ]; then
- die "Must run as root"
-fi
-
-# Validate and source your test config
-check_test || die "${ERROR}"
-. ${ZPIOS_TEST}
-
-# Pull in the zpios test module if 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
-
-# Wait for device creation
-while [ ! -c /dev/zpios ]; do
- sleep 1
-done
-
-if [ ${VERBOSE} ]; then
- print_header
- print_spl_info
- print_zfs_info
-fi
-
-# Create the zpool configuration
-${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
- -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} \
- -l "${ZPOOL_OPTIONS}" -s "${ZFS_OPTIONS}" || unload_die
-
-if [ ${PROFILE} ]; then
- zpios_profile_start
-fi
-
-zpios_start
-zpios_stop
-
-if [ ${PROFILE} ]; then
- zpios_profile_stop
-fi
-
-if [ ${VERBOSE} ]; then
- print_stats
-fi
-
-# Destroy the zpool configuration
-${ZPOOL_CREATE_SH} ${VERBOSE_FLAG} ${FORCE_FLAG} \
- -p ${ZPOOL_NAME} -c ${ZPOOL_CONFIG} -d || unload_die
-
-# Unload the test module stack and wait for device removal
-unload_modules
-while [ -c /dev/zpios ]; do
- sleep 1
-done
-
-exit 0