Tested-by: Yi Zhang <yi.zhang@xxxxxxxxxx> Confirmed the patch fixed the throtl/002 failure on ppc64le/aarch64+64k on 6.13-rc4. On Wed, Dec 18, 2024 at 9:49 PM Nilay Shroff <nilay@xxxxxxxxxxxxx> wrote: > > The commit 60fa2e3ff3ab ("update max_sectors setting") added max-sectors > while setting up throttle device. So now we should also calculate block- > size which matches the wiops. Typically, size of each IO which is submitted > to the block device depends on the max-sectors setting of the block device. > For example setting max-sectors to 128 results into 64kb of max. IO size > which should be used for sending read/write command to the device. So take > into account the max-sectors-kb and wiops settings and calculate the > appropriate block-size which is then used to issue IO to the block device. > This change would result in always submitting 256 I/O read/write commands > to block device. > > Without this change on a system with 64k PAGE SIZE, using block-size of 1M > would result in 16 I/O being submitted to the device and this operation may > finish in a fraction of a section and result in test failure. However the > intent of this test case is that we want to test submitting 256 I/O after > setting wiops limit to 256. > > Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx> > Signed-off-by: Nilay Shroff <nilay@xxxxxxxxxxxxx> > --- > tests/throtl/002 | 14 ++++++++++---- > tests/throtl/rc | 4 ++++ > 2 files changed, 14 insertions(+), 4 deletions(-) > > diff --git a/tests/throtl/002 b/tests/throtl/002 > index 185e66b..02b0969 100755 > --- a/tests/throtl/002 > +++ b/tests/throtl/002 > @@ -14,6 +14,9 @@ test() { > echo "Running ${TEST_NAME}" > > local page_size max_secs > + local io_size_kb block_size > + local iops=256 > + > page_size=$(getconf PAGE_SIZE) > max_secs=$((page_size / 512)) > > @@ -21,12 +24,15 @@ test() { > return 1; > fi > > - _throtl_set_limits wiops=256 > - _throtl_test_io write 1M 1 > + io_size_kb=$(($(_throtl_get_max_io_size) * 1024)) > + block_size=$((iops * io_size_kb)) > + > + _throtl_set_limits wiops="${iops}" > + _throtl_test_io write "${block_size}" 1 > _throtl_remove_limits > > - _throtl_set_limits riops=256 > - _throtl_test_io read 1M 1 > + _throtl_set_limits riops="${iops}" > + _throtl_test_io read "${block_size}" 1 > _throtl_remove_limits > > _clean_up_throtl > diff --git a/tests/throtl/rc b/tests/throtl/rc > index 9c264bd..330e6b9 100644 > --- a/tests/throtl/rc > +++ b/tests/throtl/rc > @@ -71,6 +71,10 @@ _throtl_remove_limits() { > "$CGROUP2_DIR/$THROTL_DIR/io.max" > } > > +_throtl_get_max_io_size() { > + cat "/sys/block/$THROTL_DEV/queue/max_sectors_kb" > +} > + > _throtl_issue_io() { > local start_time > local end_time > -- > 2.45.2 > -- Best Regards, Yi Zhang