From: Jens Axboe <jens.axboe@oracle.com>
To: Aaron Carroll <aaronc@gelato.unsw.edu.au>
Cc: LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] cfq-iosched: fix queue depth detection
Date: Fri, 22 Aug 2008 13:23:49 +0200 [thread overview]
Message-ID: <20080822112349.GK20055@kernel.dk> (raw)
In-Reply-To: <48AE9CDE.9090504@gelato.unsw.edu.au>
On Fri, Aug 22 2008, Aaron Carroll wrote:
> Jens Axboe wrote:
> >On Fri, Aug 22 2008, Aaron Carroll wrote:
> >>Hi Jens,
> >>
> >>This patch fixes a bug in the hw_tag detection logic causing a huge
> >>performance
> >>hit under certain workloads on real queuing devices. For example, an FIO
> >>load
> >>of 16k direct random reads on an 8-disk hardware RAID yields about 2
> >>MiB/s on
> >>default CFQ, while noop achieves over 20 MiB/s.
> >>
> >>While the solution is pretty ugly, it does have the advantage of adapting
> >>to
> >>queue depth changes. Such a situation might occur if the queue depth is
> >>configured in userspace late in the boot process.
> >
> >I don't think it's that ugly, and I prefer this logic to the existing
> >one in fact. Since it's a static property of the device, why did you
> >change it to toggle the flag back and forth instead of just setting it
> >once?
>
> Because it is possible (albeit uncommon) that the queue depth can change
> at run time, like the example I gave. However, there should be no false
> positives; the flag should only be toggled if the queue depth does change.
> So even if it doesn't occur often, we can handle this corner case for very
> little cost.
Good point, the user could fiddle with queue_depth to turn it on or off.
So the patch is fine from that stand point.
> >doesn't do queueing. So the interesting window is the one where we have
> >more requests pending yet the driver doesn't ask for it. I'd prefer a
> >patch that took that more into account, instead of just looking at the
> >past 50 samples and then toggle the hw_tag flag depending on the
> >behaviour in that time frame. You could easily have a depth of 1 there
> >always if it's a sync workload, even if hardware can do tagged queuing.
>
> That's exactly what the lines
>
> if (cfqd->rq_queued <= CFQ_HW_QUEUE_MIN &&
> cfqd->rq_in_driver <= CFQ_HW_QUEUE_MIN)
> return;
>
> are for. It's not just the past 50 samples, but rather 50 samples with
> sufficient load to see whether the device could be queuing.
Alright, that answers that concern. And you still use the same magic
depth of 4, I think that still makes sense.
Thanks, I'll queue up the patch.
--
Jens Axboe
prev parent reply other threads:[~2008-08-22 11:24 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2008-08-22 6:42 [PATCH] cfq-iosched: fix queue depth detection Aaron Carroll
2008-08-22 9:06 ` Jens Axboe
2008-08-22 11:02 ` Aaron Carroll
2008-08-22 11:23 ` Jens Axboe [this message]
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=20080822112349.GK20055@kernel.dk \
--to=jens.axboe@oracle.com \
--cc=aaronc@gelato.unsw.edu.au \
--cc=linux-kernel@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 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.