Skip to contentSkip to conversation

Multiple jobs and fill_device

DISCUSSION Oleg Sivokon 2 participants 2 messages Dec 25, 2019 – Dec 29, 2019

lore
Share & tools
lore
#0 lore raw

Hello list,

I'm wondering how the configuration below is interpreted:

    [global]
    ioengine=libaio
    direct=1
    loops=1
    numjobs=8
    
    [write-prep]
    rw=write
    filename=/dev/sdb
    iodepth=16
    bs=16k
    fill_device=1
    stonewall=1

Will every one of the 8 jobs try to fill the device completely or will they split the task of filling the device between themselves, where each will do only 1/8 of filling the device? My reading of documentation seems to suggest the device will be filled 8 times, with jobs, possibly, stepping on each other's toes (i.e. contesting the same block), but I'm not sure.

Best.

Oleg

#1 lore raw

Hi,

Quoted 19 lines · Oleg Sivokon

Hello list,

I'm wondering how the configuration below is interpreted:

    [global]
    ioengine=libaio
    direct=1
    loops=1
    numjobs=8

    [write-prep]
    rw=write
    filename=/dev/sdb
    iodepth=16
    bs=16k
    fill_device=1
    stonewall=1
Quoted 1 line

Will every one of the 8 jobs try to fill the device completely or will

Yes the device will be filled but not due to fill_device=1. Confusingly fill_device is actually meant for when you are creating files on filesystems where you want the file to use up all the remaining space
(https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-fill-device
says this a different way). A file representing a device will already have a fixed size that can't be grown by just writing to it (OK there's thin provisioning but even there the "device" has a fixed size ahead of time). When a file already has a size that is what is used when "size" is not set (see
https://fio.readthedocs.io/en/latest/fio_man.html#cmdoption-arg-size
).

Quoted 2 lines

they split the task of filling the device between themselves, where each will do only 1/8 of filling the device? My reading of documentation

No they will all overwrite/overlap the same areas.

Quoted 3 lines

seems to suggest the device will be filled 8 times, with jobs, possibly, stepping on each other's toes (i.e. contesting the same block), but I'm not sure.

Your reading is correct - they will step on each others toes. If you want to somehow avoid this you'll have to look into offset_increment
(https://fio.readthedocs.io/en/latest/fio_man.html#cmdoption-arg-offset-increment
) and size (https://fio.readthedocs.io/en/latest/fio_man.html#cmdoption-arg-size
).

NB: stonewall=1 likely won't do anything in this case because no job definition is "after" another when using numjobs within the same job.

Signature · 1 line
Sitsofe | http://sucs.org/~sits/