- kernel profiler & spinlock_contention
PATCH 1/1 - kernel profiler & spinlock_contention
Profiling is more useful if addresses in spinlock_contention were attributed to the caller of spinlock_contention.
arch/ia64/kernel/head.S +2 -0
@@ -888,6 +888,8 @@ cmp4.eq p14,p0=r30,r0 (p14) br.cond.sptk.few b6 // lock is now free, try to acquire br.cond.sptk.few .wait + .global ia64_spinlock_contention_pre3_4_end // for kernprof +ia64_spinlock_contention_pre3_4_end: END(ia64_spinlock_contention_pre3_4) #else
arch/ia64/kernel/time.c +11 -1
@@ -202,6 +202,9 @@ {unsigned long ip, slot;extern cpumask_t prof_cpu_mask; +#ifdef CONFIG_SMP +extern char ia64_spinlock_contention_pre3_4[], ia64_spinlock_contention_pre3_4_end[]; +#endif profile_hook (regs);
@@ -216,7 +219,14 @@* bits 2 and 3 rather than bits 0 and 1. */ slot = ip &3 ; - ip = (ip & ~3UL ) +4 *slot; + ip = (ip & ~3UL ); +#ifdef CONFIG_SMP +if (ip >= (unsigned long )ia64_spinlock_contention_pre3_4 && + ip < (unsigned long )ia64_spinlock_contention_pre3_4_end) + ip = regs->r28; + else +#endif + ip +=4 *slot;/* * Only measure the CPUs specified by /proc/irq/prof_cpu_mask.
Signature · 4 lines
Thanks Jack Steiner ([email protected]) 651-683-5302 Principal Engineer SGI - Silicon Graphics, Inc.
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Jack Steiner
Jack> Profiling is more useful if addresses in spinlock_contention Jack> were attributed to the caller of spinlock_contention.
Execuse the language, but I'm reading:
my tools suck so let's make the kernel suck!
Let's defer this discussion until next week, when I had a chance to release my profiling tool. I think you'll then agree that it's much better to leave the code as is. In fact, we should also have an out-of-line contention handler for the read/write locks.
--david
Quoted 8 lines · David Mosberger
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Jack Steiner
Jack> Profiling is more useful if addresses in
spinlock_contentionJack> were attributed to the caller ofspinlock_contention.Execuse the language, but I'm reading:
my tools suck so let's make the kernel suck!
I dont quite agree. The way it work right now, profiling on large systems is useless. The single hotest spot in the kernel is spinlock_contention & there is no clue why. The patch makes the kernel work the way it did before spinning for locks was moved out-of-line. I think that is a big improvement.
However, if your new tools allows me to determine the caller of spinlock_contention (I'm guessing that it does), that is even better!! If a prerelease version of the tools is available, I'll be happy to try it on our system
Quoted 5 lines
Let's defer this discussion until next week, when I had a chance to release my profiling tool. I think you'll then agree that it's much better to leave the code as is. In fact, we should also have an out-of-line contention handler for the read/write locks.
Agree!
Quoted 2 lines
--david
Signature · 4 lines
Thanks Jack Steiner ([email protected]) 651-683-5302 Principal Engineer SGI - Silicon Graphics, Inc.
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line
Quoted 1 line · Jack Steiner
Jack> However, if your new tools allows me to determine the caller Jack> of spinlock_contention (I'm guessing that it does), that is Jack> even better!!
Absolutely. Best of all, it requires absolutely no kernel modes. All it requires is a recent 2.6 kernel and an Itanium 2 CPU (sorry, Merced is out for this feature).
Jack> If a prerelease version of the tools is available, I'll be Jack> happy to try it on our system
I'll see what I can do.
--david