Patch from Robert Love <rml@tech9.net>

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}
 };
 

_