From: Vivek Goyal <vgoyal@redhat.com>
To: Corrado Zoccolo <czoccolo@gmail.com>
Cc: "Alan D. Brunelle" <Alan.Brunelle@hp.com>,
linux-kernel@vger.kernel.org, jens.axboe@oracle.com
Subject: Re: [RFC] Block IO Controller V2 - some results
Date: Wed, 18 Nov 2009 17:56:26 -0500 [thread overview]
Message-ID: <20091118225626.GA2974@redhat.com> (raw)
In-Reply-To: <4e5e476b0911180820y5d99a81et6be7f6f94442d0d5@mail.gmail.com>
On Wed, Nov 18, 2009 at 05:20:12PM +0100, Corrado Zoccolo wrote:
> Hi Vivek,
> On Wed, Nov 18, 2009 at 4:32 PM, Vivek Goyal <vgoyal@redhat.com> wrote:
> > o Currently we wait on sync-noidle service tree so that sync-noidle type of
> > workload does not get swamped by sync-idle or async type of workload. Don't
> > do this idling if there are no sync-idle or async type of queues in the group
> > and there are other groups to dispatch the requests from and user has decided
> > not to wait on slow groups to achieve better throughput. (group_idle=0).
> >
> > This will make sure if some group is doing just random IO and does not
> > have sufficient IO to keep the disk busy, we will move onto other groups to
> > dispatch the requests from and utilize the storage better.
> >
> This group will be treated unfairly, if the other groups are doing
> sequential I/O:
> It will dispatch one request every 100ms (at best), and every 300ms at worst.
> I can't see how this is any better than having a centralized service
> tree for all sync-noidle queues.
>
> Probably it is better to just say:
> * if the user wants isolation (group_idle should be named
> group_isolation), the no-idle queues go into the group no-idle tree,
> and a proper idling is ensured
> * if the user doesn't want isolation, but performance, then the
> no-idle queues go into the root group no-idle tree, for which the end
> of tree idle should be ensured. This won't affect the sync-idle
> queues, for which group weighting will still work unaffected.
Moving all the queues to root group is one way to solve the issue. Though
problem still remains if there are 7-8 sequential workload groups operating
with low_latency=0. In that case after every dispatch round of sync-noidle
workload in root group, next round might be much more than 300ms, hence
bumping up the max latencies of sync-noidle workload.
I think one of the core problem seems to be that I always put the group at
the end of service tree. Instead I should let the group delete from
service tree if it does not have sufficient IO, and when it comes back
again, try to put it in the beginning of tree according to weight so
that not all is lost and it gets to dispatch IO sooner.
This way, the groups which have been using long slices (either because
they are running sync-idle workload or because they have sufficient IO
to keep the disk busy), will be towards later end of service tree and the
groups which are new or which have lost their share because they have
dispatched a small IO and got deleted, will be put at the front of tree.
This way sync-noidle queues in a group will not loose out because of
sync-idle IO happening in other groups.
I have written couple of small patches and still testing it out to see
whether it is working fine in various configurations.
Will post patches after some testing.
Thanks
Vivek
next prev parent reply other threads:[~2009-11-18 22:58 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-16 20:51 [RFC] Block IO Controller V2 - some results Alan D. Brunelle
2009-11-16 21:14 ` Vivek Goyal
2009-11-16 21:32 ` Alan D. Brunelle
2009-11-16 21:37 ` Vivek Goyal
2009-11-16 22:18 ` Vivek Goyal
2009-11-17 12:38 ` Alan D. Brunelle
2009-11-17 14:14 ` Vivek Goyal
2009-11-17 16:17 ` Corrado Zoccolo
2009-11-17 16:40 ` Vivek Goyal
2009-11-17 17:30 ` Alan D. Brunelle
2009-11-17 17:44 ` Vivek Goyal
2009-11-17 20:59 ` Corrado Zoccolo
2009-11-17 22:38 ` Vivek Goyal
2009-11-17 23:11 ` Corrado Zoccolo
2009-11-19 0:04 ` Vivek Goyal
2009-11-19 20:12 ` Corrado Zoccolo
2009-11-17 16:45 ` Alan D. Brunelle
2009-11-18 15:32 ` Vivek Goyal
2009-11-18 16:20 ` Corrado Zoccolo
2009-11-18 22:56 ` Vivek Goyal [this message]
2009-11-18 23:35 ` Corrado Zoccolo
2009-11-20 14:18 ` Vivek Goyal
2009-11-20 14:28 ` Corrado Zoccolo
2009-11-20 15:04 ` Vivek Goyal
2009-11-20 18:32 ` Corrado Zoccolo
2009-11-20 18:42 ` Vivek Goyal
2009-11-20 19:50 ` Corrado Zoccolo
2009-11-21 17:57 ` Corrado Zoccolo
2009-11-23 15:19 ` Vivek Goyal
2009-11-23 16:22 ` Corrado Zoccolo
2009-11-17 20:38 ` Alan D. Brunelle
2009-11-19 16:57 ` Vivek Goyal
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=20091118225626.GA2974@redhat.com \
--to=vgoyal@redhat.com \
--cc=Alan.Brunelle@hp.com \
--cc=czoccolo@gmail.com \
--cc=jens.axboe@oracle.com \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox