Messages in this thread | | | Date | Thu, 5 Jan 2006 07:03:14 +0100 | From | Willy Tarreau <> | Subject | Re: [patch 2.6.15] i386: Optimize local APIC timer interrupt code |
| |
On Wed, Jan 04, 2006 at 01:48:09PM -0500, Chuck Ebbert wrote: > Local APIC timer interrupt happens HZ times per second on each CPU. > > Optimize it for the case where profile multiplier equals one and does > not change (99+% of cases); this saves about 20 CPU cycles on Pentium II. > > Also update the old multiplier immediately after noticing it changed, > while values are register-hot, saving eight bytes of stack depth. > > Signed-off-by: Chuck Ebbert <76306.1226@compuserve.com> > > diff -up 2.6.15a.orig/arch/i386/kernel/apic.c 2.6.15a/arch/i386/kernel/apic.c > --- 2.6.15a.orig/arch/i386/kernel/apic.c > +++ 2.6.15a/arch/i386/kernel/apic.c > @@ -1137,7 +1137,7 @@ inline void smp_local_timer_interrupt(st > int cpu = smp_processor_id(); > > profile_tick(CPU_PROFILING, regs); > - if (--per_cpu(prof_counter, cpu) <= 0) { > + if (likely(--per_cpu(prof_counter, cpu)) <= 0) { ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ are you sure about this ? it looks suspicious to me. I would have expected something like this instead :
+ if (likely(--per_cpu(prof_counter, cpu) <= 0)) {
Willy
- 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/
| |