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.