Re: How to simulate bursty I/O traffic with fio?

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

 



Hi,

On 23 March 2017 at 20:59, Jason Sirichoke <jason.sirichoke@xxxxxxxxxxxx> wrote:
>
> I am trying to evaluate the behavior of some RAID controllers when faced
> with “bursty” IOs. Typically in our storage performance testing we evaluate

If you don't need exact control have you looked at using rate= with
rate_process=poisson -
http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-rate-process
?

> controllers using a steady stream of I/Os by controlling the iodepth option
> and leaving the rest of the IO depth and IO rate parameters undefined so
> they take the defaults. The behavior I am trying to simulate is an
> application sending multiple IOs at once, retrieve + processing time and
> then submitting the next group of IOs. From the fio HOWTO document it looks
> like the best way to do this is:
>
> iodepth = (number of I/Os to send at once, i.e 32)
>
> iodepth_batch_submit = 0 (submit the full set of iodepth IOs at once)
>
> iodepth_batch_complete_min = 1
>
> iodepth_batch_complete_max = iodepth (fio should try to retrieve at least a
> single IO and up to the iodepth number of IOs)

I suspect in your case it doesn't matter so much how much you retrieve
in one go so long as you control when things are submitted again...

> iodepth_low = default (always fill the queue)

See below.

> thinktime = number of milliseconds between each burst
>
> thinktime_blocks = ? (This is where I was confused…do I set this to the
> iodepth so it will burst all iodepth IOs before waiting thinktime
> milliseconds? Or should this be set to 1 because I want the thinktime to
> occur after a single batch of IOs?)

You will need to set thinktime_blocks=<iodepth> in your case otherwise
you will try and "think" after each I/O (see
http://fio.readthedocs.io/en/latest/fio_doc.html#cmdoption-arg-thinktime-blocks
which talks about how it will otherwise make iodepth redundant). NB:
For these options to have an effect ensure you are using a
asynchronous I/O engine.

> So I’m hoping the end behavior is along the lines of:
>
> ·         Send 32 IOs
>
> ·         Retrieve all 32 IOs
>
> ·         Wait 5 ms  (will it continue to wait if all IOs from the previous
> batch have not been retrieved yet?)

You may want to set iodepth_low=0 to ensure you don't try and send
anything before all 32 previous I/Os have been retrieved.

> ·         Send the next 32 IOs, repeat

-- 
Sitsofe | http://sucs.org/~sits/
--
To unsubscribe from this list: send the line "unsubscribe fio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[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