Re: [PATCH 07/12] cfq-iosched: implement hierarchy-ready cfq_groupcharge scaling

From: Tejun Heo
Date: Mon Dec 17 2012 - 16:33:08 EST


Hello,

On Mon, Dec 17, 2012 at 04:27:36PM -0500, Vivek Goyal wrote:
> What I do care about is atleast being able to read and understand the
> code easily. Right now, it is hard to understand. I am still struggling
> to wrap my head around it.

Hmm... I thought it was really simple. Maybe I'm just too familiar
with it. You just walk up the tree multiplying the fraction you have
at each level. It really doesn't get much simpler than that.

> For example, while adding a group to service tree we calculate
> cfqg->vfaction as follows.
>
> vfr = vfr * pos->leaf_weight / pos->level_weight;
>
> and then
>
> vfr = vfr * pos->weight / parent->level_weight;
>
> cfqg->vfraction = max_t(unsigned, vfr, 1)
>
> If cfqg->vfraction is about cfqg then why should we take into account
> leaf_weight and level_weight. We should be just worried about pos->weight
> and parent->level_weight and that should determine vfaction of cfqg.

Eh? Then how would it compete with the children cfqgs? You can
consider it as the hidden leaf node competing with the children cfqgs,
right? So, you take the leaf weight and divide it by the total active
weight of all the children (including the hidden leaf node). It isn't
different from the rest of the calculation. It just looks different
because leaf_weight is stored elsewhere and we look down there and
then walke up. The calculation being done is exactly the same one.

Thanks.

--
tejun
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/