Re: [PATCH v2 0/5] Add support for specifying ramp up period by amount of IO

Jan Kara <[email protected]> Wed, 7 Jan 2026 18:02:52 +0100
Newsgroups org.kernel.vger.fio
Message-ID <6c4o2uapq7t4tj52lvxrq4vxfiprvbp2lbdzcdbew6b6qmh7ur@kttcfiv2wrg2>
Hello!

On Wed 24-12-25 14:44:13, Vincent Fu wrote:
> On Fri, Dec 19, 2025 at 8:43 AM Jan Kara <[email protected]> wrote:
> > 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.

Thanks for reporting. I had a look and on my machine it actually improves
reported performance levels:

	    AVG	     STDDEV
old  50818766.4  845445.763
new  54965054.6 1113699.088

But IMHO this is mostly just a benchmarking noise due to changes in code
alignment wrt caches and possibly data structure alignment as well. Just if
I do two compilations of the same sources I get easily a difference in
averages ~2 million ops (i.e., ~4%). So at this point I don't think it's
really worth it to worry about...

								Honza

> 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
-- 
Jan Kara <[email protected]>
SUSE Labs, CR