Re: [GIT PULL 0/6] perf/core improvements and fixes

From: Wangnan (F)
Date: Thu Jun 04 2015 - 02:09:51 EST




On 2015/6/4 13:48, Ingo Molnar wrote:
* Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

Hi Ingo,

Please consider applying.

One of the next requests probably will have the eBPF work by Wang Nan,
but I am still going thru it and want to test it thoroughly.

BTW: Have you looked at it lately? It is at:

http://lkml.kernel.org/r/1433144296-74992-1-git-send-email-wangnan0@xxxxxxxxxx

Super summary from the above cover letter:

---------------------
It enables 'perf record' to filter events using eBPF programs like:

# perf record --event bpf-file.o sleep 1

Events are selected and filtered according to definitions in bpf-file.o.
Looks useful, but I think the UI needs one more tweak: could you fix it to be able
to filter based on the eBPF _source_ file, not just the object file?

People want to tweak such filters as they profile, so we should use the eBPF
source code as the primary interface. We can compile it internally to the .o just
fine. The .o file is a totally uninteresting intermediate product in itself.

I.e. we need to first think through such profiling workflows from beginning to end
before allowing them upstream.

In a private mail Alexei Starovoitov disscussed with me about this. He said that he is working
on a shared object which can compile C program into BPF bytecode on the fly. After he done his
work, I think perf can support dtrace-like profiling that, users will be able to feed source
code to perf directly on cmdline. He said he can release it on June. I added him to the CC-list.

However I think the '.o' intermediate is still needed. I'd like to share a real profiling
experience using eBPF today, please keep an eye on it. In my experience, since we are using C
instead of dtrace, the code piece could be relative complex. Therefore, even if perf is able
to compile the C source on the fly, I think user still need to transfer the profiling scripts
to the target machine. Therefor, for him, precompiling and do some debugging on a high-end server
then transfer it into target machine (like a smartphone) is tolerable, and useful for me.

Thank you.

---------------------

The first two patches from that series are in this pull req, as
they just move stuff into tools/include/linux/ from tools/perf/include.

Regards,

- Arnaldo

The following changes since commit 5c9b9bc67c684e40b3a5e7e9facde0fb7200cd8c:

Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core (2015-05-29 20:19:02 +0200)

are available in the git repository at:

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

for you to fetch changes up to 1f121b03d058dd07199d8924373d3c52a207f63b:

perf tools: Deal with kernel module names in '[]' correctly (2015-06-03 10:02:38 -0300)

----------------------------------------------------------------
perf/core improvements and fixes:

User visible:

- Fix 'perf probe' segfault when glob matching function without debuginfo (Wang Nan)

- Remove newline char when reading event scale and unit (Madhavan Srinivasan)

- Deal with kernel module names in '[]' correctly (Wang Nan)

Infrastructure:

- Fix the search for the kernel DSO on the unified list (Arnaldo Carvalho de Melo)

- Move tools/perf/util/include/linux/{kernel.h,list.h,poison.h} to tools/include,
to be used in tools/lib/bpf/ (Wang Nan)

Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>

----------------------------------------------------------------
Arnaldo Carvalho de Melo (1):
perf machine: Fix the search for the kernel DSO on the unified list

Madhavan Srinivasan (1):
perf tools: Remove newline char when reading event scale and unit

Wang Nan (4):
perf probe: Fix segfault when glob matching function without debuginfo
perf tools: Move linux/kernel.h to tools/include
tools: Move tools/perf/util/include/linux/{list.h,poison.h} to tools/include
perf tools: Deal with kernel module names in '[]' correctly

tools/{perf/util => }/include/linux/kernel.h | 4 +-
tools/{perf/util => }/include/linux/list.h | 6 +--
tools/include/linux/poison.h | 1 +
tools/perf/MANIFEST | 3 ++
tools/perf/tests/kmod-path.c | 72 ++++++++++++++++++++++++++++
tools/perf/util/dso.c | 47 ++++++++++++++++--
tools/perf/util/dso.h | 2 +-
tools/perf/util/header.c | 8 ++--
tools/perf/util/include/linux/poison.h | 1 -
tools/perf/util/machine.c | 22 ++++++++-
tools/perf/util/pmu.c | 11 ++++-
tools/perf/util/probe-event.c | 26 ++++++++--
12 files changed, 179 insertions(+), 24 deletions(-)
rename tools/{perf/util => }/include/linux/kernel.h (97%)
rename tools/{perf/util => }/include/linux/list.h (90%)
create mode 100644 tools/include/linux/poison.h
delete mode 100644 tools/perf/util/include/linux/poison.h
Pulled, thanks a lot Arnaldo!

Ingo


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/