[PATCH] CPU Scheduler Evaluation tool for 2.6.8-rc1

From: Peter Williams
Date: Sat Jul 17 2004 - 18:58:34 EST

The HYDRA patch for facilitating the comparative evaluation of alternative CPU schedulers is now available for the 2.6.8-rc1 kernel. This patch allows the run time selection of CPU scheduler between a slightly modified version of Con Kolivas's staircase scheduler ("sc") (including the SCHED_BATCH and SCHED_ISO scheduler classes), the priority based scheduler with interactive and throughput bonuses ("pb") and an entitlement based scheduler with interactive and throughput bonuses ("eb"). This patch is available for download at:


The file /proc/sys/kernel/cpusched/mode enables control of which scheduler is in control. The string "sc" is used to select the staircase scheduler, "pb" to select the priority based scheduler and "eb" to select the entitlement based scheduler described above. The control of other scheduling parameters is facilitated by other files in the directory /proc/sys/kernel/cpusched as follows (in alphabetical order):

base_promotion_interval - controls the interval between successive (anti starvation) runnable task promotions (for the "pb" scheduler this is effectively a means to control the "severity" of "nice"). The actual interval will be (number of runnable tasks - 1) times this value in msecs.

compute - "sc" scheduler boolean parameter

cpu_hog_threshold - for the "pb" and "eb" schedulers this parameter sets the CPU usage rate (in parts per thousand) above which tasks will be considered to be CPU hogs and start to lose interactive bonus points (if they have any)

hog_sub_cycle_threshold - for the "pb" and "eb" schedulers this the number of time slices above which calculation of various rates will be made on a per time slice basis rather than a full scheduling cycle (i.e. from one "wake up" to the next). This is necessary to ensure that very hard CPU spinners usage statistics are representative of the current system state.

ia_threshold - for the "pb" and "eb" schedulers this is the sleepiness (i.e. the ratio of sleep time per cycle to sleep plus cpu time per cycle) (in parts per thousand) above which a task will be considered to be interactive and have its interactive bonus increased asymptotically towards the maximum.

initial_ia_bonus - for the "pb" and "eb" schedulers this is the interactive bonus given to newly forked processes.

interactive - "sc" scheduler boolean parameter

log_at_exit - boolean parameter to control whether tasks' CPU scheduling statistics are logged at exit

max_ia_bonus - the maximum interactive bonus that a task can receive

max_tpt_bonus - the maximum throughput bonus that a task can receive

sched_iso_threshold - for the "eb" and "pb" this is a CPU usage threshold (in parts per thousand) above which SCHED_ISO tasks will cease to get special treatment

time_slice - the time slice size in msecs that will be given to each task

To facilitate the viewing/setting of these parameters a primitive GUI, which also displays per CPU scheduling statistics for the system, is available at:


Stand alone versions of the three schedulers are available from:


The stand alone "pb" and "eb" schedulers do not currently support SCHED_BATCH and SCHED_ISO.

Peter Williams pwil3058@xxxxxxxxxxxxxx

"Learning, n. The kind of ignorance distinguishing the studious."
-- Ambrose Bierce

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/