Messages in this thread | | | Date | Sun, 23 Jun 2002 17:16:34 -0700 | From | "Martin J. Bligh" <> | Subject | Re: [patch] 2.4.19-pre10-ac2: O(1) scheduler merge, -A3. |
| |
> On Mon, Jun 17, 2002 at 11:00:26AM +0200, Ingo Molnar wrote: >> irqbalance uses the set_ioapic_affinity() method to set affinity. The >> clustered APIC code is broken if it doesnt handle this properly. (i dont >> have such hardware so i cant tell, but it indeed doesnt appear to handle >> this case properly.) By wrapping around at node boundary the irqbalance >> code will work just fine. > > Perhaps a brief look at the code will help. Please forgive my > non-preservation of whitespace as I cut and pasted it.
IIRC, I set up the IOAPICs to use physical mode broadcast on all quads - physical broadcasts are quad-local, and thus the interrupt is always processesed by a cpu on the quad where it originated. Much simpler than trying to correctly program clustered logical mode broadcasts differently for every quad.
You also don't want to end up reprogramming the IO-APICs cross-quad, you want a per-node thread to do this. We have 2 IO-APICs per node.
Whilst balancing of some form is definitely valuable for a P4, I'm less convinced it's worthwhile for a P3 system. I presume what you're trying to achieve is cache warmth for the interrupt handling code at the expense of the cost of constantly reprogramming the IO-APICs.
At the very least, we need to have a simple disable config option in order to benchmark whether this change is worthwhile for each subarchitecture.
M.
- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |