diff options
author | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-05-14 12:16:55 -0400 |
---|---|---|
committer | Arnaldo Carvalho de Melo <acme@redhat.com> | 2010-05-14 12:16:55 -0400 |
commit | cee75ac7ecc27084accdb9d9d6fde65a09f047ae (patch) | |
tree | 686208e18b1ab5356658980ee92c96486384412e /tools/perf/util/hist.h | |
parent | c8446b9bdabcb0caa61bb341bd73c58f7104b503 (diff) |
perf hist: Clarify events_stats fields usage
The events_stats.total field is too generic, rename it to .total_period,
and also add a comment explaining that it is the sum of all the .period
fields in samples, that is needed because we use auto-freq to avoid
sampling artifacts.
Ditto for events_stats.lost, that is the sum of all lost_event.lost
fields, i.e. the number of events the kernel dropped.
Looking at the users, builtin-sched.c can make use of these fields and
stop doing it again.
Cc: Frédéric Weisbecker <fweisbec@gmail.com>
Cc: Mike Galbraith <efault@gmx.de>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Tom Zanussi <tzanussi@gmail.com>
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Diffstat (limited to 'tools/perf/util/hist.h')
-rw-r--r-- | tools/perf/util/hist.h | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/tools/perf/util/hist.h b/tools/perf/util/hist.h index 97b8962ff69a..da6b84814a50 100644 --- a/tools/perf/util/hist.h +++ b/tools/perf/util/hist.h | |||
@@ -37,9 +37,21 @@ struct sym_priv { | |||
37 | struct sym_ext *ext; | 37 | struct sym_ext *ext; |
38 | }; | 38 | }; |
39 | 39 | ||
40 | /* | ||
41 | * The kernel collects the number of events it couldn't send in a stretch and | ||
42 | * when possible sends this number in a PERF_RECORD_LOST event. The number of | ||
43 | * such "chunks" of lost events is stored in .nr_events[PERF_EVENT_LOST] while | ||
44 | * total_lost tells exactly how many events the kernel in fact lost, i.e. it is | ||
45 | * the sum of all struct lost_event.lost fields reported. | ||
46 | * | ||
47 | * The total_period is needed because by default auto-freq is used, so | ||
48 | * multipling nr_events[PERF_EVENT_SAMPLE] by a frequency isn't possible to get | ||
49 | * the total number of low level events, it is necessary to to sum all struct | ||
50 | * sample_event.period and stash the result in total_period. | ||
51 | */ | ||
40 | struct events_stats { | 52 | struct events_stats { |
41 | u64 total; | 53 | u64 total_period; |
42 | u64 lost; | 54 | u64 total_lost; |
43 | u32 nr_events[PERF_RECORD_HEADER_MAX]; | 55 | u32 nr_events[PERF_RECORD_HEADER_MAX]; |
44 | u32 nr_unknown_events; | 56 | u32 nr_unknown_events; |
45 | }; | 57 | }; |