Skip to content

sched: group scheduler related patches (V3)

Srivatsa Vaddagiri lkml 1 version In review

Get series with b4
b4 am [email protected]

Versions newest first

  1. v1 Latest4 patches 2 repliesIn review

Patches in v1 No applies recorded yet

#Subject and filesSizeRepliesApplied
1/4sched: code cleanupkernel/sched.c+3 -180 replies
2/4sched: minor fixes for group schedulerkernel/sched.c kernel/sched_fair.c+28 -90 replies
3/4sched: change how cpu load is calculatedkernel/sched.c kernel/sched_fair.c kernel/sched_rt.c+59 -120 replies
4/4sched: Improve fairness of cpu bandwidth allocation for task groupsinclude/linux/sched.h kernel/sched.c kernel/sched_fair.c +1 more+334 -3913 replies

Reviews trailers per patch

No Reviewed-by, Acked-by or Tested-by trailers for v1 yet.

Read the v1 thread

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

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

Signature · 2 lines
Regards,
vatsa