perf trace + BPF
Hi Wang,
Trying to get back at working with 'perf trace' + BPF and I'm
noticing that the perf_event_attr->sample_type for the BPF events are different than the ones for the raw_syscalls:sys_{enter,exit} or to other tracepoint events we may ask 'perf trace' to set up, for instance, for:
perf trace -vv -T --ev sched:sched_switch --ev bpf-output/no-inherit,name=evt/ --ev /home/acme/bpf/test_bpf_trace.c/map:channel.event=evt/ usleep 10
We get these sample types (full perf_event_attr dump at the end of this message):
sched:sched_switch:sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
[root@jouet ~]# perf probe -l
perf_bpf_probe:func_begin (on SyS_nanosleep@linux/kernel/time/hrtimer.c) perf_bpf_probe:func_end (on SyS_nanosleep%return@linux/kernel/time/hrtimer.c)
sample_type IP|TID|RAW|IDENTIFIER
raw_syscalls:sys_{enter,exit}:
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
I guess this is an interaction with that "no-inherit" part, probably we need to set PERF_SAMPLE_TIME by some other means...
- Arnaldo
------------------------------------------------------------perf_event_attr:
type 2
size 112
config 0x110
{ sample_period, sample_freq } 1
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
read_format ID
disabled 1
inherit 1
mmap 1
comm 1
enable_on_exec 1
task 1
sample_id_all 1
exclude_guest 1
mmap2 1
comm_exec 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8
------------------------------------------------------------perf_event_attr:
type 1
size 112
config 0xa
{ sample_period, sample_freq } 1
sample_type IP|TID|RAW|IDENTIFIER
read_format ID
disabled 1
enable_on_exec 1
sample_id_all 1
exclude_guest 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8
------------------------------------------------------------perf_event_attr:
type 2
size 112
config 0x7c5
{ sample_period, sample_freq } 1
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
read_format ID
disabled 1
inherit 1
enable_on_exec 1
sample_id_all 1
exclude_guest 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8
------------------------------------------------------------perf_event_attr:
type 2
size 112
config 0x7c4
{ sample_period, sample_freq } 1
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
read_format ID
disabled 1
inherit 1
enable_on_exec 1
sample_id_all 1
exclude_guest 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8
------------------------------------------------------------perf_event_attr:
type 2
size 112
config 0x11
{ sample_period, sample_freq } 1
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
read_format ID
disabled 1
inherit 1
enable_on_exec 1
sample_id_all 1
exclude_guest 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8
------------------------------------------------------------perf_event_attr:
type 2
size 112
config 0x10
{ sample_period, sample_freq } 1
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
read_format ID
disabled 1
inherit 1
enable_on_exec 1
sample_id_all 1
exclude_guest 1 { wakeup_events, wakeup_watermark } 1
------------------------------------------------------------sys_perf_event_open: pid 32425 cpu 0 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 1 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 2 group_fd -1 flags 0x8sys_perf_event_open: pid 32425 cpu 3 group_fd -1 flags 0x8 mmap size 528384B
Quoted 20 lines · Arnaldo Carvalho de Melo
Hi Wang,
Trying to get back at working with 'perf trace' + BPF and I'm
noticing that theperf_event_attr->sample_typefor the BPF events are different than the ones for the raw_syscalls:sys_{enter,exit} or to other tracepoint events we may ask 'perf trace' to set up, for instance, for:perf trace -vv -T --ev sched:sched_switch --ev bpf-output/no-inherit,name=evt/ --ev /home/acme/bpf/test_bpf_trace.c/map:channel.event=evt/ usleep 10
We get these sample types (full
perf_event_attrdump at the end of this message):sched:sched_switch:
sample_typeIP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER[root@jouet ~]# perf probe -l
perf_bpf_probe:func_begin (onSyS_nanosleep@linux/kernel/time/hrtimer.c) perf_bpf_probe:func_end (on SyS_nanosleep%return@linux/kernel/time/hrtimer.c)
Quoted 8 lines
sample_typeIP|TID|RAW|IDENTIFIERraw_syscalls:sys_{enter,exit}:
sample_typeIP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIERI guess this is an interaction with that "no-inherit" part, probably we need to set
PERF_SAMPLE_TIMEby some other means...
Please see [1]. Not related to no-inherit, just because the bpf-output event is not a tracepoint.
And glad to see you restart working on my patches again!
Thank you.
[1] http://lkml.kernel.org/g/[email protected]
Quoted 2 lines
- Arnaldo
Em Fri, Apr 01, 2016 at 09:29:52PM +0800, Wangnan (F) escreveu:
Quoted 27 lines · Arnaldo Carvalho de Melo
Quoted 24 lines
Hi Wang,
Trying to get back at working with 'perf trace' + BPF and I'm
noticing that theperf_event_attr->sample_typefor the BPF events are different than the ones for the raw_syscalls:sys_{enter,exit} or to other tracepoint events we may ask 'perf trace' to set up, for instance, for:perf trace -vv -T --ev sched:sched_switch --ev bpf-output/no-inherit,name=evt/ --ev /home/acme/bpf/test_bpf_trace.c/map:channel.event=evt/ usleep 10
We get these sample types (full
perf_event_attrdump at the end of this message):sched:sched_switch:
sample_typeIP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER[root@jouet ~]# perf probe -l
perf_bpf_probe:func_begin (onSyS_nanosleep@linux/kernel/time/hrtimer.c) perf_bpf_probe:func_end (on SyS_nanosleep%return@linux/kernel/time/hrtimer.c)
sample_typeIP|TID|RAW|IDENTIFIERraw_syscalls:sys_{enter,exit}:
Quoted 7 lines
Quoted 4 lines
sample_typeIP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIERI guess this is an interaction with that "no-inherit" part, probably we need to set
PERF_SAMPLE_TIMEby some other means...Please see [1]. Not related to no-inherit, just because the bpf-output event is not a tracepoint.
Right, that was a dead end of mine when investigating this, thanks for fixing this up!
Quoted 1 line
And glad to see you restart working on my patches again!
Yeah, hopefully this time we'll get most of what is outstanding merged.
I want to at some time experiment with doing things 'perf trace' needs with BPF, behind the scenes :-)
Quoted 9 lines
Thank you.
[1] http://lkml.kernel.org/g/[email protected]
Quoted 2 lines
- Arnaldo