From: Avi Kivity <avi@scylladb.com>
To: Jens Axboe <axboe@kernel.dk>, fio@vger.kernel.org
Subject: Re: RFE: Graphing and iteration support for fio
Date: Thu, 3 Dec 2015 19:19:08 +0200 [thread overview]
Message-ID: <5660798C.8000900@scylladb.com> (raw)
In-Reply-To: <56607574.6050602@kernel.dk>
On 12/03/2015 07:01 PM, Jens Axboe wrote:
> On 12/01/2015 04:04 AM, Avi Kivity wrote:
>> Sometimes you want to run a set of experiments on a disk, varying a
>> parameter between tests (in my case, iodepth, but buffer size is also a
>> good candidate). You then want to present the results in a nice graph.
>>
>> I wrote a small wrapper around fio to do this
>> (https://github.com/avikivity/diskplorer), but it occurs to me that
>> generalized support for both in fio would be much more useful.
>>
>> Possibly, you'd define a job as a template:
>>
>> [aio-read]
>> template_start=1
>> template_end=100
>> template_step=1
>> (or template_ratio=1.05 for exponential growth)
>> iodepth=template_variable
>>
>> (it's just possible that someone can come up with better syntax).
>>
>> A few more options in the global section can then cause a graph to be
>> generated.
>
> It'd be great to integrate this into fio, as graphing results is
> something that most people want to do. Any chance you would be willing
> to try and hash that out?
I'd love to say yes, but no.
>
>> btw, a fast disk can easily saturate a single core using libaio, so a
>> multithreaded libaio ioengine would be welcome (I am currently emulating
>> it using multiple jobs and new_group).
>
> In the context of fio, that doesn't make a lot of sense. A job in fio
> is, by definition, either a thread or a process that does IO. So if
> you want more threads banging on a device, then you'd add more jobs.
> If multiple threads shared on aio context, then we'd also potentially
> see contention on that part. If you just use more jobs, then each gets
> an aio context as well.
>
If your jobs are generated via a template, as above, then this is hard
to do. For iodepth=1 you want one job with iodepth=1. For iodepth=64
you want 8 jobs (one per core) each with an iodepth=8; otherwise a fast
SSD will overwhelm a single core.
Perhaps the job specification can be modified so that it auto-generates
subjobs. In the specification, there is one entry, but fio sees 8 (or
1, when the template sets iodepth=1), and reports them via a group.
[aio-read]
template_start=1
template_end=100
template_step=1
(or template_ratio=1.05 for exponential growth)
subjobs=(min(template_variable, core_count))
iodepth=(template_variable / subjobs)
(the above doesn't cope will with an iodepth that doesn't divide into
your core_count; displorer will generate subjobs with different iodepth
for this)
next prev parent reply other threads:[~2015-12-03 17:19 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-12-01 11:04 RFE: Graphing and iteration support for fio Avi Kivity
2015-12-03 17:01 ` Jens Axboe
2015-12-03 17:19 ` Avi Kivity [this message]
2015-12-03 17:26 ` Jens Axboe
2015-12-03 17:31 ` Avi Kivity
2015-12-03 18:00 ` Avi Kivity
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5660798C.8000900@scylladb.com \
--to=avi@scylladb.com \
--cc=axboe@kernel.dk \
--cc=fio@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox