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