Re: scheduling problem?

David S. Miller (davem@redhat.com)
Fri, 17 Dec 1999 07:08:05 -0800


Date: Fri, 17 Dec 1999 16:40:52 +0100 (CET)
From: Ingo Molnar <mingo@chiara.csoma.elte.hu>

polling on need_resched will also increase performance on SMP systems
btw., because the cacheline snoop event goes to the other CPU much faster
than the APIC message - and we can skip sending the APIC message at all if
the other CPU is running an idle thread. OTOH CPUs will run much hotter
...

And in fact this is what some other architectures (sparc64 for one)
already do on SMP. We avoid the send_reschedule entirely if the
cpu is idling:

extern __inline__ void smp_send_reschedule(int cpu)
{
extern void smp_receive_signal(int);
if(cpu_data[cpu].idle_volume == 0)
smp_receive_signal(cpu);
}

(idle_volume is just a local counter we increment on sparc64/SMP
while a cpu is in the cpu_idle loop, we use it to implement our
dynamic IRQ retargeting heuristics)

Later,
David S. Miller
davem@redhat.com

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/