Re: [PATCHSET] blk-throttle: implement proper hierarchy support

From: Vivek Goyal
Date: Thu May 02 2013 - 15:07:48 EST


On Thu, May 02, 2013 at 11:49:53AM -0700, Tejun Heo wrote:
> Hello,
>
> On Thu, May 02, 2013 at 02:45:14PM -0400, Vivek Goyal wrote:
> > I did not understand this point. In flat model, application issuing
> > at configured page will not get penalized.
> >
> > This penalty is coming from the fact that we are moving bios after the
> > wait and make them wait in another queue.
> >
> > In flat model there is no such problem. So to me, it is the problem
> > of how hierarchical scheduling is implemented. In flat model, I did
> > not have to deal with it.
>
> But seen from the parent, the child isn't different from any other
> issuer in flat hierarchy. It's just being repeated, so if you assume
> a process which behaves in the exact same manner, that process would
> get penalized too. e.g. imagine an application which throttles itself
> and issues exactly 1MB/s amount of data in direct IO. It'd get
> penalized the same way, right?

It should not. Why do you think in flat model an application which
throttles itself will be penalized.

So application issue an bio of size 1MB in a group of rate 1MB/s. bio
gets queued and gets dispatched after 1 second. Almost immediately next
bio will come from application (as application also is throttling
itself at 1MB/s rate). And then this bio waits for a second. So we
almost get steady rate of 1MB/s as configured.

Sorry, I am not able uderstand the problem here.

>
> > Ok. Not having a perfect algorithm now is fine. We can always redo it
> > later.
>
> I think we can do source-based RR on bio_lists[] fetching which is
> simple enough and should be able to avoid most of the problems, right?

Yes, maintaining per child/source bio_lists[] in parent and doing round
robin there should mitigate the fairness problem to a great extent.

Thanks
Vivek
--
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/