All of lore.kernel.org
 help / color / mirror / Atom feed
From: Arnaldo Carvalho de Melo <acme@kernel.org>
To: Ingo Molnar <mingo@kernel.org>
Cc: linux-kernel@vger.kernel.org,
	Arnaldo Carvalho de Melo <acme@kernel.org>,
	Alexei Starovoitov <ast@plumgrid.com>,
	Brendan Gregg <brendan.d.gregg@gmail.com>,
	Daniel Borkmann <daniel@iogearbox.net>,
	David Ahern <dsahern@gmail.com>, He Kuang <hekuang@huawei.com>,
	Jiri Olsa <jolsa@kernel.org>, Kaixu Xia <xiakaixu@huawei.com>,
	Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>,
	Namhyung Kim <namhyung@kernel.org>,
	Paul Mackerras <paulus@samba.org>,
	Peter Zijlstra <a.p.zijlstra@chello.nl>,
	pi3orama@163.com, Wang Nan <wangnan0@huawei.com>,
	Zefan Li <lizefan@huawei.com>,
	Arnaldo Carvalho de Melo <acme@redhat.com>
Subject: [GIT PULL 0/6] perf/ebpf basic integration
Date: Thu, 29 Oct 2015 08:16:56 -0300	[thread overview]
Message-ID: <1446117422-3569-1-git-send-email-acme@kernel.org> (raw)

Hi Ingo,

	Please take a look at the changeset comments, I made notes in most of
them, this seems like a nice cutoff point to allow basic testing, by
developers, for the very basic integration of perf and ebpf, i.e. we can,
having a ready built object file, built with clang, be able to use it as a perf
event, passing it via -e/--event, etc.

	Wang has lots more in the queue and I intend to work on them till I get
all reviewed/tested/merged, i.e. in the immediate future.

	What do you think? Fair to get his smaller gulp now? Or do you want to
get it all the way with the code to get a .c file, build it, etc, that is
ready, but I haven't reviewed/tested yet?

	Ah, this is on top of what I sent to you via perf/core yesterday.

Thanks,

- Arnaldo

The following changes since commit 443f8c75e8d58d394b0e65b47e02e5cd8ed32b41:

  perf symbols: Fix endless loop in dso__split_kallsyms_for_kcore (2015-10-28 11:19:30 -0300)

are available in the git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux.git tags/perf-ebpf-for-mingo

for you to fetch changes up to 4edf30e39e6cff32390eaff6a1508969b3cd967b:

  perf bpf: Collect perf_evsel in BPF object files (2015-10-28 13:11:59 -0300)

----------------------------------------------------------------
perf/ebpf basic integration

Please see the changeset comments, but this is the very basic integration of
perf with libbpf that, given a .o file built for the 'bpf' target with clang,
will get it validated and loaded into the kernel via the sys_bpf syscall, which
can be seen using 'perf trace' to trace the whole thing looking just for the
bpf and perf_event_open syscalls:

  # perf trace -e bpf,perf_event_open perf record -g --event /tmp/foo.o -a
   362.779 ( 0.129 ms): perf/22408 bpf(cmd: 5, uattr: 0x7ffd4edb6db0, size: 48                           ) = 3
   384.192 ( 0.016 ms): perf/22408 perf_event_open(attr_uptr: 0x7ffd4edbace0, pid: -1, cpu: 3, group_fd: -1, flags: FD_CLOEXEC) = 5
   384.247 ( 0.038 ms): perf/22408 perf_event_open(attr_uptr: 0x37aedd8, pid: -1, group_fd: -1, flags: FD_CLOEXEC) = 5
   384.261 ( 0.007 ms): perf/22408 perf_event_open(attr_uptr: 0x37aedd8, pid: -1, group_fd: -1, flags: FD_CLOEXEC) = 5
   387.680 ( 3.413 ms): perf/22408 perf_event_open(attr_uptr: 0x3222f08, pid: -1, group_fd: -1, flags: FD_CLOEXEC) = 5
   387.688 ( 0.005 ms): perf/22408 perf_event_open(attr_uptr: 0x3222f08, pid: -1, cpu: 1, group_fd: -1, flags: FD_CLOEXEC) = 6
   387.693 ( 0.004 ms): perf/22408 perf_event_open(attr_uptr: 0x3222f08, pid: -1, cpu: 2, group_fd: -1, flags: FD_CLOEXEC) = 7
   387.698 ( 0.003 ms): perf/22408 perf_event_open(attr_uptr: 0x3222f08, pid: -1, cpu: 3, group_fd: -1, flags: FD_CLOEXEC) = 8
  ^C[ perf record: Woken up 1 times to write data ]
    [ perf record: Captured and wrote 0.221 MB perf.data (2 samples) ]
  # perf script
  bash 18389 [002] 83446.412607: perf_bpf_probe:fork: (ffffffff8109be30)
                  29be31 _do_fork (/lib/modules/4.3.0-rc6+/build/vmlinux)
                  96d662 tracesys_phase2 (/lib/modules/4.3.0-rc6+/build/vmlinux)
                   bd56c __libc_fork (/usr/lib64/libc-2.17.so)
                   413b2 make_child (/usr/bin/bash)

  bash 18389 [002] 83447.227255: perf_bpf_probe:fork: (ffffffff8109be30)
                  29be31 _do_fork (/lib/modules/4.3.0-rc6+/build/vmlinux)
                  96d662 tracesys_phase2 (/lib/modules/4.3.0-rc6+/build/vmlinux)
                   bd56c __libc_fork (/usr/lib64/libc-2.17.so)
                   413b2 make_child (/usr/bin/bash)

  # perf evlist -v
  perf_bpf_probe:fork: type: 2, size: 112, config: 0x6cf, { sample_period, sample_freq }: 1, sample_type: IP|TID|TIME|CALLCHAIN|CPU|PERIOD|RAW, disabled: 1, inherit: 1, mmap: 1, comm: 1, task: 1, sample_id_all: 1, exclude_guest: 1, mmap2: 1, comm_exec: 1
  #

More work is about to be reviewed, tested and merged that will allow the whole
process of going from a .c file to an .o file via clang, etc to be done
automagically. (Wang Nan)

Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>

----------------------------------------------------------------
Wang Nan (6):
      perf tools: Make perf depend on libbpf
      perf ebpf: Add the libbpf glue
      perf tools: Enable passing bpf object file to --event
      perf tools: Create probe points for BPF programs
      perf tools: Load eBPF object into kernel
      perf bpf: Collect perf_evsel in BPF object files

 tools/build/Makefile.feature   |   6 +-
 tools/perf/MANIFEST            |   3 +
 tools/perf/Makefile.perf       |  21 ++-
 tools/perf/config/Makefile     |  19 ++-
 tools/perf/perf.c              |   2 +
 tools/perf/tests/make          |   4 +-
 tools/perf/util/Build          |   1 +
 tools/perf/util/bpf-loader.c   | 339 +++++++++++++++++++++++++++++++++++++++++
 tools/perf/util/bpf-loader.h   |  84 ++++++++++
 tools/perf/util/parse-events.c | 118 ++++++++++++++
 tools/perf/util/parse-events.h |   8 +
 tools/perf/util/parse-events.l |   3 +
 tools/perf/util/parse-events.y |  18 ++-
 13 files changed, 619 insertions(+), 7 deletions(-)
 create mode 100644 tools/perf/util/bpf-loader.c
 create mode 100644 tools/perf/util/bpf-loader.h

             reply	other threads:[~2015-10-29 11:17 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-10-29 11:16 Arnaldo Carvalho de Melo [this message]
2015-10-29 11:16 ` [PATCH 1/6] perf tools: Make perf depend on libbpf Arnaldo Carvalho de Melo
2015-10-29 11:16 ` [PATCH 2/6] perf ebpf: Add the libbpf glue Arnaldo Carvalho de Melo
2015-10-29 11:16 ` [PATCH 3/6] perf tools: Enable passing bpf object file to --event Arnaldo Carvalho de Melo
2015-10-29 11:17 ` [PATCH 4/6] perf tools: Create probe points for BPF programs Arnaldo Carvalho de Melo
2015-10-29 11:17 ` [PATCH 5/6] perf tools: Load eBPF object into kernel Arnaldo Carvalho de Melo
2015-10-29 11:17 ` [PATCH 6/6] perf bpf: Collect perf_evsel in BPF object files Arnaldo Carvalho de Melo
2015-10-29 12:17 ` [GIT PULL 0/6] perf/ebpf basic integration Ingo Molnar
2015-10-29 13:10   ` Arnaldo Carvalho de Melo

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=1446117422-3569-1-git-send-email-acme@kernel.org \
    --to=acme@kernel.org \
    --cc=a.p.zijlstra@chello.nl \
    --cc=acme@redhat.com \
    --cc=ast@plumgrid.com \
    --cc=brendan.d.gregg@gmail.com \
    --cc=daniel@iogearbox.net \
    --cc=dsahern@gmail.com \
    --cc=hekuang@huawei.com \
    --cc=jolsa@kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=lizefan@huawei.com \
    --cc=masami.hiramatsu.pt@hitachi.com \
    --cc=mingo@kernel.org \
    --cc=namhyung@kernel.org \
    --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 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.