All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Antoine Beaupré" <anarcat@torproject.org>
To: fio@vger.kernel.org
Subject: running jobs serially
Date: Wed, 18 May 2022 15:44:31 -0400	[thread overview]
Message-ID: <87pmkaeicg.fsf@curie.anarc.at> (raw)

[-- Attachment #1: Type: text/plain, Size: 6472 bytes --]

Hi,

One of the things I've been struggling for with fio for a while is how
to run batches of jobs with it.

I know I can call fio multiple times with different job files or
parameters, that's easy. But what I'd like to do is have a *single* job
file (or even multiple, actually) that would describe *multiple*
workloads that would need to be tested.

In particular, I'm looking for a way to reproduce the benchmarks
suggested here:

https://arstechnica.com/gadgets/2020/02/how-fast-are-your-disks-find-out-the-open-source-way-with-fio/

... without having to write all the glue the author had to make here:

https://github.com/jimsalterjrs/fio-test-scaffolding/

... which is quite a bit of goo.

I was hoping a simple thing like this would just do it:

[global]
# cargo-culting Salter
fallocate=none
ioengine=posixaio
runtime=60
time_based=1
end_fsync=1
stonewall=1
group_reporting=1

# Single 4KiB random read/write process
[randread-4k-4g-1x]
stonewall=1
rw=randread
bs=4k
size=4g
numjobs=1
iodepth=1

[randwrite-4k-4g-1x]
stonewall=1
rw=randwrite
bs=4k
size=4g
numjobs=1
iodepth=1

... but looking at the "normal" --output-format, it *looks* like the
jobs are all started at the same time. The files certainly seem to be
allocated all at once:

root@curie:/home# fio ars.fio 
randread-4k-4g-1x: (g=0): rw=randread, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=posixaio, iodepth=1
randwrite-4k-4g-1x: (g=1): rw=randwrite, bs=(R) 4096B-4096B, (W) 4096B-4096B, (T) 4096B-4096B, ioengine=posixaio, iodepth=1
fio-3.25
Starting 2 processes
Jobs: 1 (f=1): [r(1),P(1)][0.0%][r=16.5MiB/s][r=4228 IOPS][eta 49710d:06h:28m:14s]
randread-4k-4g-1x: (groupid=0, jobs=1): err= 0: pid=1033470: Wed May 18 15:41:04 2022
  read: IOPS=4754, BW=18.6MiB/s (19.5MB/s)(18.6MiB/1001msec)
    slat (nsec): min=1429, max=391678, avg=3239.76, stdev=6013.78
    clat (usec): min=163, max=6917, avg=205.05, stdev=108.47
     lat (usec): min=166, max=7308, avg=208.29, stdev=114.12
    clat percentiles (usec):
     |  1.00th=[  169],  5.00th=[  174], 10.00th=[  174], 20.00th=[  178],
     | 30.00th=[  182], 40.00th=[  184], 50.00th=[  196], 60.00th=[  200],
     | 70.00th=[  204], 80.00th=[  215], 90.00th=[  239], 95.00th=[  269],
     | 99.00th=[  412], 99.50th=[  478], 99.90th=[  635], 99.95th=[ 1045],
     | 99.99th=[ 6915]
   bw (  KiB/s): min=19248, max=19248, per=100.00%, avg=19248.00, stdev= 0.00, samples=1
   iops        : min= 4812, max= 4812, avg=4812.00, stdev= 0.00, samples=1
  lat (usec)   : 250=92.79%, 500=6.81%, 750=0.34%
  lat (msec)   : 2=0.04%, 10=0.02%
  cpu          : usr=2.90%, sys=2.90%, ctx=4767, majf=0, minf=44
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=4759,0,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1
randwrite-4k-4g-1x: (groupid=1, jobs=1): err= 0: pid=1033477: Wed May 18 15:41:04 2022
  write: IOPS=32.3k, BW=126MiB/s (132MB/s)(174MiB/1378msec); 0 zone resets
    slat (nsec): min=955, max=326042, avg=2726.11, stdev=2538.38
    clat (nsec): min=343, max=6896.5k, avg=18139.12, stdev=69899.75
     lat (usec): min=10, max=6899, avg=20.87, stdev=70.02
    clat percentiles (usec):
     |  1.00th=[   11],  5.00th=[   11], 10.00th=[   12], 20.00th=[   12],
     | 30.00th=[   13], 40.00th=[   13], 50.00th=[   14], 60.00th=[   15],
     | 70.00th=[   16], 80.00th=[   18], 90.00th=[   26], 95.00th=[   34],
     | 99.00th=[   62], 99.50th=[   91], 99.90th=[  231], 99.95th=[  326],
     | 99.99th=[ 4047]
   bw (  KiB/s): min=196064, max=196064, per=100.00%, avg=196064.00, stdev= 0.00, samples=1
   iops        : min=49016, max=49016, avg=49016.00, stdev= 0.00, samples=1
  lat (nsec)   : 500=0.01%, 750=0.01%
  lat (usec)   : 2=0.01%, 4=0.01%, 10=0.21%, 20=83.60%, 50=14.51%
  lat (usec)   : 100=1.22%, 250=0.37%, 500=0.03%, 1000=0.01%
  lat (msec)   : 2=0.01%, 4=0.01%, 10=0.01%
  cpu          : usr=11.84%, sys=18.01%, ctx=46292, majf=0, minf=46
  IO depths    : 1=100.0%, 2=0.0%, 4=0.0%, 8=0.0%, 16=0.0%, 32=0.0%, >=64=0.0%
     submit    : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     complete  : 0=0.0%, 4=100.0%, 8=0.0%, 16=0.0%, 32=0.0%, 64=0.0%, >=64=0.0%
     issued rwts: total=0,44457,0,0 short=0,0,0,0 dropped=0,0,0,0
     latency   : target=0, window=0, percentile=100.00%, depth=1

Run status group 0 (all jobs):
   READ: bw=18.6MiB/s (19.5MB/s), 18.6MiB/s-18.6MiB/s (19.5MB/s-19.5MB/s), io=18.6MiB (19.5MB), run=1001-1001msec

Run status group 1 (all jobs):
  WRITE: bw=126MiB/s (132MB/s), 126MiB/s-126MiB/s (132MB/s-132MB/s), io=174MiB (182MB), run=1378-1378msec

Disk stats (read/write):
    dm-2: ios=4759/43132, merge=0/0, ticks=864/7281132, in_queue=7281996, util=67.32%, aggrios=4759/43181, aggrmerge=0/0, aggrticks=864/7378584, aggrin_queue=7379448, aggrutil=67.17%
    dm-0: ios=4759/43181, merge=0/0, ticks=864/7378584, in_queue=7379448, util=67.17%, aggrios=4759/43124, aggrmerge=0/57, aggrticks=778/8680, aggrin_queue=9487, aggrutil=67.02%
  sda: ios=4759/43124, merge=0/57, ticks=778/8680, in_queue=9487, util=67.02%


Those timestamps, specifically, should not be the same:

randwrite-4k-4g-1x: (groupid=1, jobs=1): err= 0: pid=1033477: Wed May 18 15:41:04 2022
randread-4k-4g-1x: (groupid=0, jobs=1): err= 0: pid=1033470: Wed May 18 15:41:04 2022

Am I missing something? Or are job files just *not* designed to run
things serially?

I looked in the archives for this, and only found this (unfulfilled,
AFAICT) request:

https://lore.kernel.org/fio/CANvN+emA01TZfbBx4aU+gg5CKfy+AEX_gZW7Jz4HMHvwkdBNoQ@mail.gmail.com/

and:

https://lore.kernel.org/fio/MWHPR04MB0320ED986E73B1E9994929B38F470@MWHPR04MB0320.namprd04.prod.outlook.com/

... but that talks about serialize_overlap which seems to be specific to
handling requests sent in parallel, not serializing jobs themselves.

For now, it feels like i need to revert to shell scripts and that's kind
of a little annoying: it would be really nice to be able to carry a full
workfload in a single job file.

Thanks, and sorry if that's a dumb question. :)

-- 
Antoine Beaupré
torproject.org system administration

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 487 bytes --]

             reply	other threads:[~2022-05-18 19:54 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <CGME20220518195544uscas1p2df5012297be87e1151c9b1f2ea33ff01@uscas1p2.samsung.com>
2022-05-18 19:44 ` Antoine Beaupré [this message]
2022-05-18 22:41   ` running jobs serially Vincent Fu
2022-05-19  1:16     ` Antoine Beaupré
2022-05-19 13:35       ` Vincent Fu
2022-05-19 14:02         ` Antoine Beaupré

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pmkaeicg.fsf@curie.anarc.at \
    --to=anarcat@torproject.org \
    --cc=fio@vger.kernel.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.