Re: [PATCH 32/32] bpf: Introduce function for outputing data to perf event

From: Wangnan (F)
Date: Fri Aug 28 2015 - 22:16:34 EST




On 2015/8/29 9:34, Alexei Starovoitov wrote:
On 8/28/15 6:19 PM, Wangnan (F) wrote:
For me, I use bpf_output_trace_data() to output information like PMU count
value. Perf is the only receiver, so global collector is perfect. Could you
please describe your usecase in more detail?

there is a special receiver in user space that only wants the data from
the bpf program that it loaded. It shouldn't conflict with any other
processes. Like when it's running, I still should be able to use perf
for other performance analysis. There is no way to share single
bpf:bpf_output_data event, since these user processes are completely
independent.

I'd like to see whether it is possible to create dynamic tracepoints so
different receivers can listen on different tracepoints. For my side, maybe
I can encode format information into the new tracepoints so don't need
those LLVM patches.

For example:

# echo 'dynamic_tracepoint:mytracepoint <encode its format>' >> /sys/kernel/debug/tracing/dynamic_trace_events
# perf list
...
dynamic_tracepoint:mytracepoint
...

In perf side we can encode the creation of dynamic tracepoint into bpf-loader
like what we currectly do for probing the kprobes.

This way reqires us to create a fresh new event source, in parallel with tracepoint. I'm not sure
how much work it needs. What do you think?

Thank you.

--
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/