All of lore.kernel.org
 help / color / mirror / Atom feed
* perf top: losing events?
@ 2010-01-21  5:42 Mike Galbraith
  2010-01-21  6:02 ` Mike Galbraith
  2010-01-21 12:22 ` Arnaldo Carvalho de Melo
  0 siblings, 2 replies; 7+ messages in thread
From: Mike Galbraith @ 2010-01-21  5:42 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Peter Zijlstra, LKML

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.

	-Mike


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21  5:42 perf top: losing events? Mike Galbraith
@ 2010-01-21  6:02 ` Mike Galbraith
  2010-01-21 12:22 ` Arnaldo Carvalho de Melo
  1 sibling, 0 replies; 7+ messages in thread
From: Mike Galbraith @ 2010-01-21  6:02 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Peter Zijlstra, LKML

Yup, definitely a booboo in there somewhere.

Step 1.

oinker running, perf top -C 3 -z


------------------------------------------------------------------------------------------------------------------------------
   PerfTop:    1001 irqs/sec  kernel: 0.0% [1000Hz cycles],  (all, cpu: 3)                                                    
------------------------------------------------------------------------------------------------------------------------------

             samples  pcnt func DSO
             _______ _____ ____ ______________

             2003.00 100.0% main /root/bin/pert

perfect (off by one is beauty mark, not wart;)

Step 2.

taskset -c 3 ./massive_intr 3 999


  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  P COMMAND
 7133 root      20   0  7928  232  128 R   25  0.0   0:09.68 3 massive_intr
 7134 root      20   0  7928  232  128 R   25  0.0   0:09.68 3 massive_intr
25932 root      20   0  7920  584  476 R   25  0.0  42:03.07 3 pert
 7132 root      20   0  7928  232  128 R   25  0.0   0:09.68 3 massive_intr

------------------------------------------------------------------------------------------------------------------------------
   PerfTop:     252 irqs/sec  kernel: 0.8% [1000Hz cycles],  (all, cpu: 3)
------------------------------------------------------------------------------------------------------------------------------

             samples  pcnt func DSO
             _______ _____ ____ ______________

              500.00 99.2% main /root/bin/pert


massive_intr appeared briefly, then poof, gone (likely when it forked
off worker-bees), leaving this.

	-Mike


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21  5:42 perf top: losing events? Mike Galbraith
  2010-01-21  6:02 ` Mike Galbraith
@ 2010-01-21 12:22 ` Arnaldo Carvalho de Melo
  2010-01-21 14:28   ` Mike Galbraith
  1 sibling, 1 reply; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-01-21 12:22 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: Peter Zijlstra, LKML

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;
 	}
 }
 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21 12:22 ` Arnaldo Carvalho de Melo
@ 2010-01-21 14:28   ` Mike Galbraith
  2010-01-21 14:49     ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 7+ messages in thread
From: Mike Galbraith @ 2010-01-21 14:28 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Peter Zijlstra, LKML

On Thu, 2010-01-21 at 10:22 -0200, Arnaldo Carvalho de Melo wrote:

> Can you check if this one helps? 

Made interrupt count correct, but symbols aren't mapped after the task
forks it seems.  At least, in event__preprocess_sample(), after
thread__find_addr_location(), al->map is NULL a LOT.

	-Mike


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21 14:28   ` Mike Galbraith
@ 2010-01-21 14:49     ` Arnaldo Carvalho de Melo
  2010-01-21 14:56       ` Mike Galbraith
  0 siblings, 1 reply; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-01-21 14:49 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: Peter Zijlstra, LKML

Em Thu, Jan 21, 2010 at 03:28:32PM +0100, Mike Galbraith escreveu:
> On Thu, 2010-01-21 at 10:22 -0200, Arnaldo Carvalho de Melo wrote:
> 
> > Can you check if this one helps? 
> 
> Made interrupt count correct, but symbols aren't mapped after the task
> forks it seems.  At least, in event__preprocess_sample(), after
> thread__find_addr_location(), al->map is NULL a LOT.

Try this one on top of the previous one:

diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
index 8b04988..2227b84 100644
--- a/tools/perf/builtin-top.c
+++ b/tools/perf/builtin-top.c
@@ -975,6 +975,10 @@ static int event__process(event_t *event, struct perf_session *session)
 	case PERF_RECORD_MMAP:
 		event__process_mmap(event, session);
 		break;
+	case PERF_RECORD_FORK:
+	case PERF_RECORD_EXIT:
+		event__process_task(event, session);
+		break;
 	default:
 		break;
 	}

^ permalink raw reply related	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21 14:49     ` Arnaldo Carvalho de Melo
@ 2010-01-21 14:56       ` Mike Galbraith
  2010-01-21 15:02         ` Arnaldo Carvalho de Melo
  0 siblings, 1 reply; 7+ messages in thread
From: Mike Galbraith @ 2010-01-21 14:56 UTC (permalink / raw)
  To: Arnaldo Carvalho de Melo; +Cc: Peter Zijlstra, LKML

On Thu, 2010-01-21 at 12:49 -0200, Arnaldo Carvalho de Melo wrote:
> Em Thu, Jan 21, 2010 at 03:28:32PM +0100, Mike Galbraith escreveu:
> > On Thu, 2010-01-21 at 10:22 -0200, Arnaldo Carvalho de Melo wrote:
> > 
> > > Can you check if this one helps? 
> > 
> > Made interrupt count correct, but symbols aren't mapped after the task
> > forks it seems.  At least, in event__preprocess_sample(), after
> > thread__find_addr_location(), al->map is NULL a LOT.
> 
> Try this one on top of the previous one:
> 
> diff --git a/tools/perf/builtin-top.c b/tools/perf/builtin-top.c
> index 8b04988..2227b84 100644
> --- a/tools/perf/builtin-top.c
> +++ b/tools/perf/builtin-top.c
> @@ -975,6 +975,10 @@ static int event__process(event_t *event, struct perf_session *session)
>  	case PERF_RECORD_MMAP:
>  		event__process_mmap(event, session);
>  		break;
> +	case PERF_RECORD_FORK:
> +	case PERF_RECORD_EXIT:
> +		event__process_task(event, session);
> +		break;
>  	default:
>  		break;
>  	}

Yup.  All better.

I figured that had to to be tied in from rummaging around earlier.

	-Mike


^ permalink raw reply	[flat|nested] 7+ messages in thread

* Re: perf top: losing events?
  2010-01-21 14:56       ` Mike Galbraith
@ 2010-01-21 15:02         ` Arnaldo Carvalho de Melo
  0 siblings, 0 replies; 7+ messages in thread
From: Arnaldo Carvalho de Melo @ 2010-01-21 15:02 UTC (permalink / raw)
  To: Mike Galbraith; +Cc: Peter Zijlstra, LKML

Em Thu, Jan 21, 2010 at 03:56:12PM +0100, Mike Galbraith escreveu:
> On Thu, 2010-01-21 at 12:49 -0200, Arnaldo Carvalho de Melo wrote:
> > +	case PERF_RECORD_FORK:
> > +	case PERF_RECORD_EXIT:
> > +		event__process_task(event, session);
> > +		break;
> >  	default:
> >  		break;
> >  	}
> 
> Yup.  All better.
> 
> I figured that had to to be tied in from rummaging around earlier.

Thanks for testing!

I'm pushing these two fixes with your Tested-by tags.

- Arnaldo

^ permalink raw reply	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2010-01-21 15:02 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-21  5:42 perf top: losing events? Mike Galbraith
2010-01-21  6:02 ` Mike Galbraith
2010-01-21 12:22 ` Arnaldo Carvalho de Melo
2010-01-21 14:28   ` Mike Galbraith
2010-01-21 14:49     ` Arnaldo Carvalho de Melo
2010-01-21 14:56       ` Mike Galbraith
2010-01-21 15:02         ` Arnaldo Carvalho de Melo

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.