Re: [PATCH 06/19] perf ftrace: Add support for --pid option

From: Namhyung Kim
Date: Thu Jul 18 2013 - 02:38:30 EST


Hi Jiri,

On Thu, 11 Jul 2013 16:56:54 +0900, Namhyung Kim wrote:
> On Wed, 10 Jul 2013 16:18:20 +0200, Jiri Olsa wrote:
>> On Wed, Jun 26, 2013 at 04:14:09PM +0900, Namhyung Kim wrote:
>>> From: Namhyung Kim <namhyung.kim@xxxxxxx>
>>>
>>> The -p (--pid) option enables to trace existing process by its pid.
>>
>> hi,
>> I can't get any output from -p for live subcommand:
>>
>> [jolsa@krava perf]$ pgrep yes
>> 6443
>> [jolsa@krava perf]$ sudo ./perf ftrace live -p `pgrep yes`
>
> Hmm... looks like it's stuck on polling the trace_pipe:
>
> $ sudo strace ./perf ftrace -p `pgrep yes'
> ...
> poll([{fd=3, events=POLLIN}], 1, 4294967295
>
>
> Need to investigate it more.

What's your kernel version? My kernel was 3.6.9. I guess there's a
problem with trace_pipe's poll implementation on pre-3.10 kernels which
was fixed by:

commit cc60cdc952be09bca5b0bff9fefc7aa6185c3049
Author: Steven Rostedt <srostedt@xxxxxxxxxx>
Date: Thu Feb 28 09:17:16 2013 -0500

tracing: Fix polling on trace_pipe_raw

The trace_pipe_raw never implemented polling and this was casing
issues for several utilities. This is now implemented.

Blocked reads still are on the TODO list.

Reported-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
Tested-by: Mauro Carvalho Chehab <mchehab@xxxxxxxxxx>
Signed-off-by: Steven Rostedt <rostedt@xxxxxxxxxxx>


It seems recent kernel doesn't have this issue. Could you confirm that?

Anyway, I decided not to use poll() here since all recorders only read
one file and it'll provide better compatibility. I will use
non-blocking read() + nanosleep() as trace-cmd does.

Thanks,
Namhyung
--
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/