|| ||Ranjit Manomohan <ranjitm-AT-google.com> |
|| ||linux-kernel-AT-vger.kernel.org |
|| ||[ANNOUNCE] Linsched for 2.6.35 released |
|| ||Tue, 12 Oct 2010 10:29:54 -0700|
|| ||Mike Galbraith <efault-AT-gmx.de>, Nikhil Rao <ncrao-AT-google.com>,
Salman Qazi <sqazi-AT-google.com>,
Dhaval Giani <dhaval.giani-AT-gmail.com>,
Peter Zijlstra <a.p.zijlstra-AT-chello.nl>,
Ingo Molnar <mingo-AT-redhat.com>,
Thomas Gleixner <tglx-AT-linutronix.de>,
Venkatesh Pallipadi <venki-AT-google.com>,
Paul Turner <pjt-AT-google.com>|
|| ||Article, Thread
I would like to announce the availability of the Linux Scheduler Simulator
(Linsched) for 2.6.35.
Originally developed at the University of North Carolina, LinSched is a
user-space program that hosts the Linux scheduling subsystem.
Its purpose is to provide a tool for observing and modifying the behavior
of the Linux scheduler. This makes it a valuable tool in prototyping new
Linux scheduling policies in a way that may be easier (or otherwise
less painful or time-consuming) to many developers when compared
to working with real hardware.
Since Linsched allows arbitrary hardware topologies to be modeled,
it enables testing of scheduler changes on hardware that may not be
easily accessible to the developer. For example, most developers don't
have access to a quad-core quad-socket box, but they can use LinSched
to see how their changes affect the scheduler on such boxes.
When compared to alternatives such as using UML which may offer
similar benefits to developers, Linsched has fewer dependencies and
relies on a very small subset of files of the kernel. It also offers stable
and repeatable results that are not affected by the environment or
hardware that is used to run the simulation.
LinSched may be especially useful to those who are new to Linux
scheduler development since it brings all the benefits of user space
analysis and debugging tools (e.g. gdb) to understanding the
kernel scheduler code.
The code is available at:
You can clone the repository using:
git clone git://google3-2.osuosl.org/linsched/2.6.35.git
New features/functionality in this release are:
-- Based on the 2.6.35 kernel
-- support for group scheduling
-- Ability to specify arbitrary sleep/wakeup patterns for tasks
-- High resolution timers
-- Tickless scheduler (no hz)
-- sched domain support for all levels
At Google we have used Linsched as a testing tool to validate the
behavior of the kernel scheduler. Please see some of the basic tests
we have added at linsched/basic_tests.c. We could cut down our
validation time from several days to a couple of hours due to the ability
to run multiple tests on several different types of hardware models.
Recently we have proposed a set of enhancements to the CFS scheduler
-- CFS bandwidth control
-- Improved load balancing for low weight tasks
These features have been extensively validated using this new infrastructure
which has helped weed out some bugs that would have been difficult to catch
otherwise. See http://thread.gmane.org/gmane.linux.kernel/1037521 for an
example of a load balancing bug uncovered during testing.
We are working on a port of Linsched to 2.6.36 and I would encourage folks
experimenting with the kernel scheduler to give it a try. Please see the
instructions specified in the linsched/README file to build and run tests.
-Please contact me if you run into any difficulties or have any questions
to post comments)