Re: [PATCH 12/14] perf ftrace: Use pager for displaying result
From: Namhyung Kim
Date: Wed May 08 2013 - 01:49:22 EST
On Mon, 6 May 2013 13:38:19 +0200, Jiri Olsa wrote:
> On Mon, May 06, 2013 at 10:52:46AM +0900, Namhyung Kim wrote:
>> On Fri, 26 Apr 2013 10:40:23 +0200, Jiri Olsa wrote:
>> > On Thu, Apr 25, 2013 at 03:50:45PM +0900, Namhyung Kim wrote:
>> >> On Wed, 24 Apr 2013 16:17:24 +0200, Jiri Olsa wrote:
>> >> > On Tue, Apr 23, 2013 at 05:31:10PM +0900, Namhyung Kim wrote:
>> >> >> From: Namhyung Kim <namhyung.kim@xxxxxxx>
>> >> >>
>> >> >> It's convenient to use pager when seeing many lines of result.
>> >> >>
>> >> > for some reason I'm able to get any output for 'live' command only
>> >> > when using --no-pager option. I dont get any data for:
>> >> >
>> >> > # ./perf ftrace live ls
>> >> >
>> >> > not even ls output
>> >
>> > ok, now with your patch I get allways ls output correctly in pager
>>
>> "ls output" only? What about the ftrace outputs?
>>
>> >
>> >> >
>> >> > But sometime I dont even get ftrace output for:
>> >> >
>> >> > # ./perf --no-pager ftrace live ls
>> >> >
>> >> > just ls output
>> >
>> > this one still persists
>>
>> Hmm.. still hard to reproduce.. :(
>>
>> As it's --no-pager mode, so that it can be reproduced for you without
>> this patch, right?
>
> right, I still see the second issue (not getting ftrace output)
> regardless of the patch being applied or not
Did you get the same result always? What's the value of tracing_cpumask?
Could you please apply this debug patch below and run it again?
Thank you very much for your help!
Namhyung
diff --git a/tools/perf/builtin-ftrace.c b/tools/perf/builtin-ftrace.c
index f1ecfa207822..6b7aeae2dfa5 100644
--- a/tools/perf/builtin-ftrace.c
+++ b/tools/perf/builtin-ftrace.c
@@ -40,9 +40,11 @@ struct perf_ftrace {
};
static bool done;
+static int _signal;
static void sig_handler(int sig __maybe_unused)
{
+ _signal = sig;
done = true;
}
@@ -218,6 +220,20 @@ static int do_ftrace_live(struct perf_ftrace *ftrace)
perf_evlist__start_workload(ftrace->evlist);
+ BUG_ON(ftrace->evlist->threads->map[0] != ftrace->evlist->workload.pid);
+
+ trace_file = get_tracing_file("tracing_on");
+ if (trace_file) {
+ int fd = open(trace_file, O_RDONLY);
+
+ BUG_ON(fd < 0);
+ BUG_ON(read(fd, buf, sizeof(buf)) < 0);
+ BUG_ON(buf[0] != '1');
+
+ close(fd);
+ put_tracing_file(trace_file);
+ }
+
while (!done) {
if (poll(&pollfd, 1, -1) < 0)
break;
@@ -231,6 +247,7 @@ static int do_ftrace_live(struct perf_ftrace *ftrace)
}
}
+ psignal(_signal, "perf");
write_tracing_file("tracing_on", "0");
/* read remaining buffer contents */
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/