From: tip-bot for Wang Nan <tipbot@zytor.com>
To: linux-tip-commits@vger.kernel.org
Cc: adrian.hunter@intel.com, acme@redhat.com, milian.wolff@kdab.com,
dsahern@gmail.com, hpa@zytor.com, linux-kernel@vger.kernel.org,
jolsa@kernel.org, namhyung@kernel.org, tglx@linutronix.de,
mingo@kernel.org, wangnan0@huawei.com
Subject: [tip:perf/core] perf bpf: Add sample types for 'bpf-output' event
Date: Wed, 6 Apr 2016 00:10:14 -0700 [thread overview]
Message-ID: <tip-d37ba880598654fda10b312331377cdca3edd574@git.kernel.org> (raw)
In-Reply-To: <1459517202-42320-1-git-send-email-wangnan0@huawei.com>
Commit-ID: d37ba880598654fda10b312331377cdca3edd574
Gitweb: http://git.kernel.org/tip/d37ba880598654fda10b312331377cdca3edd574
Author: Wang Nan <wangnan0@huawei.com>
AuthorDate: Fri, 1 Apr 2016 13:26:42 +0000
Committer: Arnaldo Carvalho de Melo <acme@redhat.com>
CommitDate: Fri, 1 Apr 2016 18:46:25 -0300
perf bpf: Add sample types for 'bpf-output' event
Before this patch we can see very large time in the events before the
'bpf-output' event. For example:
# perf trace -vv -T --ev sched:sched_switch \
--ev bpf-output/no-inherit,name=evt/ \
--ev ./test_bpf_trace.c/map:channel.event=evt/ \
usleep 10
...
18446744073709.551 (18446564645918.480 ms): usleep/4157 nanosleep(rqtp: 0x7ffd3f0dc4e0) ...
18446744073709.551 ( ): evt:Raise a BPF event!..)
179427791.076 ( ): perf_bpf_probe:func_begin:(ffffffff810eb9a0))
179427791.081 ( ): sched:sched_switch:usleep:4157 [120] S ==> swapper/2:0 [120])
...
We can also see the differences between bpf-output events and
breakpoint events:
For bpf output event:
sample_type IP|TID|RAW|IDENTIFIER
For tracepoint events:
sample_type IP|TID|TIME|CPU|PERIOD|RAW|IDENTIFIER
This patch fix this differences by adding more sample type for
bpf-output events.
After this patch:
# perf trace -vv -T --ev sched:sched_switch \
--ev bpf-output/no-inherit,name=evt/ \
--ev ./test_bpf_trace.c/map:channel.event=evt/ \
usleep 10
...
179877370.878 ( 0.003 ms): usleep/5336 nanosleep(rqtp: 0x7ffff866c450) ...
179877370.878 ( ): evt:Raise a BPF event!..)
179877370.878 ( ): perf_bpf_probe:func_begin:(ffffffff810eb9a0))
179877370.882 ( ): sched:sched_switch:usleep:5336 [120] S ==> swapper/4:0 [120])
179877370.945 ( ): evt:Raise a BPF event!..)
...
# ./perf trace -vv -T --ev sched:sched_switch \
--ev bpf-output/no-inherit,name=evt/ \
--ev ./test_bpf_trace.c/map:channel.event=evt/ \
usleep 10 2>&1 | grep sample_type
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
sample_type IP|TID|TIME|ID|CPU|PERIOD|RAW
The 'IDENTIFIER' info is not required because all events have the same
sample_type.
Committer notes:
Further testing, on top of the changes making 'perf trace' avoid samples
from events without PERF_SAMPLE_TIME:
Before:
# trace --ev bpf-output/no-inherit,name=evt/ --ev /home/acme/bpf/test_bpf_trace.c/map:channel.event=evt/ usleep 10
<SNIP>
0.560 ( 0.001 ms): brk( ) = 0x55e5a1df8000
18446640227439.430 (18446640227438.859 ms): nanosleep(rqtp: 0x7ffc96643370) ...
18446640227439.430 ( ): evt:Raise a BPF event!..)
0.576 ( ): perf_bpf_probe:func_begin:(ffffffff81112460))
18446640227439.430 ( ): evt:Raise a BPF event!..)
0.645 ( ): perf_bpf_probe:func_end:(ffffffff81112460 <- ffffffff81003d92))
0.646 ( 0.076 ms): ... [continued]: nanosleep()) = 0
#
After:
# trace --ev bpf-output/no-inherit,name=evt/ --ev /home/acme/bpf/test_bpf_trace.c/map:channel.event=evt/ usleep 10
<SNIP>
0.292 ( 0.001 ms): brk( ) = 0x55c7cd6e1000
0.302 ( 0.004 ms): nanosleep(rqtp: 0x7ffedd8bc0f0) ...
0.302 ( ): evt:Raise a BPF event!..)
0.303 ( ): perf_bpf_probe:func_begin:(ffffffff81112460))
0.397 ( ): evt:Raise a BPF event!..)
0.397 ( ): perf_bpf_probe:func_end:(ffffffff81112460 <- ffffffff81003d92))
0.398 ( 0.100 ms): ... [continued]: nanosleep()) = 0
Signed-off-by: Wang Nan <wangnan0@huawei.com>
Reported-and-Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: David Ahern <dsahern@gmail.com>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Milian Wolff <milian.wolff@kdab.com>
Cc: Namhyung Kim <namhyung@kernel.org>
Cc: pi3orama@163.com
Link: http://lkml.kernel.org/r/1459517202-42320-1-git-send-email-wangnan0@huawei.com
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---
tools/perf/util/evsel.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/tools/perf/util/evsel.c b/tools/perf/util/evsel.c
index 738ce22..3fd7c2c 100644
--- a/tools/perf/util/evsel.c
+++ b/tools/perf/util/evsel.c
@@ -226,7 +226,8 @@ struct perf_evsel *perf_evsel__new_idx(struct perf_event_attr *attr, int idx)
perf_evsel__init(evsel, attr, idx);
if (perf_evsel__is_bpf_output(evsel)) {
- evsel->attr.sample_type |= PERF_SAMPLE_RAW;
+ evsel->attr.sample_type |= (PERF_SAMPLE_RAW | PERF_SAMPLE_TIME |
+ PERF_SAMPLE_CPU | PERF_SAMPLE_PERIOD),
evsel->attr.sample_period = 1;
}
prev parent reply other threads:[~2016-04-06 7:10 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-04-01 13:26 [PATCH] perf tools: Add sample types for bpf-output event Wang Nan
2016-04-01 15:16 ` Arnaldo Carvalho de Melo
2016-04-01 15:19 ` Arnaldo Carvalho de Melo
2016-04-06 7:10 ` tip-bot for Wang Nan [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=tip-d37ba880598654fda10b312331377cdca3edd574@git.kernel.org \
--to=tipbot@zytor.com \
--cc=acme@redhat.com \
--cc=adrian.hunter@intel.com \
--cc=dsahern@gmail.com \
--cc=hpa@zytor.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-tip-commits@vger.kernel.org \
--cc=milian.wolff@kdab.com \
--cc=mingo@kernel.org \
--cc=namhyung@kernel.org \
--cc=tglx@linutronix.de \
--cc=wangnan0@huawei.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.