Patch from Robert Love I am in an accommodating mood... include/linux/sysctl.h | 1 + kernel/sched.c | 11 ++++++----- kernel/sysctl.c | 4 ++++ 3 files changed, 11 insertions(+), 5 deletions(-) diff -puN include/linux/sysctl.h~scheduler-tunables-fix include/linux/sysctl.h --- 25/include/linux/sysctl.h~scheduler-tunables-fix 2003-03-07 20:24:39.000000000 -0800 +++ 25-akpm/include/linux/sysctl.h 2003-03-07 20:24:39.000000000 -0800 @@ -169,6 +169,7 @@ enum { SCHED_INTERACTIVE_DELTA=7, /* delta used to scale interactivity */ SCHED_MAX_SLEEP_AVG=8, /* maximum sleep avg attainable */ SCHED_STARVATION_LIMIT=9, /* no re-active if expired is starved */ + SCHED_NODE_THRESHOLD=10, /* NUMA node rebalance threshold */ }; /* CTL_NET names: */ diff -puN kernel/sched.c~scheduler-tunables-fix kernel/sched.c --- 25/kernel/sched.c~scheduler-tunables-fix 2003-03-07 20:24:39.000000000 -0800 +++ 25-akpm/kernel/sched.c 2003-03-07 20:24:39.000000000 -0800 @@ -62,14 +62,15 @@ */ int min_timeslice = (10 * HZ) / 1000; -int max_timeslice = (300 * HZ) / 1000; -int child_penalty = 95; +int max_timeslice = (200 * HZ) / 1000; +int child_penalty = 50; int parent_penalty = 100; int exit_weight = 3; int prio_bonus_ratio = 25; int interactive_delta = 2; -int max_sleep_avg = 2 * HZ; -int starvation_limit = 2 * HZ; +int max_sleep_avg = 10 * HZ; +int starvation_limit = 10 * HZ; +int node_threshold = 125; #define MIN_TIMESLICE (min_timeslice) #define MAX_TIMESLICE (max_timeslice) @@ -80,7 +81,7 @@ int starvation_limit = 2 * HZ; #define INTERACTIVE_DELTA (interactive_delta) #define MAX_SLEEP_AVG (max_sleep_avg) #define STARVATION_LIMIT (starvation_limit) -#define NODE_THRESHOLD 125 +#define NODE_THRESHOLD (node_threshold) /* * If a task is 'interactive' then we reinsert it in the active diff -puN kernel/sysctl.c~scheduler-tunables-fix kernel/sysctl.c --- 25/kernel/sysctl.c~scheduler-tunables-fix 2003-03-07 20:24:39.000000000 -0800 +++ 25-akpm/kernel/sysctl.c 2003-03-07 20:24:39.000000000 -0800 @@ -64,6 +64,7 @@ extern int prio_bonus_ratio; extern int interactive_delta; extern int max_sleep_avg; extern int starvation_limit; +extern int node_threshold; /* this is needed for the proc_dointvec_minmax for [fs_]overflow UID and GID */ static int maxolduid = 65535; @@ -399,6 +400,9 @@ static ctl_table sched_table[] = { {SCHED_STARVATION_LIMIT, "starvation_limit", &starvation_limit, sizeof(int), 0644, NULL, &proc_dointvec_minmax, &sysctl_intvec, NULL, &zero, NULL}, + {SCHED_NODE_THRESHOLD, "node_threshold", &node_threshold, + sizeof(int), 0644, NULL, &proc_dointvec_minmax, + &sysctl_intvec, NULL, &one, NULL}, {0} }; _