[PATCH REPOST blktests v2 7/9] nvme-rc: Calculate IO size for fio jobs
Hannes Reinecke
hare at suse.de
Thu Apr 20 23:33:46 PDT 2023
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 at suse.de>
> ---
> 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 at suse.de +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
More information about the Linux-nvme
mailing list