Re: [PATCH 10/48] perf tools: Introduce bpf-output event

From: Wangnan (F)
Date: Wed Feb 24 2016 - 00:06:16 EST




On 2016/2/24 12:03, Wangnan (F) wrote:


On 2016/2/24 10:04, Wangnan (F) wrote:


On 2016/2/24 9:58, Wangnan (F) wrote:


[SNIP]

So, there is something strange here:

if (unlikely(event->oncpu != smp_processor_id()))
return -EOPNOTSUPP;



All failures have 'event->oncpu == -1' here. I guess we should suppress warning in
this case. But why event->oncpu becomes -1?


For this specific test it is not surprising to see these error messages. In this test
we create bpf-output channel on 'ls' process only, but the BPF script is triggered
on all procs (BPF triggering is not related to perf event scheduling). Trying to
output data through 'ls' specific bpf-output channel should fail if this 'sys_write'
is not issued by 'ls' or its children. So it is a correct behavior.

However, I also see them in system wide channel:

# echo "" > /sys/kernel/debug/tracing/trace
# ./perf record -a -e bpf-output/no-inherit,name=evt/ \
-e ./test_bpf_output.c/map:channel.event=evt/
-a
^C[ perf record: Woken up 0 times to write data ]
[ perf record: Captured and wrote 17.534 MB perf.data (264326 samples) ]
# cat /sys/kernel/debug/tracing/trace | tail
rs:main Q:Reg-582 [000] d..2 4858.711225: : Error: failed to output: -95
rs:main Q:Reg-582 [000] d..2 4858.711241: : Error: failed to output: -95
gmain-1858 [003] d..2 4858.711436: : Error: failed to output: -95
gmain-1858 [003] d..2 4858.711441: : Error: failed to output: -95
gmain-1858 [003] d..2 4858.711473: : Error: failed to output: -95
rs:main Q:Reg-582 [002] d..2 4858.712215: : Error: failed to output: -95
rs:main Q:Reg-582 [002] d..2 4858.712224: : Error: failed to output: -95
gmain-1858 [003] d..2 4858.712230: : Error: failed to output: -95
rs:main Q:Reg-582 [002] d..2 4858.712235: : Error: failed to output: -95
rs:main Q:Reg-582 [002] d..2 4858.712239: : Error: failed to output: -95

System wide events can also be scheduled in and out. If the bpf-output events
are scheduled out, trying to output data through it causes the above failure.
I don't think it is a problem.

Peter, Could you please give some infomation? In which case a system wide
bpf output channel would be scheduled out?


Sorry, I think my brain is not quite well. Actually this is a easy question:
all ENOTSUPP results are generated before PERF_EVENT_IOC_ENABLE or after
PERF_EVENT_IOC_DISABLE. You saw so many failure messages because it is sys_write,
and perf itself needs it.

So you can simply ignore these messages.

Thank you.