help? converting to single global prio_array in scheduler, ran intosnag

From: Christopher Friesen
Date: Wed Apr 05 2006 - 12:54:53 EST



We're having some issues with the load balancer algorithm in CKRM, so due to time pressure I'm looking at converting the scheduler to use a single global prio_array rather than the per-cpu ones that it currently uses. I realize we're going to take a hit, but we don't have too many cpus so I'm hoping it won't be too bad.

So far I've removed arrays/expired/active from the runqueue and made them global, added a new spinlock to protect the global list (always taken after the runqueue lock), and converted all the callers to use the appropriate variable. All changes were in sched.h and sched.c.

This builds for both UP and SMP, boots for UP, and boots for SMP if I set the "nosmp" boot arg.

Unfortunately I seem to have missed something. On my Mac G5 if I allow it to use both cpus it gets to "smp_core99_setup_cpu 0 done", then hangs.

Anyone have any suggestions as to what I should look at? Maybe the idle task initialization?

Thanks,

Chris

-
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/