blob: eb104481ccd5d6f89ea075571a12bb9b2309d50b [file] [log] [blame]
WHAT IS LINSCHED?
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. Due to the high degree of code sharing between LinSched and
the Linux scheduler, porting LinSched code to Linux is reasonably
straightforward. LinSched may be especially useful to those who are new to
Linux scheduler development.
WHAT ARE SOME TYPICAL USES OF LINSCHED?
In addition to bringing all the advantages of userspace development and
debugging to the scheduler code, Linsched also serves as a testing tool
to validate the correctness of the scheduler. Linsched has the notion of
hardware topologies which allows the user to create arbitrary hardware
models and runs simulations of scheduler behavior on them. This allows
for development of scheduler code without having access to specific types
of hardware.
HOW DO I BUILD/RUN LINSCHED TESTS?
Simply running make in the linsched subdirectory should build the code
(ensure that you are using gcc v4.4+). To run tests use:
make run_all_tests
which validates some basic kernel functionality on a bunch of hardware
models.
WHAT LINUX KERNEL FEATURES ARE MODELED IN LINSCHED?
The following kernel features are supported for simulation:
-- Group scheduling
-- Ability to specify arbitrary sleep/wakeup patterns for tasks
-- High resolution timers
-- Tickless scheduler (no hz)
-- sched domain support for all levels
The above features can be used to generate very accurate simulations
that mimic real world workloads.
HOW DO I ADD NEW HARDWARE TOPOLOGIES?
See linsched/linux_linsched.h for examples on how hardware topologies
are defined. Select the required topology when you run your tests. See
linsched/basic_tests.c for examples.
WHAT ARE SOME OF THE LIMITATIONS?
Linsched does not verify locking in the scheduler code since its
execution is single threaded. Lock contention and other SMP artifacts
are also not captured in the simulation. Consequently performance
impacts due to these are not covered.