From: Ingo Molnar <mingo@elte.hu>
To: Jaswinder Singh Rajput <jaswinder@kernel.org>
Cc: Thomas Gleixner <tglx@linutronix.de>,
Peter Zijlstra <peterz@infradead.org>,
x86 maintainers <x86@kernel.org>,
LKML <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 2/6 -tip] perf stat: treat same behaviour for all CYCLES and CLOCKS
Date: Wed, 1 Jul 2009 13:39:15 +0200 [thread overview]
Message-ID: <20090701113915.GG15958@elte.hu> (raw)
In-Reply-To: <1246440977.3403.7.camel@hpdv5.satnam>
* Jaswinder Singh Rajput <jaswinder@kernel.org> wrote:
> For normalization also added SW_CPU_CLOCK and HW_BUS_CYCLES
>
> For nsec_printout also added SW_CPU_CLOCK
>
> Added helper functions to check counter unit as cycles and instructions
>
> Signed-off-by: Jaswinder Singh Rajput <jaswinderrajput@gmail.com>
> ---
> tools/perf/builtin-stat.c | 49 +++++++++++++++++++++++++++++++-------------
> 1 files changed, 34 insertions(+), 15 deletions(-)
>
> diff --git a/tools/perf/builtin-stat.c b/tools/perf/builtin-stat.c
> index 6bf2b80..af61c29 100644
> --- a/tools/perf/builtin-stat.c
> +++ b/tools/perf/builtin-stat.c
> @@ -144,6 +144,29 @@ static inline int nsec_counter(int counter)
> }
>
> /*
> + * Does the counter have cycles as a unit?
> + */
> +static inline int cycle_counter(int counter)
> +{
> + if (MATCH_EVENT(HARDWARE, HW_CPU_CYCLES, counter) ||
> + MATCH_EVENT(HARDWARE, HW_BUS_CYCLES, counter))
> + return 1;
> +
> + return 0;
> +}
> +
> +/*
> + * Does the counter have instructions as a unit?
> + */
> +static inline int instruction_counter(int counter)
> +{
> + if (MATCH_EVENT(HARDWARE, HW_INSTRUCTIONS, counter))
> + return 1;
> +
> + return 0;
> +}
This should be done a bit differently. Each event should have a
'unit type' index in its descriptor table, which links back to
_another_ event, specifying its unit.
For example:
(PERF_COUNT_HW_INSTRUCTIONS, -1 , "instructions")
(PERF_COUNT_HW_CACHE_REFERENCES, PERF_COUNT_HW_INSTRUCTIONS)
(PERF_COUNT_HW_CACHE_MISSES, PERF_COUNT_HW_INSTRUCTIONS)
'-1' signals an event that has itself as a unit, and a string field
gives us the pretty-print form of the unit.
The same could be done for other types of events as well, such as
software events:
(PERF_COUNT_SW_CPU_CLOCK, -1 , "nsecs")
(PERF_COUNT_SW_TASK_CLOCK, PERF_COUNT_SW_CPU_CLOCK )
This way normalization can be fully automated: say if we print out
PERF_COUNT_HW_CACHE_MISSES, we see that it is in units of
PERF_COUNT_HW_INSTRUCTIONS so we can print out that unit and can
normalize it to that metric.
the 'IPC' (Instructions Per Cycle) field is special, and if you are
interested in this then i think it should be implemented as a
special 'compound' event: it is represented by the division of two
events.
( If it's implemented like that then IPC will be printed in a
separate line, not as part of the instructions line - but that's
OK. )
Other 'compound' events might be possible too: for example a new
cache-hits field could be is cache-refs minus cache-misses.
I.e. the simplest model for 'compound' events would be:
X = A / B
X = A - B
X = A + B
We could list them in the event table, with a flag that specifies
which arithmetic operation connects two 'atomic' counters.
Then the adding of a new compound event would only be the matter of
adding one more line to the event table.
Can you see any problems with this approach?
Ingo
next prev parent reply other threads:[~2009-07-01 11:39 UTC|newest]
Thread overview: 41+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-07-01 9:33 [GIT-PULL -tip][PATCH 0/6] perf_counter patches Jaswinder Singh Rajput
2009-07-01 9:35 ` [PATCH 1/6 -tip] perf stat: define MATCH_EVENT for easy attrs checking Jaswinder Singh Rajput
2009-07-01 9:36 ` [PATCH 2/6 -tip] perf stat: treat same behaviour for all CYCLES and CLOCKS Jaswinder Singh Rajput
2009-07-01 9:37 ` [PATCH 3/6 -tip] perf_counter: Add Generalized Hardware vectored co-processor support for AMD Jaswinder Singh Rajput
2009-07-01 9:38 ` [PATCH 4/6 -tip] perf_counter: Add Generalized Hardware interrupt " Jaswinder Singh Rajput
2009-07-01 9:38 ` [PATCH 5/6 -tip] perf_counter: Add hardware vector events for nehalem Jaswinder Singh Rajput
2009-07-01 9:40 ` [PATCH 6/6 -tip] perf_counter: Add hardware interrupt events for nehalem, core2 and atom Jaswinder Singh Rajput
2009-07-01 11:24 ` [PATCH 4/6 -tip] perf_counter: Add Generalized Hardware interrupt support for AMD Ingo Molnar
2009-07-03 12:01 ` Jaswinder Singh Rajput
2009-07-04 10:22 ` Ingo Molnar
2009-07-04 14:17 ` Jaswinder Singh Rajput
2009-07-05 1:11 ` Ingo Molnar
2009-07-05 4:29 ` Jaswinder Singh Rajput
2009-07-05 8:04 ` Ingo Molnar
2009-07-05 9:01 ` Jaswinder Singh Rajput
2009-07-05 9:55 ` Jaswinder Singh Rajput
2009-07-01 11:20 ` [PATCH 3/6 -tip] perf_counter: Add Generalized Hardware vectored co-processor " Ingo Molnar
2009-07-01 11:27 ` Ingo Molnar
2009-07-01 11:40 ` Jaswinder Singh Rajput
2009-07-01 11:49 ` Ingo Molnar
2009-07-02 9:44 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Jaswinder Singh Rajput
2009-07-02 9:45 ` [PATCH 2/2 -tip] perf_counter: Add generalized hardware interrupt support for AMD and Intel Corei7/Nehalem, Core2 and Atom Jaswinder Singh Rajput
2009-07-03 10:33 ` Ingo Molnar
2009-07-03 7:38 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Jaswinder Singh Rajput
2009-07-03 9:30 ` Ingo Molnar
2009-07-03 10:10 ` Jaswinder Singh Rajput
2009-07-03 12:17 ` [PATCH 3/3 -tip] perf list: avoid replicating functions Jaswinder Singh Rajput
2009-07-04 9:50 ` Ingo Molnar
2009-07-03 10:29 ` [PATCH 1/2 -tip] perf_counter: Add generalized hardware vectored co-processor support for AMD and Intel Corei7/Nehalem Ingo Molnar
2009-07-03 11:55 ` Jaswinder Singh Rajput
2009-07-03 12:49 ` Jaswinder Singh Rajput
2009-07-03 13:25 ` Jaswinder Singh Rajput
2009-07-04 10:03 ` Ingo Molnar
2009-07-04 14:05 ` Jaswinder Singh Rajput
2009-07-04 9:49 ` Ingo Molnar
2009-07-04 13:54 ` Jaswinder Singh Rajput
2009-07-01 11:39 ` Ingo Molnar [this message]
2009-07-03 8:18 ` [PATCH 2/6 -tip] perf stat: treat same behaviour for all CYCLES and CLOCKS Paul Mackerras
2009-07-03 8:27 ` Ingo Molnar
2009-07-01 11:30 ` [tip:perfcounters/urgent] perf stat: Define MATCH_EVENT for easy attr checking tip-bot for Jaswinder Singh Rajput
2009-07-01 11:45 ` [GIT-PULL -tip][PATCH 0/6] perf_counter patches Ingo Molnar
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=20090701113915.GG15958@elte.hu \
--to=mingo@elte.hu \
--cc=jaswinder@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=tglx@linutronix.de \
--cc=x86@kernel.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