Re: [PATCH v2 0/5] Add support for specifying ramp up period by amount of IO
Vincent Fu <[email protected]> Wed, 24 Dec 2025 14:44:13 -0500
| Newsgroups | org.kernel.vger.fio |
|---|---|
| Message-ID | <CAOp=CX=fRTQnd=CEM9=7fprFF=gbK+Gs37AiHxh3-ivdiRLcqA@mail.gmail.com> |
On Fri, Dec 19, 2025 at 8:43 AM Jan Kara <[email protected]> wrote: > > Hello! > > In some cases the ramp up period is not easy to define by amount of time. This > is for example a case of buffered writes measurement where we want to start > measuring only once dirty throttling kicks in. The time until dirty throttling > kicks in depends on dirty limit (easy to figure out) and speed of writes to the > page cache (difficult to know in advance). This patch series adds to fio an > option to specify ramp up period in terms of amount to IO - i.e., the ramp up > period finishes once given amount of IO is done. > > Changes since v1: > * Improved documentation to explain behavior with group reporting, replace wrong > note about default unit being megabytes > * Add sanity checks for inconsistent ramp_size values within reporting group > and usage of both ramp_size and ramp_time for a single job. > * Fix fio server support for the new option > > Honza > > Previous versions: > Link: http://lore.kernel.org/r/[email protected] # v1 I see some evidence that this series lowers reported performance levels. I measured 13.7-13.9M IOPS before applying this series but 13.5-13.6M IOPS with these patches applied. https://github.com/vincentkfu/fio has these patches applied. vincent@meeki:~/fio-dev/fio-canonical$ ./perftest.sh fio-3.41-65-gd028 **current tip read: IOPS=13.7M, BW=52.2GiB/s (56.0GB/s)(522GiB/10000msec) issued rwts: total=136806337,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.6GiB/s (56.5GB/s)(526GiB/10000msec) issued rwts: total=137832044,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.6GiB/s (56.5GB/s)(526GiB/10000msec) issued rwts: total=138017790,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.8GiB/s (56.7GB/s)(528GiB/10000msec) issued rwts: total=138339173,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.7M, BW=52.3GiB/s (56.2GB/s)(523GiB/10000msec) issued rwts: total=137141350,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.9M, BW=52.9GiB/s (56.8GB/s)(529GiB/10000msec) issued rwts: total=138603471,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.5GiB/s (56.4GB/s)(525GiB/10000msec) issued rwts: total=137722819,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.7GiB/s (56.6GB/s)(527GiB/10000msec) issued rwts: total=138275811,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.5GiB/s (56.4GB/s)(525GiB/10000msec) issued rwts: total=137584790,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.8M, BW=52.7GiB/s (56.6GB/s)(527GiB/10000msec) issued rwts: total=138181955,0,0,0 short=0,0,0,0 dropped=0,0,0,0 fio-3.41-70-g19ea **with series applied read: IOPS=13.6M, BW=51.8GiB/s (55.6GB/s)(518GiB/10000msec) issued rwts: total=135851169,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.6M, BW=51.7GiB/s (55.6GB/s)(517GiB/10000msec) issued rwts: total=135621968,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.6M, BW=51.8GiB/s (55.7GB/s)(518GiB/10000msec) issued rwts: total=135896609,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.6M, BW=52.0GiB/s (55.8GB/s)(520GiB/10000msec) issued rwts: total=136300772,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.6M, BW=51.9GiB/s (55.8GB/s)(519GiB/10000msec) issued rwts: total=136113441,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.5M, BW=51.6GiB/s (55.4GB/s)(516GiB/10000msec) issued rwts: total=135364363,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.6M, BW=52.0GiB/s (55.9GB/s)(520GiB/10000msec) issued rwts: total=136375631,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.5M, BW=51.5GiB/s (55.3GB/s)(515GiB/10000msec) issued rwts: total=135055043,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.5M, BW=51.5GiB/s (55.3GB/s)(515GiB/10000msec) issued rwts: total=135058705,0,0,0 short=0,0,0,0 dropped=0,0,0,0 read: IOPS=13.5M, BW=51.5GiB/s (55.3GB/s)(515GiB/10000msec) issued rwts: total=135092086,0,0,0 short=0,0,0,0 dropped=0,0,0,0 This is the script I ran: -------------------------------------------------- #!/usr/bin/env bash ITERATIONS=10 echo $(./fio-old --version) for (( i=0; i<$ITERATIONS; i++ )) do ./fio-old --name=test --ioengine=null --filesize=1T --time_based --ramp_time=5s --runtime=10s | grep "read:\|rwts" done echo echo $(./fio-new --version) for (( i=0; i<$ITERATIONS; i++ )) do ./fio-new --name=test --ioengine=null --filesize=1T --time_based --ramp_time=5s --runtime=10s | grep "read:\|rwts" done -------------------------------------------------- Vincent