diff options
author | Frederic Weisbecker <fweisbec@gmail.com> | 2010-04-23 19:55:09 -0400 |
---|---|---|
committer | Frederic Weisbecker <fweisbec@gmail.com> | 2010-04-23 21:50:48 -0400 |
commit | e1889d75aff0c3786bc53aeb7d9eaca0691c19c5 (patch) | |
tree | a7d3448ffe47bb806e9af85c6935fdc43c837eff /tools | |
parent | 9df9bbba9f7e2e4ffdc51bbbfa524b67691321d2 (diff) |
perf: Add a perf trace option to check samples ordering reliability
To ensure sample events time reordering is reliable, add a -d option
to perf trace to check that automatically.
Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com>
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Paul Mackerras <paulus@samba.org>
Cc: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
Cc: Ingo Molnar <mingo@elte.hu>
Cc: Masami Hiramatsu <mhiramat@redhat.com>
Cc: Tom Zanussi <tzanussi@gmail.com>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/perf/builtin-trace.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/tools/perf/builtin-trace.c b/tools/perf/builtin-trace.c index 1d034f6fa28a..77f556f7604c 100644 --- a/tools/perf/builtin-trace.c +++ b/tools/perf/builtin-trace.c | |||
@@ -11,6 +11,8 @@ | |||
11 | 11 | ||
12 | static char const *script_name; | 12 | static char const *script_name; |
13 | static char const *generate_script_lang; | 13 | static char const *generate_script_lang; |
14 | static bool debug_ordering; | ||
15 | static u64 last_timestamp; | ||
14 | 16 | ||
15 | static int default_start_script(const char *script __unused, | 17 | static int default_start_script(const char *script __unused, |
16 | int argc __unused, | 18 | int argc __unused, |
@@ -87,6 +89,14 @@ static int process_sample_event(event_t *event, struct perf_session *session) | |||
87 | } | 89 | } |
88 | 90 | ||
89 | if (session->sample_type & PERF_SAMPLE_RAW) { | 91 | if (session->sample_type & PERF_SAMPLE_RAW) { |
92 | if (debug_ordering) { | ||
93 | if (data.time < last_timestamp) { | ||
94 | pr_err("Samples misordered, previous: %llu " | ||
95 | "this: %llu\n", last_timestamp, | ||
96 | data.time); | ||
97 | } | ||
98 | last_timestamp = data.time; | ||
99 | } | ||
90 | /* | 100 | /* |
91 | * FIXME: better resolve from pid from the struct trace_entry | 101 | * FIXME: better resolve from pid from the struct trace_entry |
92 | * field, although it should be the same than this perf | 102 | * field, although it should be the same than this perf |
@@ -532,6 +542,8 @@ static const struct option options[] = { | |||
532 | "generate perf-trace.xx script in specified language"), | 542 | "generate perf-trace.xx script in specified language"), |
533 | OPT_STRING('i', "input", &input_name, "file", | 543 | OPT_STRING('i', "input", &input_name, "file", |
534 | "input file name"), | 544 | "input file name"), |
545 | OPT_BOOLEAN('d', "debug-ordering", &debug_ordering, | ||
546 | "check that samples time ordering is monotonic"), | ||
535 | 547 | ||
536 | OPT_END() | 548 | OPT_END() |
537 | }; | 549 | }; |