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	Mon Jan 12 10:11:46 2004
+++ 170-large-system-scheduling-hacks.patch/arch/ia64/kernel/time.c	Mon Jan 12 10:14:39 2004
@@ -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	Mon Jan 12 10:03:37 2004
+++ 170-large-system-scheduling-hacks.patch/kernel/sched.c	Mon Jan 12 10:16:04 2004
@@ -1280,7 +1280,7 @@ int can_migrate_task(task_t *tsk, runque
 		return 0;
 	if (!cpu_isset(this_cpu, tsk->cpus_allowed))
 		return 0;
-	if (!idle && (delta <= JIFFIES_TO_NS(cache_decay_ticks)))
+	if ((delta <= JIFFIES_TO_NS(cache_decay_ticks)))
 		return 0;
 	return 1;
 }
@@ -1379,9 +1379,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)
@@ -1402,8 +1402,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,
