[PATCH 0/4] sched: group scheduler related patches (V3)

From: Srivatsa Vaddagiri
Date: Sun Nov 25 2007 - 23:48:20 EST


Here's V3 of the group scheduler related patches, which is mainly addressing
improved fairness of cpu bandwidth allocation for task groups.

Patch 1/4 -> coding style cleanup
Patch 2/4 -> Minor group scheduling related bug fixes

Patch 3/4 (v1) -> Modifies how cpu load is calculated, such that there is zero
impact on !CONFIG_FAIR_GROUP_SCHED
Patch 3/4 (v2) -> Modifies how cpu load is calculated, such that there is a
small impact on code size (but should have NO impact on
functionality or runtime behavior) for
!CONFIG_FAIR_GROUP_SCHED case. The resulting code however is
much neater since it avoids some #ifdefs. I prefer v2.

Patch 4/4 -> Updates load balance logic to provide improved fairness for
task groups.

To have zero impact on !CONFIG_FAIR_GROUP_SCHED case, please apply the
following patches:

- Patch 1/4
- Patch 2/4
- Patch 3/4 (v1)
- Patch 4/4

I personally prefer v2 of Patch 3/4. Even though it has a minor impact
on code size for !CONFIG_FAIR_GROUP_SCHED case, the overall code is much
neater IMHO.

Impact on sched.o size:
=======================

!CONFIG_FAIR_GROUP_SCHED:

text data bss dec hex filename
36829 2766 48 39643 9adb sched.o-before-nofgs
36829 2766 48 39643 9adb sched.o-after-v1-nofgs (v1 of Patch 3/4)
36843 2766 48 39657 9ae9 sched.o-after-v2-nofgs (v2 of Patch 3/4)

CONFIG_FAIR_GROUP_SCHED:

text data bss dec hex filename
39019 3346 336 42701 a6cd sched.o-before-fgs
40303 3482 308 44093 ac3d sched.o-after-v1-fgs (v1 of Patch 3/4)
40303 3482 308 44093 ac3d sched.o-after-v2-fgs (v2 of Patch 3/4)


Changes since V2 of this patchset [1]

- Split the patches better and make them pass under checkpatch.pl
script
- Fixed compile issues under different config options and also
a suspend failure (as posted by Ingo at [2])
- Make load_balance_monitor thread run as real-time task,
so that its execution is not limited by shares allocated to
default task group (init_task_group).
- Reduced minimum shares that can be allocated to a group to 1
(from 100). Would be usefull if someone wants a task group
to get very low bandiwdth or get bandwidth only when other groups
are idle.
- Removed check for tg->last_total_load check in rebalance_shares()
(which was incorrect in V2)

Changes since V1 of this patchset [3]:

- Introduced a task_group_mutex to serialize add/removal of task groups (as
pointed by Dipankar)

Please apply if there are no major concerns.


References:

1. http://marc.info/?l=linux-kernel&m=119549585223262
2. http://lkml.org/lkml/2007/11/19/127
3. http://marc.info/?l=linux-kernel&m=119547452517055


--
Regards,
vatsa
-
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/