]> www.infradead.org Git - nvme.git/commitdiff
selftests: ublk: run stress tests in parallel
authorMing Lei <ming.lei@redhat.com>
Sat, 12 Apr 2025 02:30:21 +0000 (10:30 +0800)
committerJens Axboe <axboe@kernel.dk>
Thu, 17 Apr 2025 01:32:18 +0000 (19:32 -0600)
Run stress tests in parallel, meantime add shell local function to
simplify the two stress tests.

Signed-off-by: Ming Lei <ming.lei@redhat.com>
Link: https://lore.kernel.org/r/20250412023035.2649275-6-ming.lei@redhat.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
tools/testing/selftests/ublk/test_common.sh
tools/testing/selftests/ublk/test_stress_01.sh
tools/testing/selftests/ublk/test_stress_02.sh

index c43bd1d5c9c085444be215a907228366e16868b0..87fd0c824b770bfd1614783fe1b0f0da80d2b2a0 100755 (executable)
@@ -230,7 +230,7 @@ __run_io_and_remove()
        local kill_server=$3
 
        fio --name=job1 --filename=/dev/ublkb"${dev_id}" --ioengine=libaio \
-               --rw=readwrite --iodepth=64 --size="${size}" --numjobs=4 \
+               --rw=readwrite --iodepth=256 --size="${size}" --numjobs=4 \
                --runtime=20 --time_based > /dev/null 2>&1 &
        sleep 2
        if [ "${kill_server}" = "yes" ]; then
@@ -248,6 +248,38 @@ __run_io_and_remove()
        wait
 }
 
+run_io_and_remove()
+{
+       local size=$1
+       local dev_id
+       shift 1
+
+       dev_id=$(_add_ublk_dev "$@")
+       _check_add_dev "$TID" $?
+
+       [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs. remove device(ublk add $*)"
+       if ! __run_io_and_remove "$dev_id" "${size}" "no"; then
+               echo "/dev/ublkc$dev_id isn't removed"
+               exit 255
+       fi
+}
+
+run_io_and_kill_daemon()
+{
+       local size=$1
+       local dev_id
+       shift 1
+
+       dev_id=$(_add_ublk_dev "$@")
+       _check_add_dev "$TID" $?
+
+       [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs kill ublk server(ublk add $*)"
+       if ! __run_io_and_remove "$dev_id" "${size}" "yes"; then
+               echo "/dev/ublkc$dev_id isn't removed res ${res}"
+               exit 255
+       fi
+}
+
 _ublk_test_top_dir()
 {
        cd "$(dirname "$0")" && pwd
index 61fdbdfe70bc47f7442dd72e284b1ba0b66b5930..7d3150f057d440078f62d2ac70efff9b8b25825c 100755 (executable)
@@ -7,37 +7,28 @@ ERR_CODE=0
 
 ublk_io_and_remove()
 {
-       local size=$1
-       local dev_id
-       shift 1
-
-       dev_id=$(_add_ublk_dev "$@")
-       _check_add_dev $TID $?
-
-       [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs. remove device(ublk add $*)"
-       if ! __run_io_and_remove "$dev_id" "${size}" "no"; then
-               echo "/dev/ublkc$dev_id isn't removed"
-               exit 255
+       run_io_and_remove "$@"
+       ERR_CODE=$?
+       if [ ${ERR_CODE} -ne 0 ]; then
+               echo "$TID failure: $*"
+               _show_result $TID $ERR_CODE
        fi
 }
 
-_prep_test "stress" "run IO and remove device"
-
-ublk_io_and_remove 8G -t null -q 4
-ERR_CODE=$?
-if [ ${ERR_CODE} -ne 0 ]; then
-       _show_result $TID $ERR_CODE
+if ! _have_program fio; then
+       exit "$UBLK_SKIP_CODE"
 fi
 
+_prep_test "stress" "run IO and remove device"
+
 _create_backfile 0 256M
+_create_backfile 1 128M
+_create_backfile 2 128M
 
-ublk_io_and_remove 256M -t loop -q 4 "${UBLK_BACKFILES[0]}"
-ERR_CODE=$?
-if [ ${ERR_CODE} -ne 0 ]; then
-       _show_result $TID $ERR_CODE
-fi
+ublk_io_and_remove 8G -t null -q 4 &
+ublk_io_and_remove 256M -t loop -q 4 "${UBLK_BACKFILES[0]}" &
+ublk_io_and_remove 256M -t stripe -q 4 "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" &
+wait
 
-ublk_io_and_remove 256M -t loop -q 4 -z "${UBLK_BACKFILES[0]}"
-ERR_CODE=$?
 _cleanup_test "stress"
 _show_result $TID $ERR_CODE
index 7643e58637c8b85fcc7c826d019c7ba345da2688..1a9065125ae1b2caa61e882ad4cf17d05ff77732 100755 (executable)
@@ -5,39 +5,30 @@
 TID="stress_02"
 ERR_CODE=0
 
+if ! _have_program fio; then
+       exit "$UBLK_SKIP_CODE"
+fi
+
 ublk_io_and_kill_daemon()
 {
-       local size=$1
-       local dev_id
-       shift 1
-
-       dev_id=$(_add_ublk_dev "$@")
-       _check_add_dev $TID $?
-
-       [ "$UBLK_TEST_QUIET" -eq 0 ] && echo "run ublk IO vs kill ublk server(ublk add $*)"
-       if ! __run_io_and_remove "$dev_id" "${size}" "yes"; then
-               echo "/dev/ublkc$dev_id isn't removed res ${res}"
-               exit 255
+       run_io_and_kill_daemon "$@"
+       ERR_CODE=$?
+       if [ ${ERR_CODE} -ne 0 ]; then
+               echo "$TID failure: $*"
+               _show_result $TID $ERR_CODE
        fi
 }
 
 _prep_test "stress" "run IO and kill ublk server"
 
-ublk_io_and_kill_daemon 8G -t null -q 4
-ERR_CODE=$?
-if [ ${ERR_CODE} -ne 0 ]; then
-       _show_result $TID $ERR_CODE
-fi
-
 _create_backfile 0 256M
+_create_backfile 1 128M
+_create_backfile 2 128M
 
-ublk_io_and_kill_daemon 256M -t loop -q 4 "${UBLK_BACKFILES[0]}"
-ERR_CODE=$?
-if [ ${ERR_CODE} -ne 0 ]; then
-       _show_result $TID $ERR_CODE
-fi
+ublk_io_and_kill_daemon 8G -t null -q 4 &
+ublk_io_and_kill_daemon 256M -t loop -q 4 "${UBLK_BACKFILES[0]}" &
+ublk_io_and_kill_daemon 256M -t stripe -q 4 "${UBLK_BACKFILES[1]}" "${UBLK_BACKFILES[2]}" &
+wait
 
-ublk_io_and_kill_daemon 256M -t loop -q 4 -z "${UBLK_BACKFILES[0]}"
-ERR_CODE=$?
 _cleanup_test "stress"
 _show_result $TID $ERR_CODE