Re: [Announce] [patch] Modular Scheduler Core and Completely Fair Scheduler [CFS]

From: Ingo Molnar
Date: Fri Apr 13 2007 - 16:56:26 EST



* Bill Huey <billh@xxxxxxxxxxxxxxxxx> wrote:

> Con has been asking for module support for years if I understand your
> patch corectly. [...]

Yeah. Note that there are some subtle but crutial differences between
PlugSched (which Con used, and which i opposed in the past) and this
approach.

PlugSched cuts the interfaces at a high level in a monolithic way and
introduces kernel/scheduler.c that uses one pluggable scheduler
(represented via the 'scheduler' global template) at a time.

while in this CFS patchset i'm using modularization ('scheduler
classes') to simplify the _existing_ multi-policy implementation of the
scheduler. These 'scheduler classes' are in a hierarchy and are stacked
on top of each other. They are in use at once. Currently there's two of
them: sched_ops_rt is stacked ontop of sched_ops_fair. Fortunately the
performance impact is minimal.

So scheduler classes are mainly a simplification of the design of the
scheduler - not just a mere facility to select multiple schedulers.
Their ability to also facilitate easier experimentation with schedulers
is 'just' a happy side-effect. So all in one: it's a fairly different
model from PlugSched (and that's why i didnt reuse PlugSched) - but
there's indeed overlap.

> [...] You'll also need this for -rt as well with regards to bandwidth
> scheduling.

yeah.

scheduler classes are also useful for other purposes like containers and
virtualization, hierarchical/group scheduling, security encapsulation,
etc. - features that can be on-demand layered, and which we dont
necessarily want to have enabled all the time.

> [...] Good to see that you're moving in this direction.

thanks! :)

Ingo
-
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/