aboutsummaryrefslogtreecommitdiffstats
path: root/scripts/zpios-survey.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/zpios-survey.sh')
-rwxr-xr-xscripts/zpios-survey.sh187
1 files changed, 0 insertions, 187 deletions
diff --git a/scripts/zpios-survey.sh b/scripts/zpios-survey.sh
deleted file mode 100755
index 78601695f..000000000
--- a/scripts/zpios-survey.sh
+++ /dev/null
@@ -1,187 +0,0 @@
-#!/bin/bash
-#
-# Wrapper script for easily running a survey of 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-survey.sh
-
-usage() {
-cat << EOF
-USAGE:
-$0 [hvp] <-c config> <-t test>
-
-DESCRIPTION:
- Helper script for easy zpios survey benchmarking.
-
-OPTIONS:
- -h Show this message
- -v Verbose
- -p Enable profiling
- -c Zpool configuration
- -t Zpios test
- -l Zpios survey log
-
-EOF
-}
-
-print_header() {
-tee -a ${ZPIOS_SURVEY_LOG} << EOF
-
-================================================================
-Test: $1
-EOF
-}
-
-# Baseline performance for an out of the box config with no manual tuning.
-# Ideally, we want everything to be automatically tuned for your system and
-# for this to perform reasonably well.
-zpios_survey_base() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+baseline"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Disable ZFS's prefetching. For some reason still not clear to me
-# current prefetching policy is quite bad for a random workload.
-# Allowing the algorithm to detect a random workload and not do
-# anything may be the way to address this issue.
-zpios_survey_prefetch() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+prefetch"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
- -o "--noprefetch" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Simulating a zerocopy IO path should improve performance by freeing up
-# lots of CPU which is wasted move data between buffers.
-zpios_survey_zerocopy() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+zerocopy"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
- -o "--zerocopy" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Disabling checksumming should show some (if small) improvement
-# simply due to freeing up a modest amount of CPU.
-zpios_survey_checksum() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+checksum"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
- -s "set checksum=off" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Increasing the pending IO depth also seems to improve things likely
-# at the expense of latency. This should be explored more because I'm
-# seeing a much bigger impact there that I would have expected. There
-# may be some low hanging fruit to be found here.
-zpios_survey_pending() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+pending"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} \
- zfs="zfs_vdev_max_pending=1024" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-# Apply all possible turning concurrently to get a best case number
-zpios_survey_all() {
- TEST_NAME="${ZPOOL_CONFIG}+${ZPIOS_TEST}+all"
- print_header ${TEST_NAME}
-
- ${ZFS_SH} ${VERBOSE_FLAG} \
- zfs="zfs_vdev_max_pending=1024" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZPIOS_SH} ${VERBOSE_FLAG} -c ${ZPOOL_CONFIG} -t ${ZPIOS_TEST} \
- -o "--noprefetch --zerocopy" \
- -s "set checksum=off" | \
- tee -a ${ZPIOS_SURVEY_LOG}
- ${ZFS_SH} -u ${VERBOSE_FLAG} | \
- tee -a ${ZPIOS_SURVEY_LOG}
-}
-
-
-PROFILE=
-ZPOOL_NAME=zpios-survey
-ZPOOL_CONFIG=zpool-config.sh
-ZPIOS_TEST=zpios-test.sh
-ZPIOS_SURVEY_LOG=/dev/null
-
-while getopts 'hvpc:t:l:' OPTION; do
- case $OPTION in
- h)
- usage
- exit 1
- ;;
- v)
- VERBOSE=1
- VERBOSE_FLAG="-v"
- ;;
- p)
- PROFILE=1
- PROFILE_FLAG="-p"
- ;;
- c)
- ZPOOL_CONFIG=${OPTARG}
- ;;
- t)
- ZPIOS_TEST=${OPTARG}
- ;;
- l)
- ZPIOS_SURVEY_LOG=${OPTARG}
- ;;
- ?)
- usage
- exit
- ;;
- esac
-done
-
-if [ $(id -u) != 0 ]; then
- die "Must run as root"
-fi
-
-zpios_survey_base
-zpios_survey_prefetch
-zpios_survey_zerocopy
-zpios_survey_checksum
-zpios_survey_pending
-zpios_survey_all
-
-exit 0