fi
}
+# Get block dev scheduler list
+get_scheduler_list() {
+ local b=$1 p
+ p=/sys/block/"$b"/queue/scheduler
+ if [ -e "$p" ]; then
+ sed 's/[][]//g' /sys/block/"$b"/queue/scheduler
+ else
+ return 1
+ fi
+}
+
# Get a /dev/... path that points at dm device number $1. Set its I/O scheduler
# to $2 and its timeout to $3. The shell script that includes this file must
# define a function get_bdev_path() that translates device number $1 into a
QUICK=1
test_io_schedulers() {
- local dev m
+ local dev m dm scheds
# Load all I/O scheduler kernel modules
for m in "/lib/modules/$(uname -r)/kernel/block/"*.ko; do
for mq in y n; do
use_blk_mq ${mq} || return $?
dev=$(get_bdev 0) || return $?
- for sched in noop deadline bfq cfq; do
- set_scheduler "$(basename "$(readlink -f "${dev}")")" $sched \
+ dm=$(basename "$(readlink -f "${dev}")") || return $?
+ scheds="$(get_scheduler_list "$dm")" || return $?
+ for sched in $scheds; do
+ set_scheduler "$dm" "$sched" \
>>"$FULL" 2>&1 || continue
echo "I/O scheduler: $sched; use_blk_mq: $mq" >>"$FULL"
run_fio --verify=md5 --rw=randwrite --bs=4K --size=64K \
--ioengine=libaio --iodepth=64 \
--iodepth_batch=32 --group_reporting --sync=1 \
--direct=1 --filename="$dev" \
- --name=${sched} --thread --numjobs=1 \
+ --name="${sched}" --thread --numjobs=1 \
--output="${RESULTS_DIR}/nvmeof-mp/012-${sched}-${mq}.txt" \
>>"$FULL" ||
return $?
QUICK=1
test_io_schedulers() {
- local dev m
+ local dev m dm scheds
# Load all I/O scheduler kernel modules
for m in "/lib/modules/$(uname -r)/kernel/block/"*.ko; do
[ $mq = n ] && ! _have_legacy_dm && continue
use_blk_mq ${mq} ${mq} || return $?
dev=$(get_bdev 0) || return $?
- for sched in noop deadline bfq cfq; do
- set_scheduler "$(basename "$(readlink -f "${dev}")")" $sched \
+ dm=$(basename "$(readlink -f "${dev}")") || return $?
+ scheds="$(get_scheduler_list "$dm")" || return $?
+ for sched in $scheds; do
+ set_scheduler "$dm" "$sched" \
>>"$FULL" 2>&1 || continue
echo "I/O scheduler: $sched; use_blk_mq: $mq" >>"$FULL"
run_fio --verify=md5 --rw=randwrite --bs=4K --size=64K \
--ioengine=libaio --iodepth=64 \
--iodepth_batch=32 --group_reporting --sync=1 \
--direct=1 --filename="$dev" \
- --name=${sched} --thread --numjobs=1 \
+ --name="${sched}" --thread --numjobs=1 \
--output="${RESULTS_DIR}/srp/012-${sched}-${mq}.txt" \
>>"$FULL" ||
return $?