From: Namhyung Kim <namhyung@kernel.org>
To: Alexei Starovoitov <alexei.starovoitov@gmail.com>
Cc: "Wangnan (F)" <wangnan0@huawei.com>,
paulus@samba.org, a.p.zijlstra@chello.nl, mingo@redhat.com,
acme@kernel.org, jolsa@kernel.org, dsahern@gmail.com,
daniel@iogearbox.net, brendan.d.gregg@gmail.com,
masami.hiramatsu.pt@hitachi.com, lizefan@huawei.com,
linux-kernel@vger.kernel.org, pi3orama@163.com,
xiakaixu 00238161 <xiakaixu@huawei.com>
Subject: Re: [RFC PATCH v4 10/29] bpf tools: Collect map definitions from 'maps' section
Date: Mon, 1 Jun 2015 11:12:51 +0900 [thread overview]
Message-ID: <20150601021251.GA14501@danjae> (raw)
In-Reply-To: <20150529033518.GA21616@Alexeis-MacBook-Pro.local>
Hi Alexei and Wang,
On Thu, May 28, 2015 at 08:35:19PM -0700, Alexei Starovoitov wrote:
> On Thu, May 28, 2015 at 03:14:44PM +0800, Wangnan (F) wrote:
> > On 2015/5/28 14:09, Alexei Starovoitov wrote:
> > >On Thu, May 28, 2015 at 11:09:50AM +0800, Wangnan (F) wrote:
> > For me, enable eBPF program to read PMU counter is the first thing need to
> > be done.
> > The other thing is enabling eBPF programs to bring some information to perf
> > sample.
> >
> > Here is an example to show my idea.
> >
> > I have a program which:
> >
> > int main()
> > {
> > while(1) {
> > read(...);
> > /* do A */
> > write(...);
> > /* do B */
> > }
> > }
> >
> > Then by using following script:
> >
> > SEC("enter=sys_write $outdata:u64")
> > int enter_sys_write(...) {
> > u64 cycles_cnt = bpf_read_pmu(&cycles_pmu);
> > bpf_store_value(cycles_cnt);
> > return 1;
> > }
> >
> > SEC("enter=sys_read $outdata:u64")
> > int enter_sys_read(...) {
> > u64 cycles_cnt = bpf_read_pmu(&cycles_pmu);
> > bpf_store_value(cycles_cnt);
> > return 1;
> > }
> >
> > by 'perf script', we can check the counter of cycles at each points, then we
> > are allowed
> > to compute the number of cycles between any two sampling points. This way we
> > can compute
> > how many cycles taken by A and B. If instruction counter is also recorded,
> > we will know
> > the IPC of A and B.
>
> Agree. That's useful. That's exactly what I meant by
> "compute a number of cache misses between two kprobe events".
> The overhead is less when bpf program computes the cycle and instruction
> delta, computes IPC and passes only final IPC numbers to the user space.
> It can even average IPC over time.
> For some very frequent events it can read cycle_cnt on sys_entry_read,
> then read it on sys_exit_read, compute delta and average it into the map.
> User space can read the map every second or every 10 seconds and print
> nice graph.
Looks very interesting and useful indeed!
> As far as 'bpf_store_value' goes... I was thinking to expose perf ring_buffer
> to bpf programs, so that program can stream any data to perf that receives
> it via mmap. Then you don't need this '$outdata' hack.
Then we need to define and pass the format of such data so that perf
tools can read and process the data. IIRC Masami suggested to have an
additional user event type for inserting/injecting non-perf events -
like PERF_RECORD_USER_DEFINED_TYPE? And its contents is something
similar to tracepoint event format file so that we can reuse existing
code to parse the event definition.
Thanks,
Namhyung
next prev parent reply other threads:[~2015-06-01 2:14 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-05-27 5:19 [RFC PATCH v4 00/29] perf tools: filtering events using eBPF programs Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 01/29] tools: Add __aligned_u64 to types.h Wang Nan
2015-05-27 13:00 ` Arnaldo Carvalho de Melo
2015-05-28 0:28 ` Wangnan (F)
2015-05-28 0:31 ` Arnaldo Carvalho de Melo
2015-05-27 5:19 ` [RFC PATCH v4 02/29] perf tools: Move linux/kernel.h to tools/include Wang Nan
2015-05-27 13:03 ` Arnaldo Carvalho de Melo
2015-05-27 5:19 ` [RFC PATCH v4 03/29] perf tools: Move linux/{list.h,poison.h} " Wang Nan
2015-05-27 13:15 ` Arnaldo Carvalho de Melo
2015-05-27 13:21 ` Arnaldo Carvalho de Melo
2015-05-27 15:30 ` Arnaldo Carvalho de Melo
2015-05-27 5:19 ` [RFC PATCH v4 04/29] bpf tools: Introduce 'bpf' library to tools Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 05/29] bpf tools: Allow caller to set printing function Wang Nan
2015-05-29 13:35 ` Namhyung Kim
2015-05-27 5:19 ` [RFC PATCH v4 06/29] bpf tools: Open eBPF object file and do basic validation Wang Nan
2015-05-28 1:44 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 07/29] bpf tools: Check endianess and make libbpf fail early Wang Nan
2015-05-28 1:45 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 08/29] bpf tools: Iterate over ELF sections to collect information Wang Nan
2015-05-28 1:46 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 09/29] bpf tools: Collect version and license from ELF sections Wang Nan
2015-05-28 1:48 ` Alexei Starovoitov
2015-05-28 3:34 ` Wangnan (F)
2015-05-28 5:51 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 10/29] bpf tools: Collect map definitions from 'maps' section Wang Nan
2015-05-28 1:53 ` Alexei Starovoitov
2015-05-28 2:03 ` Wangnan (F)
2015-05-28 2:28 ` Alexei Starovoitov
2015-05-28 3:09 ` Wangnan (F)
2015-05-28 6:09 ` Alexei Starovoitov
2015-05-28 7:14 ` Wangnan (F)
2015-05-29 3:35 ` Alexei Starovoitov
2015-05-29 3:59 ` Wangnan (F)
2015-06-01 2:12 ` Namhyung Kim [this message]
2015-06-01 5:19 ` Wangnan (F)
2015-06-01 6:03 ` Namhyung Kim
2015-06-01 13:01 ` Arnaldo Carvalho de Melo
2015-05-27 5:19 ` [RFC PATCH v4 11/29] bpf tools: Collect symbol table from SHT_SYMTAB section Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 12/29] bpf tools: Collect eBPF programs from their own sections Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 13/29] bpf tools: Collect relocation sections from SHT_REL sections Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 14/29] bpf tools: Record map accessing instructions for each program Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 15/29] bpf tools: Add bpf.c/h for common bpf operations Wang Nan
2015-05-28 1:55 ` Alexei Starovoitov
2015-05-29 14:44 ` Namhyung Kim
2015-05-27 5:19 ` [RFC PATCH v4 16/29] bpf tools: Create eBPF maps defined in an object file Wang Nan
2015-05-28 1:57 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 17/29] bpf tools: Relocate eBPF programs Wang Nan
2015-06-01 5:32 ` Namhyung Kim
2015-06-01 6:36 ` Wangnan (F)
2015-05-27 5:19 ` [RFC PATCH v4 18/29] bpf tools: Introduce bpf_load_program() to bpf.c Wang Nan
2015-05-28 2:14 ` Alexei Starovoitov
2015-05-27 5:19 ` [RFC PATCH v4 19/29] bpf tools: Load eBPF programs in object files into kernel Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 20/29] bpf tools: Introduce accessors for struct bpf_program Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 21/29] bpf tools: Introduce accessors for struct bpf_object Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 22/29] bpf tools: Link all bpf objects onto a list Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 23/29] perf tools: Make perf depend on libbpf Wang Nan
2015-05-27 5:19 ` [RFC PATCH v4 24/29] perf record: Enable passing bpf object file to --event Wang Nan
2015-05-27 5:20 ` [RFC PATCH v4 25/29] perf tools: Parse probe points of eBPF programs during preparation Wang Nan
2015-05-27 5:20 ` [RFC PATCH v4 26/29] perf record: Probe at kprobe points Wang Nan
2015-05-27 5:20 ` [RFC PATCH v4 27/29] perf record: Load all eBPF object into kernel Wang Nan
2015-05-27 5:20 ` [RFC PATCH v4 28/29] perf tools: Add bpf_fd field to evsel and config it Wang Nan
2015-05-27 5:20 ` [RFC PATCH v4 29/29] perf tools: Attach eBPF program to perf event Wang Nan
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=20150601021251.GA14501@danjae \
--to=namhyung@kernel.org \
--cc=a.p.zijlstra@chello.nl \
--cc=acme@kernel.org \
--cc=alexei.starovoitov@gmail.com \
--cc=brendan.d.gregg@gmail.com \
--cc=daniel@iogearbox.net \
--cc=dsahern@gmail.com \
--cc=jolsa@kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=lizefan@huawei.com \
--cc=masami.hiramatsu.pt@hitachi.com \
--cc=mingo@redhat.com \
--cc=paulus@samba.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).