Re: perf top: losing events?

From: Arnaldo Carvalho de Melo
Date: Thu Jan 21 2010 - 07:23:01 EST


Em Thu, Jan 21, 2010 at 06:42:08AM +0100, Mike Galbraith escreveu:
> Greetings Arnaldo,
>
> ------------------------------------------------------------------------------------------------------------------------------
> PerfTop: 670 irqs/sec kernel:14.6% [1000Hz cycles], (all, cpu: 3)
> ------------------------------------------------------------------------------------------------------------------------------
>
> samples pcnt function DSO
> _______ _____ ___________________ ________________________________________________________________
>
> 12535.00 82.1% main /root/bin/pert
> 302.00 2.0% clear_page_c [kernel.kallsyms]
> 169.00 1.1% _int_malloc /lib64/libc-2.9.so
> 168.00 1.1% page_fault [kernel.kallsyms]
> 138.00 0.9% yylex /usr/local/src/kernel/linux-2.6.33.git/scripts/genksyms/genksyms
> 121.00 0.8% __GI_memset /lib64/libc-2.9.so
> 117.00 0.8% copy_page_c [kernel.kallsyms]
> 96.00 0.6% _raw_spin_lock [kernel.kallsyms]
> 79.00 0.5% use_config /usr/local/src/kernel/linux-2.6.33.git/scripts/basic/fixdep
>
> If only 100% userland hog (pert) is running, I see the expected 1KHz
> irqs/sec. As soon as I start a kbuild with it, irqs/sec drops, though
> NMIs are indeed happening at 1KHz.
>
> Bisection points to 5b2bb75 perf top: Support userspace symbols too.

Can you check if this one helps?

- Arnaldo

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 7a8a77e..8b04988 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -934,8 +934,11 @@ static void event__process_sample(const event_t *self,
struct addr_location al;
u8 origin = self->header.misc & PERF_RECORD_MISC_CPUMODE_MASK;

+ ++samples;
+
switch (origin) {
case PERF_RECORD_MISC_USER:
+ ++userspace_samples;
if (hide_user_symbols)
return;
break;
@@ -960,9 +963,6 @@ static void event__process_sample(const event_t *self,
if (list_empty(&syme->node) || !syme->node.next)
__list_insert_active_sym(syme);
pthread_mutex_unlock(&active_symbols_lock);
- if (origin == PERF_RECORD_MISC_USER)
- ++userspace_samples;
- ++samples;
}
}

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