From: Vivek Goyal <vgoyal@redhat.com>
To: Jeff Moyer <jmoyer@redhat.com>
Cc: linux-kernel@vger.kernel.org, jens.axboe@oracle.com,
nauman@google.com, dpshah@google.com, lizf@cn.fujitsu.com,
ryov@valinux.co.jp, fernando@oss.ntt.co.jp,
s-uchida@ap.jp.nec.com, taka@valinux.co.jp,
guijianfeng@cn.fujitsu.com, balbir@linux.vnet.ibm.com,
righi.andrea@gmail.com, m-ikeda@ds.jp.nec.com,
akpm@linux-foundation.org, riel@redhat.com,
kamezawa.hiroyu@jp.fujitsu.com
Subject: Re: [PATCH 07/20] blkio: Provide capablity to enqueue/dequeue group entities
Date: Wed, 4 Nov 2009 11:54:34 -0500 [thread overview]
Message-ID: <20091104165434.GD2870@redhat.com> (raw)
In-Reply-To: <x49zl72tiam.fsf@segfault.boston.devel.redhat.com>
On Wed, Nov 04, 2009 at 10:34:57AM -0500, Jeff Moyer wrote:
> Vivek Goyal <vgoyal@redhat.com> writes:
>
> > o This patch embeds cfq_entity object in cfq_group and provides helper routines
> > so that group entities can be scheduled.
> >
> > Signed-off-by: Vivek Goyal <vgoyal@redhat.com>
> > ---
> > block/cfq-iosched.c | 110 +++++++++++++++++++++++++++++++++++++++++++--------
> > 1 files changed, 93 insertions(+), 17 deletions(-)
> >
> > diff --git a/block/cfq-iosched.c b/block/cfq-iosched.c
> > index bc99163..8ec8a82 100644
> > --- a/block/cfq-iosched.c
> > +++ b/block/cfq-iosched.c
> > @@ -79,6 +79,7 @@ struct cfq_service_tree {
> > #define CFQ_RB_ROOT (struct cfq_service_tree) { RB_ROOT, NULL, 0, NULL}
> >
> > struct cfq_sched_data {
> > + unsigned int nr_active;
> > struct cfq_service_tree service_tree[IO_IOPRIO_CLASSES];
> > };
> >
> > @@ -89,6 +90,10 @@ struct cfq_entity {
> > struct cfq_service_tree *st;
> > unsigned short ioprio_class;
> > bool ioprio_class_changed;
> > + struct cfq_entity *parent;
> > + bool on_st;
> > + /* Points to the sched_data of group entity. Null for cfqq */
> > + struct cfq_sched_data *my_sd;
>
> Why my_sd? None of the other members required a my. ;-)
>
Because in rest of the code, we have been using "struct cfq_sched_data *sd"
to mean pointer to scheduling data entity/queue/group is queued.
In this case entity is embedded inside a cfq_group object and it is
hosting a sched_data tree. So "*sd" means the sched_data the entity is
queued on and "*my_sd" means the sched_data entity is hosting.
> > +static inline struct cfq_entity *parent_entity(struct cfq_entity *cfqe)
> > +{
> > + return cfqe->parent;
> > +}
>
> Wow, is this really necessary for a pointer dereference?
>
I guess no. As core scheduling code is inspired from CFS, it is coming
from there. :-). Will get rid of it in next posting.
> > +#ifdef CONFIG_CFQ_GROUP_IOSCHED
> > +/* check for entity->parent so that loop is not executed for root entity. */
> > +#define for_each_entity(entity) \
> > + for (; entity && entity->parent; entity = entity->parent)
>
> See, you don't use it here
:-)
>
> > @@ -660,7 +723,13 @@ static void enqueue_cfqe(struct cfq_entity *cfqe)
> >
> > static void enqueue_cfqq(struct cfq_queue *cfqq)
> > {
> > - enqueue_cfqe(&cfqq->entity);
> > + struct cfq_entity *cfqe = &cfqq->entity;
> > +
> > + for_each_entity(cfqe) {
> > + if (cfqe->on_st)
> > + break;
> > + enqueue_cfqe(cfqe);
> > + }
> > }
>
> Maybe I'm slow, but I would have benefitted from a comment above that
> function stating that we have to walk up the tree to make sure that the
> parent is also scheduled.
Sure, will put a comment here.
Thanks
Vivek
next prev parent reply other threads:[~2009-11-04 16:55 UTC|newest]
Thread overview: 88+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-11-03 23:43 [RFC] Block IO Controller V1 Vivek Goyal
2009-11-03 23:43 ` [PATCH 01/20] blkio: Documentation Vivek Goyal
2009-11-04 13:37 ` Jeff Moyer
2009-11-04 17:21 ` Balbir Singh
2009-11-04 17:52 ` Vivek Goyal
2009-11-04 23:36 ` Balbir Singh
2009-11-03 23:43 ` [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps Vivek Goyal
2009-11-04 14:30 ` Jeff Moyer
2009-11-04 16:37 ` Vivek Goyal
2009-11-04 17:59 ` Corrado Zoccolo
2009-11-04 18:54 ` Vivek Goyal
2009-11-05 2:44 ` Divyesh Shah
2009-11-05 14:39 ` Vivek Goyal
2009-11-04 21:18 ` Corrado Zoccolo
2009-11-04 22:25 ` Vivek Goyal
2009-11-05 8:36 ` Corrado Zoccolo
2009-11-04 23:22 ` Vivek Goyal
2009-11-05 8:27 ` Corrado Zoccolo
2009-11-05 0:05 ` Vivek Goyal
2009-11-06 22:22 ` [RFC] Workload type Vs Groups (Was: Re: [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps) Vivek Goyal
2009-11-09 17:33 ` Nauman Rafique
2009-11-09 21:47 ` Corrado Zoccolo
2009-11-09 23:12 ` Vivek Goyal
2009-11-10 11:29 ` Corrado Zoccolo
2009-11-10 13:31 ` Vivek Goyal
2009-11-10 14:12 ` Vivek Goyal
2009-11-10 18:05 ` Corrado Zoccolo
2009-11-10 19:15 ` Vivek Goyal
2009-11-12 8:53 ` Corrado Zoccolo
2009-11-11 0:48 ` [PATCH 02/20] blkio: Change CFQ to use CFS like queue time stamps Gui Jianfeng
2009-11-12 23:07 ` Vivek Goyal
2009-11-13 0:59 ` Gui Jianfeng
2009-11-13 1:24 ` Vivek Goyal
2009-11-13 2:05 ` Gui Jianfeng
2009-11-03 23:43 ` [PATCH 03/20] blkio: Introduce the notion of weights Vivek Goyal
2009-11-04 15:06 ` Jeff Moyer
2009-11-04 15:41 ` Vivek Goyal
2009-11-04 17:07 ` Divyesh Shah
2009-11-04 19:00 ` Vivek Goyal
2009-11-04 19:15 ` Jeff Moyer
2009-11-03 23:43 ` [PATCH 04/20] blkio: Introduce the notion of cfq entity Vivek Goyal
2009-11-03 23:43 ` [PATCH 05/20] blkio: Introduce the notion of cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 06/20] blkio: Introduce cgroup interface Vivek Goyal
2009-11-04 15:23 ` Jeff Moyer
2009-11-04 16:47 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 07/20] blkio: Provide capablity to enqueue/dequeue group entities Vivek Goyal
2009-11-04 15:34 ` Jeff Moyer
2009-11-04 16:54 ` Vivek Goyal [this message]
2009-11-03 23:43 ` [PATCH 08/20] blkio: Add support for dynamic creation of cfq_groups Vivek Goyal
2009-11-04 16:01 ` Jeff Moyer
2009-11-03 23:43 ` [PATCH 09/20] blkio: Porpogate blkio cgroup weight or ioprio class updation to cfq groups Vivek Goyal
2009-11-05 5:35 ` Gui Jianfeng
2009-11-05 14:42 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 10/20] blkio: Implement cfq group deletion and reference counting support Vivek Goyal
2009-11-04 18:44 ` Jeff Moyer
2009-11-04 19:00 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 11/20] blkio: Some CFQ debugging Aid Vivek Goyal
2009-11-04 18:52 ` Jeff Moyer
2009-11-04 19:12 ` Vivek Goyal
2009-11-04 19:25 ` Jeff Moyer
2009-11-05 3:10 ` Divyesh Shah
2009-11-05 14:42 ` Vivek Goyal
2009-11-06 0:56 ` Divyesh Shah
2009-11-03 23:43 ` [PATCH 12/20] blkio: Export disk time and sectors dispatched from cgroup interface Vivek Goyal
2009-11-03 23:43 ` [PATCH 13/20] blkio: Add a group dequeue interface in cgroup for debugging Vivek Goyal
2009-11-03 23:43 ` [PATCH 14/20] blkio: Do not allow request merging across cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 15/20] blkio: Take care of preemptions across groups Vivek Goyal
2009-11-04 19:00 ` Jeff Moyer
2009-11-04 19:27 ` Vivek Goyal
2009-11-04 19:30 ` Jeff Moyer
2009-11-06 7:55 ` Gui Jianfeng
2009-11-06 22:10 ` Vivek Goyal
2009-11-09 7:41 ` Gui Jianfeng
2009-11-03 23:43 ` [PATCH 16/20] blkio: do not select co-operating queues from different cfq groups Vivek Goyal
2009-11-03 23:43 ` [PATCH 17/20] blkio: Wait for queue to get backlogged before it expires Vivek Goyal
2009-11-03 23:43 ` [PATCH 18/20] blkio: arm idle timer even if think time is great then time slice left Vivek Goyal
2009-11-04 19:04 ` Jeff Moyer
2009-11-04 19:17 ` Vivek Goyal
2009-11-03 23:43 ` [PATCH 19/20] blkio: Arm slice timer even if there are requests in driver Vivek Goyal
2009-11-03 23:43 ` [PATCH 20/20] blkio: Drop the reference to queue once the task changes cgroup Vivek Goyal
2009-11-04 19:09 ` Jeff Moyer
2009-11-04 19:18 ` Vivek Goyal
2009-11-04 7:43 ` [RFC] Block IO Controller V1 Jens Axboe
2009-11-04 13:39 ` Vivek Goyal
2009-11-04 19:12 ` Jeff Moyer
2009-11-04 19:19 ` Vivek Goyal
2009-11-04 19:27 ` Jeff Moyer
2009-11-04 19:38 ` 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=20091104165434.GD2870@redhat.com \
--to=vgoyal@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=balbir@linux.vnet.ibm.com \
--cc=dpshah@google.com \
--cc=fernando@oss.ntt.co.jp \
--cc=guijianfeng@cn.fujitsu.com \
--cc=jens.axboe@oracle.com \
--cc=jmoyer@redhat.com \
--cc=kamezawa.hiroyu@jp.fujitsu.com \
--cc=linux-kernel@vger.kernel.org \
--cc=lizf@cn.fujitsu.com \
--cc=m-ikeda@ds.jp.nec.com \
--cc=nauman@google.com \
--cc=riel@redhat.com \
--cc=righi.andrea@gmail.com \
--cc=ryov@valinux.co.jp \
--cc=s-uchida@ap.jp.nec.com \
--cc=taka@valinux.co.jp \
/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.