Re: What exactly is iodepth in fio?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sat, 26 Jun 2021 at 05:32, Jared Walton <jawalking@xxxxxxxxx> wrote:
>
> Sorry if this is bringing up an old thread, but I've been googling and I can't find an answer so I thought I'd ask here.

Fair enough but please don't send fio mails to just me - send them to
the mailing list so:
- More people are given the chance to see and reply
- The threads get archived so they turn up in search results ;-)

Out of curiosity, what did you make of
https://serverfault.com/q/923487 ,
https://unix.stackexchange.com/q/459045 ?

Additionally because you didn't state a platform and a concrete job
file the answers below will have to be deliberately vague.

> when you say:
>>
>> io will not create parallel *fio jobs* just because of iodepth BUT using parallel fio jobs is another way of increasing the amount of simultaneous I/O being submitted at any given time (by using different threads/processes) and using both on the same device will act in tandem (so if you have two fio jobs submitting asynchronous I/O at an iodepth of 16 each your OS could be be actually receiving 32 I/Os at any given time). There can be reasons for combining the two (e.g. you have multiple devices and they are so fast that one CPU can't keep up even when submitting I/O asynchronously).
>
>
> What is the expected outcome when a single job has numjobs=2 and iodepth=16? Will this result in a total iodepth of 32? Or will fio use 2 threads to maintain an iodepth of 16?

You are using iodepth in two different contexts:
1. fio's internal queue for a single job
2. The simultaneous I/O going to kernel from multiple threads/processes

Let's arbitrarily redefine thing:

1. iodepth - Maximum amount of simultaneous I/O *fio* will queue for a
*single job*
2. queue depth - amount of simultaneous I/O going to kernel from
multiple threads/processes

> What is the expected outcome when a single job has numjobs=2 and iodepth=16? Will this result in a total iodepth of 32?

Each job (more on that in a moment) queues *up to* 16 I/Os
simultaneously (iodepth) and the total amount of simultaneous I/O from
all jobs is *up to* 32 I/Os (queue depth). There may be reasons why a
depth of 32 isn't reached hence some of the careful wording (you can
check the depths that were actually reached by looking at fio's output
after the jobs have completed).

> Or will fio use 2 threads to maintain an iodepth of 16?

As stated in the fio documentation
(https://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-thread
) by default a job is a *process* on non-Windows platforms/most
ioengines unless you use the thread option.

(Please try to avoid top-posting on this mailing list. Thanks!)


--
Sitsofe




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux