Hi Jens,
I've collected some bugfixes to the for-2.6.33 branch.
Excluding the NCQ policy fix, that I'm resending with improved changelog,
the bugs were found by Vivek while investingating performance drops
or unfairness while testing cgroups. Nevertheless, those fixes have
general impact, so they should go in before cgroup code is merged:
* no-idle preemption logic was both under/over preempting.
it should preempt only if the active queue is idling due to
no-idle service tree empty
* seeky queues with large depth could steal too much bandwidth to
low depth ones, so they will be marked as idling, and have exclusive
access to disk for their time share
* the idling logic had some corner cases in which idling was not enabled,
even if it should have been, caused by rq_noidle and rq_in_driver checks.
Those were adjusted to better match the original intention.
Corrado
On Tue, Nov 24 2009, Corrado Zoccolo wrote:
> Hi Jens,
> I've collected some bugfixes to the for-2.6.33 branch.
> Excluding the NCQ policy fix, that I'm resending with improved changelog,
> the bugs were found by Vivek while investingating performance drops
> or unfairness while testing cgroups. Nevertheless, those fixes have
> general impact, so they should go in before cgroup code is merged:
> * no-idle preemption logic was both under/over preempting.
> it should preempt only if the active queue is idling due to
> no-idle service tree empty
> * seeky queues with large depth could steal too much bandwidth to
> low depth ones, so they will be marked as idling, and have exclusive
> access to disk for their time share
> * the idling logic had some corner cases in which idling was not enabled,
> even if it should have been, caused by rq_noidle and rq_in_driver checks.
> Those were adjusted to better match the original intention.
Thanks Corrado, applied all 4!
--
Jens Axboe