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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox