diff -Naurp -X /home/jbarnes/dontdiff 160-noirqdebug-default.patch/arch/ia64/kernel/time.c 170-large-system-scheduling-hacks.patch/arch/ia64/kernel/time.c
--- 160-noirqdebug-default.patch/arch/ia64/kernel/time.c	Tue Dec 30 16:39:06 2003
+++ 170-large-system-scheduling-hacks.patch/arch/ia64/kernel/time.c	Tue Dec 30 16:39:50 2003
@@ -47,7 +47,7 @@ sched_clock (void)
 {
 	unsigned long offset = ia64_get_itc();
 
-	return (offset * local_cpu_data->nsec_per_cyc) >> IA64_NSEC_PER_CYC_SHIFT;
+	return jiffies * (1000000000 / HZ);
 }
 
 static void
diff -Naurp -X /home/jbarnes/dontdiff 160-noirqdebug-default.patch/kernel/sched.c 170-large-system-scheduling-hacks.patch/kernel/sched.c
--- 160-noirqdebug-default.patch/kernel/sched.c	Tue Dec 30 16:38:57 2003
+++ 170-large-system-scheduling-hacks.patch/kernel/sched.c	Tue Dec 30 16:39:50 2003
@@ -1158,7 +1158,7 @@ can_migrate_task(task_t *tsk, runqueue_t
 {
 	unsigned long delta = sched_clock() - tsk->timestamp;
 
-	if (!idle && (delta <= JIFFIES_TO_NS(cache_decay_ticks)))
+	if (delta <= JIFFIES_TO_NS(cache_decay_ticks))
 		return 0;
 	if (task_running(rq, tsk))
 		return 0;
@@ -1265,9 +1265,9 @@ out:
  * On NUMA, do a node-rebalance every 400 msecs.
  */
 #define IDLE_REBALANCE_TICK (HZ/1000 ?: 1)
-#define BUSY_REBALANCE_TICK (HZ/5 ?: 1)
-#define IDLE_NODE_REBALANCE_TICK (IDLE_REBALANCE_TICK * 5)
-#define BUSY_NODE_REBALANCE_TICK (BUSY_REBALANCE_TICK * 2)
+#define BUSY_REBALANCE_TICK (HZ/10 ?: 1)
+#define IDLE_NODE_REBALANCE_TICK (IDLE_REBALANCE_TICK * 100)
+#define BUSY_NODE_REBALANCE_TICK (BUSY_REBALANCE_TICK * 50)
 
 #ifdef CONFIG_NUMA
 static void balance_node(runqueue_t *this_rq, int idle, int this_cpu)
@@ -1288,8 +1288,10 @@ static void rebalance_tick(runqueue_t *t
 {
 #ifdef CONFIG_NUMA
 	int this_cpu = smp_processor_id();
-#endif
+	unsigned long j = jiffies + this_cpu;
+#else
 	unsigned long j = jiffies;
+#endif
 
 	/*
 	 * First do inter-node rebalancing, then intra-node rebalancing,
