Do not enable stack tracer for ZFS performance test
Linux ZFS test suite runs with /proc/sys/kernel/stack_tracer_enabled=1, via zfs.sh script, which has negative performance impact, up to 40%. Since large stack is a rare issue now, preferred behavior would be: - making stack tracer an opt-in feature for zfs.sh - zfs-test.sh enables stack tracer only when requested Reviewed-by: George Melikov <mail@gmelikov.ru> Reviewed-by: Richard Elling <Richard.Elling@RichardElling.com> Reviewed-by: John Kennedy <john.kennedy@delphix.com> Signed-off-by: Tony Nguyen <tony.nguyen@delphix.com> #8173
This commit is contained in:
parent
d6496040d9
commit
ef57371a92
|
@ -35,6 +35,7 @@ QUIET=
|
||||||
CLEANUP="yes"
|
CLEANUP="yes"
|
||||||
CLEANUPALL="no"
|
CLEANUPALL="no"
|
||||||
LOOPBACK="yes"
|
LOOPBACK="yes"
|
||||||
|
STACK_TRACER="no"
|
||||||
FILESIZE="4G"
|
FILESIZE="4G"
|
||||||
RUNFILE=${RUNFILE:-"linux.run"}
|
RUNFILE=${RUNFILE:-"linux.run"}
|
||||||
FILEDIR=${FILEDIR:-/var/tmp}
|
FILEDIR=${FILEDIR:-/var/tmp}
|
||||||
|
@ -254,7 +255,7 @@ constrain_path() {
|
||||||
usage() {
|
usage() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
USAGE:
|
USAGE:
|
||||||
$0 [hvqxkf] [-s SIZE] [-r RUNFILE] [-t PATH] [-u USER]
|
$0 [hvqxkfS] [-s SIZE] [-r RUNFILE] [-t PATH] [-u USER]
|
||||||
|
|
||||||
DESCRIPTION:
|
DESCRIPTION:
|
||||||
ZFS Test Suite launch script
|
ZFS Test Suite launch script
|
||||||
|
@ -266,6 +267,7 @@ OPTIONS:
|
||||||
-x Remove all testpools, dm, lo, and files (unsafe)
|
-x Remove all testpools, dm, lo, and files (unsafe)
|
||||||
-k Disable cleanup after test failure
|
-k Disable cleanup after test failure
|
||||||
-f Use files only, disables block device tests
|
-f Use files only, disables block device tests
|
||||||
|
-S Enable stack tracer (negative performance impact)
|
||||||
-c Only create and populate constrained path
|
-c Only create and populate constrained path
|
||||||
-I NUM Number of iterations
|
-I NUM Number of iterations
|
||||||
-d DIR Use DIR for files and loopback devices
|
-d DIR Use DIR for files and loopback devices
|
||||||
|
@ -289,7 +291,7 @@ $0 -x
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
while getopts 'hvqxkfcd:s:r:?t:T:u:I:' OPTION; do
|
while getopts 'hvqxkfScd:s:r:?t:T:u:I:' OPTION; do
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
h)
|
h)
|
||||||
usage
|
usage
|
||||||
|
@ -311,6 +313,9 @@ while getopts 'hvqxkfcd:s:r:?t:T:u:I:' OPTION; do
|
||||||
f)
|
f)
|
||||||
LOOPBACK="no"
|
LOOPBACK="no"
|
||||||
;;
|
;;
|
||||||
|
S)
|
||||||
|
STACK_TRACER="yes"
|
||||||
|
;;
|
||||||
c)
|
c)
|
||||||
constrain_path
|
constrain_path
|
||||||
exit
|
exit
|
||||||
|
@ -449,7 +454,11 @@ constrain_path
|
||||||
#
|
#
|
||||||
# Verify the ZFS module stack is loaded.
|
# Verify the ZFS module stack is loaded.
|
||||||
#
|
#
|
||||||
sudo "${ZFS_SH}" &>/dev/null
|
if [ "$STACK_TRACER" = "yes" ]; then
|
||||||
|
sudo "${ZFS_SH}" -S &>/dev/null
|
||||||
|
else
|
||||||
|
sudo "${ZFS_SH}" &>/dev/null
|
||||||
|
fi
|
||||||
|
|
||||||
#
|
#
|
||||||
# Attempt to cleanup all previous state for a new test run.
|
# Attempt to cleanup all previous state for a new test run.
|
||||||
|
@ -561,6 +570,7 @@ msg "NUM_DISKS: $NUM_DISKS"
|
||||||
msg "FILESIZE: $FILESIZE"
|
msg "FILESIZE: $FILESIZE"
|
||||||
msg "ITERATIONS: $ITERATIONS"
|
msg "ITERATIONS: $ITERATIONS"
|
||||||
msg "TAGS: $TAGS"
|
msg "TAGS: $TAGS"
|
||||||
|
msg "STACK_TRACER: $STACK_TRACER"
|
||||||
msg "Keep pool(s): $KEEP"
|
msg "Keep pool(s): $KEEP"
|
||||||
msg "Missing util(s): $STF_MISSING_BIN"
|
msg "Missing util(s): $STF_MISSING_BIN"
|
||||||
msg ""
|
msg ""
|
||||||
|
|
|
@ -14,6 +14,7 @@ fi
|
||||||
PROG=zfs.sh
|
PROG=zfs.sh
|
||||||
VERBOSE="no"
|
VERBOSE="no"
|
||||||
UNLOAD="no"
|
UNLOAD="no"
|
||||||
|
STACK_TRACER="no"
|
||||||
|
|
||||||
ZED_PIDFILE=${ZED_PIDFILE:-/var/run/zed.pid}
|
ZED_PIDFILE=${ZED_PIDFILE:-/var/run/zed.pid}
|
||||||
LDMOD=${LDMOD:-/sbin/modprobe}
|
LDMOD=${LDMOD:-/sbin/modprobe}
|
||||||
|
@ -33,7 +34,7 @@ KMOD_ZFS=${KMOD_ZFS:-zfs}
|
||||||
usage() {
|
usage() {
|
||||||
cat << EOF
|
cat << EOF
|
||||||
USAGE:
|
USAGE:
|
||||||
$0 [hvud] [module-options]
|
$0 [hvudS] [module-options]
|
||||||
|
|
||||||
DESCRIPTION:
|
DESCRIPTION:
|
||||||
Load/unload the ZFS module stack.
|
Load/unload the ZFS module stack.
|
||||||
|
@ -42,10 +43,11 @@ OPTIONS:
|
||||||
-h Show this message
|
-h Show this message
|
||||||
-v Verbose
|
-v Verbose
|
||||||
-u Unload modules
|
-u Unload modules
|
||||||
|
-S Enable kernel stack tracer
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
|
|
||||||
while getopts 'hvu' OPTION; do
|
while getopts 'hvuS' OPTION; do
|
||||||
case $OPTION in
|
case $OPTION in
|
||||||
h)
|
h)
|
||||||
usage
|
usage
|
||||||
|
@ -57,6 +59,9 @@ while getopts 'hvu' OPTION; do
|
||||||
u)
|
u)
|
||||||
UNLOAD="yes"
|
UNLOAD="yes"
|
||||||
;;
|
;;
|
||||||
|
S)
|
||||||
|
STACK_TRACER="yes"
|
||||||
|
;;
|
||||||
?)
|
?)
|
||||||
usage
|
usage
|
||||||
exit
|
exit
|
||||||
|
@ -192,7 +197,7 @@ stack_clear() {
|
||||||
STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
|
STACK_MAX_SIZE=/sys/kernel/debug/tracing/stack_max_size
|
||||||
STACK_TRACER_ENABLED=/proc/sys/kernel/stack_tracer_enabled
|
STACK_TRACER_ENABLED=/proc/sys/kernel/stack_tracer_enabled
|
||||||
|
|
||||||
if [ -e "$STACK_MAX_SIZE" ]; then
|
if [ "$STACK_TRACER" = "yes" ] && [ -e "$STACK_MAX_SIZE" ]; then
|
||||||
echo 1 >"$STACK_TRACER_ENABLED"
|
echo 1 >"$STACK_TRACER_ENABLED"
|
||||||
echo 0 >"$STACK_MAX_SIZE"
|
echo 0 >"$STACK_MAX_SIZE"
|
||||||
fi
|
fi
|
||||||
|
|
Loading…
Reference in New Issue