Skip to content

Commit

Permalink
block/035: Test shared queue fairness
Browse files Browse the repository at this point in the history
Signed-off-by: Bart Van Assche <[email protected]>
  • Loading branch information
bvanassche committed Mar 21, 2024
1 parent 607513e commit ea7a5db
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 0 deletions.
75 changes: 75 additions & 0 deletions tests/block/035
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
# Copyright 2024 Google LLC
#
# Test fairness if hardware queues share a tag set across request queues.

. tests/block/rc
. common/null_blk

DESCRIPTION="shared tag set fairness"
TIMED=1

requires() {
_have_fio
_have_null_blk
}

test() {
local runtime=30

echo "Running ${TEST_NAME}"

if ! _init_null_blk shared_tags=1 irqmode=2 nr_devices=0; then
echo "Loading null_blk failed"
return 1
fi
local nullb_params=(
completion_nsec=$((10**6)) # 1 ms
hw_queue_depth=64
memory_backed=1
size=1 # MiB
submit_queues=1
power=1
)
if ! _configure_null_blk nullb0 "${nullb_params[@]}"; then
echo "Configuring null_blk failed (1/2)"
return 1
fi
local nullb_params=(
completion_nsec=$((10**8)) # 100 ms
hw_queue_depth=64
memory_backed=1
size=1 # MiB
submit_queues=1
power=1
)
if ! _configure_null_blk nullb1 "${nullb_params[@]}"; then
echo "Configuring null_blk failed (2/2)"
return 1
fi
local fio_output=${RESULTS_DIR}/block/fio-output-block-035.txt
fio --rw=randwrite --ioengine=io_uring --iodepth=64 \
--direct=1 --runtime=${runtime} --time_based=1 \
--name=nullb0 --filename=/dev/nullb0 \
--name=nullb1 --filename=/dev/nullb1 \
--output="${fio_output}" \
>>"$FULL"
local fio_status=$?
rmdir /sys/kernel/config/nullb/nullb*
_exit_null_blk
if [ $fio_status != 0 ]; then
echo "Failed (fio status = $fio_status)"
return
fi
local iops1 iops2 rest
read -r iops1 iops2 rest \
<<<"$(sed -n 's/.*IOPS=\([0-9]*\).*/\1/p' <"${fio_output}" | xargs)"
if [ -z "$iops1" ] || [ -z "$iops2" ] ||
[ "$iops1" -lt $((100*runtime)) ] ||
[ "$iops2" -lt $((10*runtime)) ]; then
echo "Error: IOPS too low ($iops1; $iops2)"
return 1
fi
echo "Passed"
}
2 changes: 2 additions & 0 deletions tests/block/035.out
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Running block/035
Passed

0 comments on commit ea7a5db

Please sign in to comment.