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>
This commit is contained in:
@@ -11,6 +11,8 @@
|
|||||||
|
|
||||||
static char const *script_name;
|
static char const *script_name;
|
||||||
static char const *generate_script_lang;
|
static char const *generate_script_lang;
|
||||||
|
static bool debug_ordering;
|
||||||
|
static u64 last_timestamp;
|
||||||
|
|
||||||
static int default_start_script(const char *script __unused,
|
static int default_start_script(const char *script __unused,
|
||||||
int argc __unused,
|
int argc __unused,
|
||||||
@@ -87,6 +89,14 @@ static int process_sample_event(event_t *event, struct perf_session *session)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (session->sample_type & PERF_SAMPLE_RAW) {
|
if (session->sample_type & PERF_SAMPLE_RAW) {
|
||||||
|
if (debug_ordering) {
|
||||||
|
if (data.time < last_timestamp) {
|
||||||
|
pr_err("Samples misordered, previous: %llu "
|
||||||
|
"this: %llu\n", last_timestamp,
|
||||||
|
data.time);
|
||||||
|
}
|
||||||
|
last_timestamp = data.time;
|
||||||
|
}
|
||||||
/*
|
/*
|
||||||
* FIXME: better resolve from pid from the struct trace_entry
|
* FIXME: better resolve from pid from the struct trace_entry
|
||||||
* field, although it should be the same than this perf
|
* field, although it should be the same than this perf
|
||||||
@@ -532,6 +542,8 @@ static const struct option options[] = {
|
|||||||
"generate perf-trace.xx script in specified language"),
|
"generate perf-trace.xx script in specified language"),
|
||||||
OPT_STRING('i', "input", &input_name, "file",
|
OPT_STRING('i', "input", &input_name, "file",
|
||||||
"input file name"),
|
"input file name"),
|
||||||
|
OPT_BOOLEAN('d', "debug-ordering", &debug_ordering,
|
||||||
|
"check that samples time ordering is monotonic"),
|
||||||
|
|
||||||
OPT_END()
|
OPT_END()
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user