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