Re: [PATCH REPOST blktests v2 7/9] nvme-rc: Calculate IO size for fio jobs

From: Hannes Reinecke
Date: Fri Apr 21 2023 - 02:33:55 EST


On 4/21/23 08:05, Daniel Wagner wrote:
Introduce two new function to calculate the IO size for fio jobs.

_nvme_calc_io_size() returns the jobs size for _run_fio_verify_io()
function. Reduce the max size of the job by one megabyte to make the
test more robust not to run out of space by accident. Note these fio
calls run with just one jobs.

_nvme_calc_run_io_size() returns the jobs size for _run_fio_rand_io()
function. Again, the jobs size is not maxing out the space and most
important it takes the number of jobs into account which are
created (number of CPUs).

Signed-off-by: Daniel Wagner <dwagner@xxxxxxx>
---
tests/nvme/010 | 5 +++--
tests/nvme/011 | 5 +++--
tests/nvme/032 | 6 ++++--
tests/nvme/034 | 4 +++-
tests/nvme/040 | 4 +++-
tests/nvme/045 | 4 +++-
tests/nvme/047 | 6 ++++--
tests/nvme/rc | 20 ++++++++++++++++++++
8 files changed, 43 insertions(+), 11 deletions(-)

diff --git a/tests/nvme/010 b/tests/nvme/010
index 805f80d40620..d209335c2158 100755
--- a/tests/nvme/010
+++ b/tests/nvme/010
@@ -25,6 +25,7 @@ test() {
local loop_dev
local file_path="${TMPDIR}/img"
local subsys_name="blktests-subsystem-1"
+ local io_size
truncate -s "${nvme_img_size}" "${file_path}"
@@ -41,8 +42,8 @@ test() {
cat "/sys/block/${nvmedev}n1/uuid"
cat "/sys/block/${nvmedev}n1/wwid"
- _run_fio_verify_io --size=${nvme_img_size} \
- --filename="/dev/${nvmedev}n1"
+ io_size="$(_nvme_calc_io_size "${nvme_img_size}")"
+ _run_fio_verify_io --size="${io_size}" --filename="/dev/${nvmedev}n1"
_nvme_disconnect_subsys "${subsys_name}"
diff --git a/tests/nvme/011 b/tests/nvme/011
index da8cbac11124..294ba4333aff 100755
--- a/tests/nvme/011
+++ b/tests/nvme/011
@@ -25,6 +25,7 @@ test() {
local file_path
local file_path="${TMPDIR}/img"
local subsys_name="blktests-subsystem-1"
+ local io_size
truncate -s "${nvme_img_size}" "${file_path}"
@@ -39,8 +40,8 @@ test() {
cat "/sys/block/${nvmedev}n1/uuid"
cat "/sys/block/${nvmedev}n1/wwid"
- _run_fio_verify_io --size="${nvme_img_size}" \
- --filename="/dev/${nvmedev}n1"
+ io_size="$(_nvme_calc_io_size "${nvme_img_size}")"
+ _run_fio_verify_io --size="${io_size}" --filename="/dev/${nvmedev}n1"
_nvme_disconnect_subsys "${subsys_name}"
diff --git a/tests/nvme/032 b/tests/nvme/032
index 9f9756b0f959..ad701cea877d 100755
--- a/tests/nvme/032
+++ b/tests/nvme/032
@@ -33,13 +33,15 @@ test_device() {
local sysfs
local attr
local m
+ local rand_io_size
pdev="$(_get_pci_dev_from_blkdev)"
sysfs="/sys/bus/pci/devices/${pdev}"
# start fio job
- _run_fio_rand_io --filename="$TEST_DEV" --size="${nvme_img_size}" \
- --group_reporting --time_based --runtime=1m &> /dev/null &
+ rand_io_size="$(_nvme_calc_rand_io_size "${nvme_img_size}")"
+ _run_fio_rand_io --filename="$TEST_DEV" --size="${rand_io_size}" \
+ --group_reporting --time_based --runtime=1m > /dev/null &
sleep 5
diff --git a/tests/nvme/034 b/tests/nvme/034
index e0ede717c373..0df8bef98e5e 100755
--- a/tests/nvme/034
+++ b/tests/nvme/034
@@ -19,6 +19,7 @@ test_device() {
local ctrldev
local nsdev
local port
+ local io_size
echo "Running ${TEST_NAME}"
@@ -26,7 +27,8 @@ test_device() {
port=$(_nvmet_passthru_target_setup "${subsys}")
nsdev=$(_nvmet_passthru_target_connect "${nvme_trtype}" "${subsys}")
- _run_fio_verify_io --size="${nvme_img_size}" --filename="${nsdev}"
+ io_size="$(_nvme_calc_io_size "${nvme_img_size}")"
+ _run_fio_verify_io --size="${io_size}" --filename="${nsdev}"
_nvme_disconnect_subsys "${subsys}"
_nvmet_passthru_target_cleanup "${port}" "${subsys}"
diff --git a/tests/nvme/040 b/tests/nvme/040
index 31b7cafef4be..b033a2a866f2 100755
--- a/tests/nvme/040
+++ b/tests/nvme/040
@@ -21,6 +21,7 @@ test() {
local port
local loop_dev
local nvmedev
+ local rand_io_size
echo "Running ${TEST_NAME}"
@@ -37,7 +38,8 @@ test() {
# start fio job
echo "starting background fio"
- _run_fio_rand_io --filename="/dev/${nvmedev}n1" --size="${nvme_img_size}" \
+ rand_io_size="$(_nvme_calc_rand_io_size "${nvme_img_size}")"
+ _run_fio_rand_io --filename="/dev/${nvmedev}n1" --size="${rand_io_size}" \
--group_reporting --ramp_time=5 \
--time_based --runtime=1m &> /dev/null &
sleep 5
diff --git a/tests/nvme/045 b/tests/nvme/045
index 99012f6bed8f..f50087cccb6a 100755
--- a/tests/nvme/045
+++ b/tests/nvme/045
@@ -31,6 +31,7 @@ test() {
local ctrlkey
local new_ctrlkey
local ctrldev
+ local rand_io_size
echo "Running ${TEST_NAME}"
@@ -120,7 +121,8 @@ test() {
nvmedev=$(_find_nvme_dev "${subsys_name}")
- _run_fio_rand_io --size=4m --filename="/dev/${nvmedev}n1"
+ rand_io_size="$(_nvme_calc_rand_io_size 4m)"
+ _run_fio_rand_io --size="${rand_io_size}" --filename="/dev/${nvmedev}n1"
_nvme_disconnect_subsys "${subsys_name}"
diff --git a/tests/nvme/047 b/tests/nvme/047
index b5a8d469a983..6a7599bc2e91 100755
--- a/tests/nvme/047
+++ b/tests/nvme/047
@@ -25,6 +25,7 @@ test() {
local port
local nvmedev
local loop_dev
+ local rand_io_size
local file_path="$TMPDIR/img"
local subsys_name="blktests-subsystem-1"
@@ -42,7 +43,8 @@ test() {
nvmedev=$(_find_nvme_dev "${subsys_name}")
- _xfs_run_fio_verify_io /dev/"${nvmedev}n1" "1m" || echo FAIL
+ rand_io_size="$(_nvme_calc_rand_io_size 4M)"
+ _run_fio_rand_io --filename="/dev/${nvmedev}n1" --size="${rand_io_size}"
_nvme_disconnect_subsys "${subsys_name}" >> "$FULL" 2>&1
@@ -50,7 +52,7 @@ test() {
--nr-write-queues 1 \
--nr-poll-queues 1 || echo FAIL
- _xfs_run_fio_verify_io /dev/"${nvmedev}n1" "1m" || echo FAIL
+ _run_fio_rand_io --filename="/dev/${nvmedev}n1" --size="${rand_io_size}"
_nvme_disconnect_subsys "${subsys_name}" >> "$FULL" 2>&1
diff --git a/tests/nvme/rc b/tests/nvme/rc
index b1f2dacae125..172f510527ed 100644
--- a/tests/nvme/rc
+++ b/tests/nvme/rc
@@ -150,6 +150,26 @@ _test_dev_nvme_nsid() {
cat "${TEST_DEV_SYSFS}/nsid"
}
+_nvme_calc_io_size() {
+ local img_size_mb
+ local io_size_mb
+
+ img_size_mb="$(convert_to_mb "$1")"
+ io_size_mb="$((img_size_mb - 1))"
+
+ echo "${io_size_mb}m"
+}
+
+_nvme_calc_rand_io_size() {
+ local img_size_mb
+ local io_size_mb
+
+ img_size_mb="$(convert_to_mb "$1")"
+ io_size_mb="$(printf "%d" $((((img_size_mb * 1024 * 1024) / $(nproc) - 1) / 1024)))"
+

... ending with ridiculous small io sizes on machines with lots of CPUs.
Please cap nproc by something sane like 32.

+ echo "${io_size_mb}k"
+}
+
_nvme_fcloop_add_rport() {
local local_wwnn="$1"
local local_wwpn="$2"

Cheers,

Hannes
--
Dr. Hannes Reinecke Kernel Storage Architect
hare@xxxxxxx +49 911 74053 688
SUSE Software Solutions GmbH, Maxfeldstr. 5, 90409 Nürnberg
HRB 36809 (AG Nürnberg), Geschäftsführer: Ivo Totev, Andrew
Myers, Andrew McDonald, Martje Boudien Moerman