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