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

From: Arnaldo Carvalho de Melo
Date: Fri Apr 14 2017 - 12:07:55 EST


Em Thu, Apr 13, 2017 at 04:35:29PM -0300, Arnaldo Carvalho de Melo escreveu:
> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> Test results at the end of this message, as usual.

Ooops, here is the missing output from 'git-request-pull':

The following changes since commit a8d11cd0714f51877587f5ec891013ca46e163ac:

kprobes/x86: Consolidate insn decoder users for copying code (2017-04-12 09:23:47 +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-4.12-20170413

for you to fetch changes up to 16eb81365b70266c17d1141ef9b32c3110b22d17:

Revert "perf tools: Fix include of linux/mman.h" (2017-04-13 11:54:46 -0300)

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

User visible:

- Fix bug 'perf stat' in handling events in error state (Stephane Eranian)

Documentation:

- Add usage of --no-syscalls in 'perf trace' man page (Ravi Bangoria)

Infrastructure:

- Pass PYTHON config to feature detection (David Carrillo-Cisneros)

- Disable JVMTI if no ELF support available (David Carrillo-Cisneros)

- Fix feature detection redefinion of build flags (David Carrillo-Cisneros)

- Hint missing file when tool tips fail to load (David Carrillo-Cisneros)

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

----------------------------------------------------------------
David Carrillo-Cisneros (5):
perf tools: Pass PYTHON config to feature detection
perf tools: Disable JVMTI if no ELF support available
tools build: Fix feature detection redefinion of build flags
perf util: Hint missing file when tool tips fail to load
Revert "perf tools: Fix include of linux/mman.h"

Ravi Bangoria (1):
perf trace: Add usage of --no-syscalls in man page

Stephane Eranian (1):
perf stat: Fix bug in handling events in error state

tools/build/feature/Makefile | 12 +++++------
tools/perf/Documentation/perf-trace.txt | 3 ++-
tools/perf/Makefile.config | 35 ++++++++++++++-------------------
tools/perf/builtin-stat.c | 12 ++++++++---
tools/perf/util/event.c | 2 +-
tools/perf/util/evsel.c | 4 ++--
tools/perf/util/util.c | 3 ++-
7 files changed, 37 insertions(+), 34 deletions(-)

> Test results:
>
> The first ones are container (docker) based builds of tools/perf with and
> without libelf support, objtool where it is supported and samples/bpf/, ditto.
> Where clang is available, it is also used to build perf with/without libelf.
>
> For this specific pull request the samples/bpf/ was disabled, as 'make headers_install'
> is failing with the following error, in this case in fedora:rawhide:
>
> INSTALL usr/include/uapi/ (0 file)
> /git/linux/scripts/Makefile.headersinst:62: *** Missing generated UAPI file ./arch/x86/include/generated/uapi/asm/unistd_32.h. Stop.
> make[1]: *** [/git/linux/Makefile:1151: headers_install] Error 2
> make[1]: Leaving directory '/tmp/build/linux'
> make: *** [Makefile:152: sub-make] Error 2
> make: Leaving directory '/git/linux'
>
> I'll investigate later, perf and objtool builds just fine, with clang and gcc.
>
> Several are cross builds, the ones with -x-ARCH, and the android one, and those
> may not have all the features built, due to lack of multi-arch devel packages,
> available and being used so far on just a few, like
> debian:experimental-x-{arm64,mipsel}.
>
> The 'perf test' one will perform a variety of tests exercising
> tools/perf/util/, tools/lib/{bpf,traceevent,etc}, as well as run perf commands
> with a variety of command line event specifications to then intercept the
> sys_perf_event syscall to check that the perf_event_attr fields are set up as
> expected, among a variety of other unit tests.
>
> Then there is the 'make -C tools/perf build-test' ones, that build tools/perf/
> with a variety of feature sets, exercising the build with an incomplete set of
> features as well as with a complete one. It is planned to have it run on each
> of the containers mentioned above, using some container orchestration
> infrastructure. Get in contact if interested in helping having this in place.
>
> # dm
> 1 alpine:3.4: Ok
> 2 alpine:3.5: Ok
> 3 alpine:edge: Ok
> 4 android-ndk:r12b-arm: Ok
> 5 archlinux:latest: Ok
> 6 centos:5: Ok
> 7 centos:6: Ok
> 8 centos:7: Ok
> 9 debian:7: Ok
> 10 debian:8: Ok
> 11 debian:9: Ok
> 12 debian:experimental: Ok
> 13 debian:experimental-x-arm64: Ok
> 14 debian:experimental-x-mips: Ok
> 15 debian:experimental-x-mips64: Ok
> 16 debian:experimental-x-mipsel: Ok
> 17 fedora:20: Ok
> 18 fedora:21: Ok
> 19 fedora:22: Ok
> 20 fedora:23: Ok
> 21 fedora:24: Ok
> 22 fedora:24-x-ARC-uClibc: Ok
> 23 fedora:25: Ok
> 24 fedora:rawhide: Ok
> 25 mageia:5: Ok
> 26 opensuse:13.2: Ok
> 27 opensuse:42.1: Ok
> 28 opensuse:tumbleweed: Ok
> 29 ubuntu:12.04.5: Ok
> 30 ubuntu:14.04.4: Ok
> 31 ubuntu:14.04.4-x-linaro-arm64: Ok
> 32 ubuntu:15.10: Ok
> 33 ubuntu:16.04: Ok
> 34 ubuntu:16.04-x-arm: Ok
> 35 ubuntu:16.04-x-arm64: Ok
> 36 ubuntu:16.04-x-powerpc: Ok
> 37 ubuntu:16.04-x-powerpc64: Ok
> 38 ubuntu:16.04-x-s390: Ok
> 39 ubuntu:16.10: Ok
> 40 ubuntu:17.04: Ok
> #
>
> # uname -a
> Linux jouet 4.11.0-rc6+ #7 SMP Tue Apr 11 11:53:14 -03 2017 x86_64 x86_64 x86_64 GNU/Linux
> # perf test
> 1: vmlinux symtab matches kallsyms : Ok
> 2: Detect openat syscall event : Ok
> 3: Detect openat syscall event on all cpus : Ok
> 4: Read samples using the mmap interface : Ok
> 5: Parse event definition strings : Ok
> 6: Simple expression parser : Ok
> 7: PERF_RECORD_* events & perf_sample fields : Ok
> 8: Parse perf pmu format : Ok
> 9: DSO data read : Ok
> 10: DSO data cache : Ok
> 11: DSO data reopen : Ok
> 12: Roundtrip evsel->name : Ok
> 13: Parse sched tracepoints fields : Ok
> 14: syscalls:sys_enter_openat event fields : Ok
> 15: Setup struct perf_event_attr : Ok
> 16: Match and link multiple hists : Ok
> 17: 'import perf' in python : Ok
> 18: Breakpoint overflow signal handler : Ok
> 19: Breakpoint overflow sampling : Ok
> 20: Number of exit events of a simple workload : Ok
> 21: Software clock events period values : Ok
> 22: Object code reading : Ok
> 23: Sample parsing : Ok
> 24: Use a dummy software event to keep tracking: Ok
> 25: Parse with no sample_id_all bit set : Ok
> 26: Filter hist entries : Ok
> 27: Lookup mmap thread : Ok
> 28: Share thread mg : Ok
> 29: Sort output of hist entries : Ok
> 30: Cumulate child hist entries : Ok
> 31: Track with sched_switch : Ok
> 32: Filter fds with revents mask in a fdarray : Ok
> 33: Add fd to a fdarray, making it autogrow : Ok
> 34: kmod_path__parse : Ok
> 35: Thread map : Ok
> 36: LLVM search and compile :
> 36.1: Basic BPF llvm compile : Ok
> 36.2: kbuild searching : Ok
> 36.3: Compile source for BPF prologue generation: Ok
> 36.4: Compile source for BPF relocation : Ok
> 37: Session topology : Ok
> 38: BPF filter :
> 38.1: Basic BPF filtering : Ok
> 38.2: BPF pinning : Ok
> 38.3: BPF prologue generation : Ok
> 38.4: BPF relocation checker : Ok
> 39: Synthesize thread map : Ok
> 40: Remove thread map : Ok
> 41: Synthesize cpu map : Ok
> 42: Synthesize stat config : Ok
> 43: Synthesize stat : Ok
> 44: Synthesize stat round : Ok
> 45: Synthesize attr update : Ok
> 46: Event times : Ok
> 47: Read backward ring buffer : Ok
> 48: Print cpu map : Ok
> 49: Probe SDT events : Ok
> 50: is_printable_array : Ok
> 51: Print bitmap : Ok
> 52: perf hooks : Ok
> 53: builtin clang support : Skip (not compiled in)
> 54: unit_number__scnprintf : Ok
> 55: x86 rdpmc : Ok
> 56: Convert perf time to TSC : Ok
> 57: DWARF unwind : Ok
> 58: x86 instruction decoder - new instructions : Ok
> 59: Intel cqm nmi context read : Skip
> #
>
> $ perf stat make -C tools/perf build-test
> make: Entering directory '/home/acme/git/linux/tools/perf'
> - tarpkg: ./tests/perf-targz-src-pkg .
> make_no_ui_O: make NO_NEWT=1 NO_SLANG=1 NO_GTK2=1
> make_no_libdw_dwarf_unwind_O: make NO_LIBDW_DWARF_UNWIND=1
> make_with_clangllvm_O: make LIBCLANGLLVM=1
> make_install_bin_O: make install-bin
> make_util_map_o_O: make util/map.o
> make_no_slang_O: make NO_SLANG=1
> make_no_libbpf_O: make NO_LIBBPF=1
> make_debug_O: make DEBUG=1
> make_no_newt_O: make NO_NEWT=1
> make_clean_all_O: make clean all
> make_no_backtrace_O: make NO_BACKTRACE=1
> make_no_demangle_O: make NO_DEMANGLE=1
> make_pure_O: make
> make_install_prefix_O: make install prefix=/tmp/krava
> make_no_auxtrace_O: make NO_AUXTRACE=1
> make_no_libperl_O: make NO_LIBPERL=1
> make_doc_O: make doc
> make_with_babeltrace_O: make LIBBABELTRACE=1
> make_static_O: make LDFLAGS=-static
> make_no_libelf_O: make NO_LIBELF=1
> make_no_libnuma_O: make NO_LIBNUMA=1
> make_util_pmu_bison_o_O: make util/pmu-bison.o
> make_no_libunwind_O: make NO_LIBUNWIND=1
> make_no_scripts_O: make NO_LIBPYTHON=1 NO_LIBPERL=1
> make_tags_O: make tags
> make_help_O: make help
> make_install_O: make install
> make_no_libpython_O: make NO_LIBPYTHON=1
> make_no_libbionic_O: make NO_LIBBIONIC=1
> make_install_prefix_slash_O: make install prefix=/tmp/krava/
> make_no_libaudit_O: make NO_LIBAUDIT=1
> make_no_gtk2_O: make NO_GTK2=1
> make_minimal_O: make NO_LIBPERL=1 NO_LIBPYTHON=1 NO_NEWT=1 NO_GTK2=1 NO_DEMANGLE=1 NO_LIBELF=1 NO_LIBUNWIND=1 NO_BACKTRACE=1 NO_LIBNUMA=1 NO_LIBAUDIT=1 NO_LIBBIONIC=1 NO_LIBDW_DWARF_UNWIND=1 NO_AUXTRACE=1 NO_LIBBPF=1 NO_LIBCRYPTO=1 NO_SDT=1 NO_JVMTI=1
> make_perf_o_O: make perf.o
> OK
> make: Leaving directory '/home/acme/git/linux/tools/perf'
> $