On 11/30/16, David Ahern <[email protected]> wrote: > Arnaldo reported an unhelpful error message when running perf sched > timehist on a file that did not contain sched tracepoints: > > [root@jouet ~]# perf sched timehist > No trace sample to read. Did you call 'perf record -R'? > > [root@jouet ~]# perf evlist -v > cycles:ppp: size: 112, { sample_period, sample_freq }: 4000, > sample_type: IP|TID|TIME|CALLCHAIN|CPU|PERIOD, disabled: 1, inherit: 1, > mmap: 1, comm: 1, freq: 1, task: 1, precise_ip: 3, sample_id_all: 1, > exclude_guest: 1, mmap2: 1, comm_exec: 1 > > Change the has_traces check to look for the sched_switch event. Analysis > for perf sched timehist requires at least this event. > > Now when analyzing a file without sched tracepoints you get: > > root@f21-vbox:/tmp$ perf sched timehist > No sched_switch events found. Have you run 'perf sched record'? > > Signed-off-by: David Ahern <[email protected]>
Acked-by: Namhyung Kim <[email protected]> Thanks, Namhyung > --- > tools/perf/builtin-sched.c | 6 +++++- > 1 file changed, 5 insertions(+), 1 deletion(-) > > diff --git a/tools/perf/builtin-sched.c b/tools/perf/builtin-sched.c > index 870d94cd20ba..84c39f177bef 100644 > --- a/tools/perf/builtin-sched.c > +++ b/tools/perf/builtin-sched.c > @@ -2629,8 +2629,12 @@ static int perf_sched__timehist(struct perf_sched > *sched) > if (perf_session__set_tracepoints_handlers(session, handlers)) > goto out; > > - if (!perf_session__has_traces(session, "record -R")) > + /* sched_switch event at a minimum needs to exist */ > + if (!perf_evlist__find_tracepoint_by_name(session->evlist, > + "sched:sched_switch")) { > + pr_err("No sched_switch events found. Have you run 'perf sched > record'?\n"); > goto out; > + } > > if (sched->show_migrations && > perf_session__set_tracepoints_handlers(session, migrate_handlers)) > -- > 2.7.4 (Apple Git-66) > > -- Thanks, Namhyung Kim

