From: He Kuang <hekuang@huawei.com>
To: Alexei Starovoitov <ast@plumgrid.com>,
"Wangnan (F)" <wangnan0@huawei.com>,
Kaixu Xia <xiakaixu@huawei.com>, <davem@davemloft.net>,
<acme@kernel.org>, <mingo@redhat.com>, <a.p.zijlstra@chello.nl>,
<masami.hiramatsu.pt@hitachi.com>, <jolsa@kernel.org>,
<daniel@iogearbox.net>
Cc: <linux-kernel@vger.kernel.org>, <pi3orama@163.com>,
<netdev@vger.kernel.org>
Subject: Re: [RFC PATCH 2/2] bpf: Implement bpf_perf_event_sample_enable/disable() helpers
Date: Tue, 13 Oct 2015 18:54:19 +0800 [thread overview]
Message-ID: <561CE2DB.2030409@huawei.com> (raw)
In-Reply-To: <561C9361.6090104@plumgrid.com>
hi, Alexei
>> What about using similar
>> implementation
>> like PERF_EVENT_IOC_SET_OUTPUT, creating a new ioctl like
>> PERF_EVENT_IOC_SET_ENABLER,
>> then let perf to select an event as 'enabler', then BPF can still
>> control one atomic
>> variable to enable/disable a set of events.
>
> you lost me on that last sentence. How this 'enabler' will work?
> Also I'm still missing what's wrong with perf doing ioctl() on
> events on all cpus manually when bpf program tells it to do so.
> Is it speed you concerned about or extra work in perf ?
>
>
For not having too much wakeups, perf ringbuffer has a watermark
limit to cache events and reduce the wakeups, which causes perf
userspace tool can not receive perf events immediately.
Here's a simple demo expamle to prove it, 'sleep_exec' does some
writes and prints a timestamp every second, and an lable is
printed when perf poll gets events.
$ perf record -m 2 -e syscalls:sys_enter_write sleep_exec 1000
userspace sleep time: 0 seconds
userspace sleep time: 1 seconds
userspace sleep time: 2 seconds
userspace sleep time: 3 seconds
perf record wakeup onetime 0
userspace sleep time: 4 seconds
userspace sleep time: 5 seconds
userspace sleep time: 6 seconds
userspace sleep time: 7 seconds
perf record wakeup onetime 1
userspace sleep time: 8 seconds
perf record wakeup onetime 2
..
$ perf record -m 1 -e syscalls:sys_enter_write sleep_exec 1000
userspace sleep time: 0 seconds
userspace sleep time: 1 seconds
perf record wakeup onetime 0
userspace sleep time: 2 seconds
userspace sleep time: 3 seconds
perf record wakeup onetime 1
userspace sleep time: 4 seconds
userspace sleep time: 5 seconds
..
By default, if no mmap_pages is specified, perf tools wakeup only
when the target executalbe finished:
$ perf record -e syscalls:sys_enter_write sleep_exec 5
userspace sleep time: 0 seconds
userspace sleep time: 1 seconds
userspace sleep time: 2 seconds
userspace sleep time: 3 seconds
userspace sleep time: 4 seconds
perf record wakeup onetime 0
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0.006 MB perf.data (54 samples) ]
If we want perf to reflect as soon as our sample event be generated,
--no-buffering should be used, but this option has a greater
impact on performance.
$ perf record --no-buffering -e syscalls:sys_enter_write sleep_exec 1000
userspace sleep time: 0 seconds
perf record wakeup onetime 0
perf record wakeup onetime 1
perf record wakeup onetime 2
perf record wakeup onetime 3
perf record wakeup onetime 4
perf record wakeup onetime 5
perf record wakeup onetime 6
..
Thank you
next prev parent reply other threads:[~2015-10-13 10:56 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-10-12 9:02 [RFC PATCH 0/2] bpf: enable/disable events stored in PERF_EVENT_ARRAY maps trace data output when perf sampling Kaixu Xia
2015-10-12 9:02 ` [RFC PATCH 1/2] perf: Add the flag sample_disable not to output data on samples Kaixu Xia
2015-10-12 12:02 ` Peter Zijlstra
2015-10-12 12:05 ` Wangnan (F)
2015-10-12 12:12 ` Peter Zijlstra
2015-10-12 14:14 ` kbuild test robot
2015-10-12 19:20 ` Alexei Starovoitov
2015-10-13 2:30 ` xiakaixu
2015-10-13 3:10 ` Alexei Starovoitov
2015-10-13 12:00 ` Sergei Shtylyov
2015-10-12 9:02 ` [RFC PATCH 2/2] bpf: Implement bpf_perf_event_sample_enable/disable() helpers Kaixu Xia
2015-10-12 19:29 ` Alexei Starovoitov
2015-10-13 3:27 ` Wangnan (F)
2015-10-13 3:39 ` Alexei Starovoitov
2015-10-13 3:51 ` Wangnan (F)
2015-10-13 4:16 ` Alexei Starovoitov
2015-10-13 4:34 ` Wangnan (F)
2015-10-13 5:15 ` Alexei Starovoitov
2015-10-13 6:57 ` Wangnan (F)
2015-10-13 10:54 ` He Kuang [this message]
2015-10-13 11:07 ` Wangnan (F)
2015-10-14 5:14 ` Alexei Starovoitov
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=561CE2DB.2030409@huawei.com \
--to=hekuang@huawei.com \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=ast@plumgrid.com \
--cc=daniel@iogearbox.net \
--cc=davem@davemloft.net \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=netdev@vger.kernel.org \
--cc=pi3orama@163.com \
--cc=wangnan0@huawei.com \
--cc=xiakaixu@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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).