All of lore.kernel.org
 help / color / mirror / Atom feed
* io_submit depth
@ 2018-05-15 15:20 Julien Desfossez
       [not found] ` <CALjAwxhF2s9V=JcjU5Lu74nLio+9S=YRrG9PpSoSkJLeXGU9TQ@mail.gmail.com>
  0 siblings, 1 reply; 2+ messages in thread
From: Julien Desfossez @ 2018-05-15 15:20 UTC (permalink / raw)
  To: fio

Hi,

When stracing fio running on Linux (4.13) with libaio engine, I saw that 
only one request is sent in the io_submit system call regardless of the 
iodepth parameter value.

To see this:
strace -f fio --name=tmp --filename=/tmp/fio --filesize=8G \
--ioengine=libaio --bs=4k --iodepth=32 --rw=randwrite \
--runtime=10 2>&1 | grep io_submit

All of the lines look like this:
io_submit(140287955259392, 1, [{pwrite, fildes=3, str="...", 
nbytes=4096, offset=1035223040}]) = 1

I would have expected to see the second parameter to be 32.

I see that the iodepth parameter has an impact in how many requests are 
sent at the beginning (in this example, I see 32 requests sent), but 
after that the requests are sent one by one as soon as one completes. I 
understand this is done to keep the number of "requests in flight" 
steady, but this is not what I expected when setting iodepth.

So is there a way to run fio so that we can send multiple requests per 
io_submit call ?

Thanks,

Julien

^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: io_submit depth
       [not found] ` <CALjAwxhF2s9V=JcjU5Lu74nLio+9S=YRrG9PpSoSkJLeXGU9TQ@mail.gmail.com>
@ 2018-05-15 16:54   ` Julien Desfossez
  0 siblings, 0 replies; 2+ messages in thread
From: Julien Desfossez @ 2018-05-15 16:54 UTC (permalink / raw)
  To: Sitsofe Wheeler; +Cc: fio

On 05/15/2018 12:32 PM, Sitsofe Wheeler wrote:
> Hello Julien,
> 
> On 15 May 2018 at 16:20, Julien Desfossez <ju@klipix.org> wrote:
>> Hi,
>>
>> When stracing fio running on Linux (4.13) with libaio engine, I saw that
>> only one request is sent in the io_submit system call regardless of the
>> iodepth parameter value.
>>
>> To see this:
>> strace -f fio --name=tmp --filename=/tmp/fio --filesize=8G \
>> --ioengine=libaio --bs=4k --iodepth=32 --rw=randwrite \
>> --runtime=10 2>&1 | grep io_submit
>>
>> All of the lines look like this:
>> io_submit(140287955259392, 1, [{pwrite, fildes=3, str="...", nbytes=4096,
>> offset=1035223040}]) = 1
>>
>> I would have expected to see the second parameter to be 32.
> 
> By the by, did you see the warnings related to libaio in the
> manual/HOWTO (http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-ioengine
> and http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-iodepth
> ) regarding buffering / not setting direct=1?
Yes I did and I usually benchmark with direct=1, I just removed 
parameters while doing this test.

>> I see that the iodepth parameter has an impact in how many requests are sent
>> at the beginning (in this example, I see 32 requests sent), but after that
>> the requests are sent one by one as soon as one completes. I understand this
>> is done to keep the number of "requests in flight" steady, but this is not
>> what I expected when setting iodepth.
>>
>> So is there a way to run fio so that we can send multiple requests per
>> io_submit call ?
> 
> Is iodepth_batch_submit
> (http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-iodepth-batch-submit
> ) and following what you're looking for?
> 
Indeed it helps !

Apparently what I am looking for is:
--iodepth=32 --iodepth_batch=32 --iodepth_batch_complete=32

Thanks !

Julien

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2018-05-15 16:54 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-05-15 15:20 io_submit depth Julien Desfossez
     [not found] ` <CALjAwxhF2s9V=JcjU5Lu74nLio+9S=YRrG9PpSoSkJLeXGU9TQ@mail.gmail.com>
2018-05-15 16:54   ` Julien Desfossez

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.