On Tue, May 25, 2004 at 07:35:20AM +0200, Manfred Spraul wrote:> Hi,> > Step one for reducing cacheline trashing within rcupdate.c:> > The current code uses the rcu_cpu_mask bitmap both for keeping track> of the cpus that haven't gone through a quiescent state and for> checking if a cpu should look for quiescent states. The bitmap> is frequently changed and the check is done by polling - > together this causes cache line trashing.> .....

It looks like the patch fixes the problem that I saw.

I ran a 2.6.6+rcupatch kernel on a 512p system. Previously, this systemshowed ALL cpus becoming ~50% busy when running a "ls" loop on a singlecpu. This behavior is now fixed.

The following shows the system overhead on cpus 0-9 (higher cpus aresimilar):

There is a small increase in system overhead on all cpus but not the 50% seenearlier.

I dont understand, however, why the overhead increased on cpus 1 & 5. Thismay be a test anomaly but I suspect something else. I'll look into that later.

I also noticed one other anomaly. /proc/interrupts shows the number of interruptsfor each cpu. Under most circumstances, /proc/interrupts shows 1024 timerinterrupts/sec on each cpu. When the "ls" script is running, the number of timer interrupts/sec on the cpu running "ls" drops to ~650. I'm notsure why (perhaps running too long somewhere with ints disabled).