mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Hannes Reinecke <hare@suse.de>
To: Daniel Wagner <dwagner@suse.de>, linux-nvme@lists.infradead.org
Cc: linux-kernel@vger.kernel.org, linux-block@vger.kernel.org,
	Chaitanya Kulkarni <kch@nvidia.com>,
	Shin'ichiro Kawasaki <shinichiro@fastmail.com>
Subject: Re: [PATCH REPOST blktests v2 7/9] nvme-rc: Calculate IO size for fio jobs
Date: Fri, 21 Apr 2023 08:33:46 +0200	[thread overview]
Message-ID: <6aa42bc9-e04e-cfc6-32cf-f1739944070b@suse.de> (raw)
In-Reply-To: <20230421060505.10132-8-dwagner@suse.de>

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@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@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


  reply	other threads:[~2023-04-21  6:33 UTC|newest]

Thread overview: 44+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-04-21  6:04 [PATCH REPOST blktests v2 0/9] nvme testsuite runtime optimization Daniel Wagner
2023-04-21  6:04 ` [PATCH REPOST blktests v2 1/9] nvme-rc: Auto convert test device size info Daniel Wagner
2023-04-21  6:40   ` Hannes Reinecke
2023-04-28  2:39   ` Shinichiro Kawasaki
2023-04-21  6:04 ` [PATCH REPOST blktests v2 2/9] nvme: Do not hard code device size for dd test Daniel Wagner
2023-04-21  6:23   ` Hannes Reinecke
2023-04-28  2:44   ` Shinichiro Kawasaki
2023-05-02 12:54     ` Daniel Wagner
2023-04-21  6:04 ` [PATCH REPOST blktests v2 3/9] common-xfs: Make size argument optional for _xfs_run_fio_verify_io Daniel Wagner
2023-04-21  6:27   ` Hannes Reinecke
2023-04-21  6:54     ` Daniel Wagner
2023-04-28  2:54       ` Shinichiro Kawasaki
2023-05-02 13:20         ` Daniel Wagner
2023-05-02 13:19     ` Daniel Wagner
2023-04-28  2:59   ` Shinichiro Kawasaki
2023-05-02 13:23     ` Daniel Wagner
2023-05-03  4:04       ` Shinichiro Kawasaki
2023-05-03  7:29         ` Daniel Wagner
2023-04-21  6:05 ` [PATCH REPOST blktests v2 4/9] nvme: Use runtime fio background jobs Daniel Wagner
2023-04-21  6:29   ` Hannes Reinecke
2023-04-21  6:57     ` Daniel Wagner
2023-04-28  4:29       ` Shinichiro Kawasaki
2023-05-02 14:22         ` Daniel Wagner
2023-04-21  6:05 ` [PATCH REPOST blktests v2 5/9] nvme: Make test image size configurable Daniel Wagner
2023-04-21  6:31   ` Hannes Reinecke
2023-04-28  3:08   ` Shinichiro Kawasaki
2023-04-21  6:05 ` [PATCH REPOST blktests v2 6/9] nvme-rc: Add minimal test image size requirement Daniel Wagner
2023-04-21  6:31   ` Hannes Reinecke
2023-04-21  6:05 ` [PATCH REPOST blktests v2 7/9] nvme-rc: Calculate IO size for fio jobs Daniel Wagner
2023-04-21  6:33   ` Hannes Reinecke [this message]
2023-04-21  7:03     ` Daniel Wagner
2023-04-28  3:57       ` Shinichiro Kawasaki
2023-04-28  4:00   ` Shinichiro Kawasaki
2023-05-02 15:45     ` Daniel Wagner
2023-05-02 16:25       ` Daniel Wagner
2023-04-21  6:05 ` [PATCH REPOST blktests v2 8/9] nvme-rc: Move discovery generation counter code to rc Daniel Wagner
2023-04-21  6:38   ` Hannes Reinecke
2023-04-28  4:08   ` Shinichiro Kawasaki
2023-04-28  4:23   ` Shinichiro Kawasaki
2023-05-02 15:56     ` Daniel Wagner
2023-04-21  6:05 ` [PATCH REPOST blktests v2 9/9] nvme: Make the number iterations configurable Daniel Wagner
2023-04-21  6:38   ` Hannes Reinecke
2023-04-28  4:12   ` Shinichiro Kawasaki
2023-05-02 15:59     ` Daniel Wagner

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=6aa42bc9-e04e-cfc6-32cf-f1739944070b@suse.de \
    --to=hare@suse.de \
    --cc=dwagner@suse.de \
    --cc=kch@nvidia.com \
    --cc=linux-block@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-nvme@lists.infradead.org \
    --cc=shinichiro@fastmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®