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
next prev parent 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.