All of lore.kernel.org
 help / color / mirror / Atom feed
From: Ingo Molnar <mingo@elte.hu>
To: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Paul Mackerras <paulus@samba.org>,
	Corey Ashford <cjashfor@linux.vnet.ibm.com>,
	linux-kernel@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: Re: [PATCH 4/4] perf_counter: update perf-top to use the new freq interface
Date: Fri, 15 May 2009 15:33:19 +0200	[thread overview]
Message-ID: <20090515133319.GA1225@elte.hu> (raw)
In-Reply-To: <20090515132018.707922166@chello.nl>


* Peter Zijlstra <a.p.zijlstra@chello.nl> wrote:

> Provide perf top -F as alternative to -c.
> 
> Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl>
> CC: Paul Mackerras <paulus@samba.org>
> CC: Corey Ashford <cjashfor@linux.vnet.ibm.com>
> ---
>  Documentation/perf_counter/builtin-top.c |    6 +++++-
>  1 file changed, 5 insertions(+), 1 deletion(-)
> 
> Index: linux-2.6/Documentation/perf_counter/builtin-top.c
> ===================================================================
> --- linux-2.6.orig/Documentation/perf_counter/builtin-top.c
> +++ linux-2.6/Documentation/perf_counter/builtin-top.c
> @@ -98,6 +98,7 @@ static unsigned int		page_size;
>  static unsigned int		mmap_pages			=  16;
>  static int			use_mmap			= 0;
>  static int			use_munmap			= 0;
> +static int			freq				= 0;
>  
>  static char			*vmlinux;
>  
> @@ -846,9 +847,10 @@ static void process_options(int argc, ch
>  			{"stat",	no_argument,		NULL, 'S'},
>  			{"vmlinux",	required_argument,	NULL, 'x'},
>  			{"zero",	no_argument,		NULL, 'z'},
> +			{"freq",	required_argument,	NULL, 'F'},
>  			{NULL,		0,			NULL,  0 }
>  		};
> -		int c = getopt_long(argc, argv, "+:ac:C:d:De:f:g:hln:m:p:r:s:Sx:zMU",
> +		int c = getopt_long(argc, argv, "+:ac:C:d:De:f:g:hln:m:p:r:s:Sx:zMUF:",
>  				    long_options, &option_index);
>  		if (c == -1)
>  			break;
> @@ -889,6 +891,7 @@ static void process_options(int argc, ch
>  		case 'm': mmap_pages			=   atoi(optarg); break;
>  		case 'M': use_mmap			=              1; break;
>  		case 'U': use_munmap			=              1; break;
> +		case 'F': freq = 1; default_interval	=   atoi(optarg); break;
>  		default: error = 1; break;
>  		}
>  	}
> @@ -1075,6 +1078,7 @@ int cmd_top(int argc, char **argv, const
>  			hw_event.nmi		= nmi;
>  			hw_event.mmap		= use_mmap;
>  			hw_event.munmap		= use_munmap;
> +			hw_event.freq		= freq;
>  
>  			fd[i][counter] = sys_perf_counter_open(&hw_event, tid, cpu, group_fd, 0);
>  			if (fd[i][counter] < 0) {

this frequency-based profiling is nice. It's a lot more untuitive to 
users than rigid defaults of 'one IRQ per 100,000 cycles'.

So i think perf-top should be changed to have -F enabled by default, 
with a default 10 KHz frequency for all counters.

But for that we need another fix for this: currently the histogram 
is 'number of interrupts' based, which gets skewed with frequency 
based profiling.

A correct sorting key would be a normalized histogram, along 'number 
of hardware events', which could be measured as deltas between 
interrupts, like this:

	counter_val: 1200000       [ IRQ ] -> { 1200000, RIP-1 }
                 .
                 .
                 .
        counter_val: 1250000       [ IRQ ] -> { 1250000, RIP-2 }
                 .
                 .
                 .
        counter_val: 1260000       [ IRQ ] -> { 1260000, RIP-3 }

look at how the delta between the first and the second IRQ was 50000 
cycles, while the delta between the second and third IRQ was just 
10000 cycles - because the frequency adjustment code shortened the 
period.

So in the histogram, RIP-2 should get 50,000 cycles, and RIP-3 
should get 10,000 cycles.

With the current scheme both would get +1 event credited - which is 
wrong.

Agreed?

	Ingo

  reply	other threads:[~2009-05-15 13:33 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-05-15 13:19 [PATCH 0/4] perf-counter bits Peter Zijlstra
2009-05-15 13:19 ` [PATCH 1/4] perf_counter: remove perf_disable/enable exports Peter Zijlstra
2009-05-15 14:43   ` [tip:perfcounters/core] " tip-bot for Peter Zijlstra
2009-05-15 13:19 ` [PATCH 2/4] perf_counter: per user mlock gift Peter Zijlstra
2009-05-15 14:43   ` [tip:perfcounters/core] " tip-bot for Peter Zijlstra
2009-05-15 13:19 ` [PATCH 3/4] perf_counter: frequency based adaptive irq_period Peter Zijlstra
2009-05-15 13:35   ` Ingo Molnar
2009-05-15 13:37   ` Peter Zijlstra
2009-05-15 14:43     ` [tip:perfcounters/core] perf_counter: frequency based adaptive irq_period, 32-bit fix tip-bot for Peter Zijlstra
2009-05-15 14:43   ` [tip:perfcounters/core] perf_counter: frequency based adaptive irq_period tip-bot for Peter Zijlstra
2009-05-15 13:19 ` [PATCH 4/4] perf_counter: update perf-top to use the new freq interface Peter Zijlstra
2009-05-15 13:33   ` Ingo Molnar [this message]
2009-05-15 14:43   ` [tip:perfcounters/core] perf top: update " tip-bot for Peter Zijlstra

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20090515133319.GA1225@elte.hu \
    --to=mingo@elte.hu \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=cjashfor@linux.vnet.ibm.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=paulus@samba.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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.