在 2024/12/17 21:14, Nilay Shroff 写道:
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.
Signed-off-by: Nilay Shroff <nilay@xxxxxxxxxxxxx>
---
tests/throtl/002 | 14 ++++++++++----
tests/throtl/rc | 4 ++++
2 files changed, 14 insertions(+), 4 deletions(-)
LGTM
Reviewed-by: Yu Kuai <yukuai3@xxxxxxxxxx>
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