Re: [GIT PULL 00/22] perf/core improvements and fixes

From: Ingo Molnar
Date: Tue Sep 20 2016 - 17:34:27 EST



* Arnaldo Carvalho de Melo <acme@xxxxxxxxxx> wrote:

> Hi Ingo,
>
> Please consider pulling,
>
> - Arnaldo
>
> The following changes since commit cd34cd97b7b4336aa2c623c37daffab264c7c6ce:
>
> perf/x86/intel/uncore: Add Skylake server uncore support (2016-09-10 11:18:52 +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-20160920
>
> for you to fetch changes up to 3c028a0cb5b71f47d523bc8ad2c597cb257f41fb:
>
> perf symbols: Do not open device files (2016-09-20 16:20:21 -0300)
>
> ----------------------------------------------------------------
> perf/core improvements and fixes:
>
> User visible:
>
> - Support event group view with hierarchy mode in 'perf top' and 'perf report'
> (Namhyung Kim)
>
> e.g.:
>
> $ perf record -e '{cycles,instructions}' make
> $ perf report --hierarchy --stdio
> ...
> # Overhead Command / Shared Object / Symbol
> # ...................... ..................................
> ...
> 25.74% 27.18% sh
> 19.96% 24.14% libc-2.24.so
> 9.55% 14.64% [.] __strcmp_sse2
> 1.54% 0.00% [.] __tfind
> 1.07% 1.13% [.] _int_malloc
> 0.95% 0.00% [.] __strchr_sse2
> 0.89% 1.39% [.] __tsearch
> 0.76% 0.00% [.] strlen
>
> - Fix the dwarf regs table for x86_64, adding a missing % to the "%di"
> register, noticed with a failing 'perf test bpf' (Arnaldo Carvalho de Melo)
>
> - Fix handling of mmap parameters in the 'perf trace' beautifier in
> architectures that don't have the same mappings as x86_64 (Wang Nan)
>
> - Handle hugetbl mappings in older systems running new kernels (Wang Nan)
>
> - Resolve 'call' operands in 'annotate', that when using /proc/kcore
> were appearing just as hexadecimal addresses, to function names
> (Arnaldo Carvalho de Melo)
>
> - Fix width computation for srcline sort entry (Jiri Olsa)
>
> - Do not ignore call instruction with indirect target in 'annotate'
> (Ravi Bangoria)
>
> - Handle MADV_FREE in the madvise 'trace' beautifier (Wang Nan)
>
> - Fix build of 'perf trace' mman beautifier in !x86_64 (Wang Nan)
>
> Infrastructure:
>
> - Add infrastructure for PMU specific configuration, allowing to pass
> config variables directly to the kernel PMU driver, prefixing those
> variables with a '@', part of a larger series to support Coresight (Mathieu Poirier)
>
> Signed-off-by: Arnaldo Carvalho de Melo <acme@xxxxxxxxxx>
>
> Build stats at the end of this message.
>
> ----------------------------------------------------------------
> Arnaldo Carvalho de Melo (5):
> perf probe: Fix dwarf regs table for x86_64
> perf trace beauty mmap: Fix defines for non !x86_64
> perf tools: Do hugetlb handling in more systems
> perf annotate: Pass the symbol's map/dso to the instruction parsers
> perf annotate: Resolve 'call' operands to function names
>
> Jiri Olsa (2):
> perf hists: Fix width computation for srcline sort entry
> perf symbols: Do not open device files
>
> Mathieu Poirier (1):
> perf tools: Add infrastructure for PMU specific configuration
>
> Namhyung Kim (9):
> perf hists browser: Fix event group display
> perf hists: Introduce hists__match_hierarchy()
> perf hists: Introduce hists__link_hierarchy()
> perf hist: Initialize hierarchy tree explicitly
> perf ui/stdio: Always reset output width for hierarchy
> perf ui/stdio: Rename print_hierarchy_header()
> perf report: Enable group view with hierarchy
> perf ui/tui: Reset output width for hierarchy
> perf hists: Factor out hists__reset_column_width()
>
> Ravi Bangoria (1):
> perf annotate: Do not ignore call instruction with indirect target
>
> Wang Nan (4):
> tools include: Add uapi mman.h for each architecture
> perf build: Compare mman.h related headers against kernel originals
> perf trace beauty mmap: Add missing MADV_FREE
> tools include: Add mman macros needed by perf for all arch
>
> tools/arch/alpha/include/uapi/asm/mman.h | 47 ++++++++
> tools/arch/arc/include/uapi/asm/mman.h | 6 +
> tools/arch/arm/include/uapi/asm/mman.h | 6 +
> tools/arch/arm64/include/uapi/asm/mman.h | 6 +
> tools/arch/frv/include/uapi/asm/mman.h | 6 +
> tools/arch/h8300/include/uapi/asm/mman.h | 6 +
> tools/arch/hexagon/include/uapi/asm/mman.h | 6 +
> tools/arch/ia64/include/uapi/asm/mman.h | 6 +
> tools/arch/m32r/include/uapi/asm/mman.h | 6 +
> tools/arch/microblaze/include/uapi/asm/mman.h | 6 +
> tools/arch/mips/include/uapi/asm/mman.h | 46 ++++++++
> tools/arch/mn10300/include/uapi/asm/mman.h | 6 +
> tools/arch/parisc/include/uapi/asm/mman.h | 47 ++++++++
> tools/arch/powerpc/include/uapi/asm/mman.h | 15 +++
> tools/arch/s390/include/uapi/asm/mman.h | 6 +
> tools/arch/score/include/uapi/asm/mman.h | 6 +
> tools/arch/sh/include/uapi/asm/mman.h | 6 +
> tools/arch/sparc/include/uapi/asm/mman.h | 15 +++
> tools/arch/tile/include/uapi/asm/mman.h | 15 +++
> tools/arch/x86/include/uapi/asm/mman.h | 5 +
> tools/arch/xtensa/include/uapi/asm/mman.h | 47 ++++++++
> tools/include/uapi/asm-generic/mman-common.h | 75 ++++++++++++
> tools/include/uapi/asm-generic/mman.h | 22 ++++
> tools/include/uapi/linux/mman.h | 13 +++
> tools/perf/Documentation/perf-record.txt | 12 ++
> tools/perf/MANIFEST | 4 +
> tools/perf/Makefile.perf | 9 ++
> tools/perf/arch/x86/include/dwarf-regs-table.h | 2 +-
> tools/perf/builtin-report.c | 1 -
> tools/perf/trace/beauty/mmap.c | 72 +-----------
> tools/perf/ui/browsers/hists.c | 7 +-
> tools/perf/ui/hist.c | 15 +++
> tools/perf/ui/stdio/hist.c | 25 +---
> tools/perf/util/annotate.c | 37 +++---
> tools/perf/util/annotate.h | 2 +-
> tools/perf/util/dso.c | 3 +
> tools/perf/util/event.c | 7 +-
> tools/perf/util/evsel.h | 2 +
> tools/perf/util/hist.c | 154 ++++++++++++++++++++++++-
> tools/perf/util/hist.h | 1 +
> tools/perf/util/map.c | 9 +-
> tools/perf/util/parse-events.c | 7 +-
> tools/perf/util/parse-events.h | 1 +
> tools/perf/util/parse-events.l | 22 ++++
> tools/perf/util/parse-events.y | 11 ++
> tools/perf/util/sort.h | 1 +
> 46 files changed, 698 insertions(+), 131 deletions(-)
> create mode 100644 tools/arch/alpha/include/uapi/asm/mman.h
> create mode 100644 tools/arch/arc/include/uapi/asm/mman.h
> create mode 100644 tools/arch/arm/include/uapi/asm/mman.h
> create mode 100644 tools/arch/arm64/include/uapi/asm/mman.h
> create mode 100644 tools/arch/frv/include/uapi/asm/mman.h
> create mode 100644 tools/arch/h8300/include/uapi/asm/mman.h
> create mode 100644 tools/arch/hexagon/include/uapi/asm/mman.h
> create mode 100644 tools/arch/ia64/include/uapi/asm/mman.h
> create mode 100644 tools/arch/m32r/include/uapi/asm/mman.h
> create mode 100644 tools/arch/microblaze/include/uapi/asm/mman.h
> create mode 100644 tools/arch/mips/include/uapi/asm/mman.h
> create mode 100644 tools/arch/mn10300/include/uapi/asm/mman.h
> create mode 100644 tools/arch/parisc/include/uapi/asm/mman.h
> create mode 100644 tools/arch/powerpc/include/uapi/asm/mman.h
> create mode 100644 tools/arch/s390/include/uapi/asm/mman.h
> create mode 100644 tools/arch/score/include/uapi/asm/mman.h
> create mode 100644 tools/arch/sh/include/uapi/asm/mman.h
> create mode 100644 tools/arch/sparc/include/uapi/asm/mman.h
> create mode 100644 tools/arch/tile/include/uapi/asm/mman.h
> create mode 100644 tools/arch/x86/include/uapi/asm/mman.h
> create mode 100644 tools/arch/xtensa/include/uapi/asm/mman.h
> create mode 100644 tools/include/uapi/asm-generic/mman-common.h
> create mode 100644 tools/include/uapi/asm-generic/mman.h
> create mode 100644 tools/include/uapi/linux/mman.h
>
> [root@jouet ~]# 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 events tests : Ok
> 6: Validate PERF_RECORD_* events & perf_sample fields : Ok
> 7: Test perf pmu format parsing : Ok
> 8: Test dso data read : Ok
> 9: Test dso data cache : Ok
> 10: Test dso data reopen : Ok
> 11: roundtrip evsel->name check : Ok
> 12: Check parsing of sched tracepoints fields : Ok
> 13: Generate and check syscalls:sys_enter_openat event fields: Ok
> 14: struct perf_event_attr setup : Ok
> 15: Test matching and linking multiple hists : Ok
> 16: Try 'import perf' in python, checking link problems : Ok
> 17: Test breakpoint overflow signal handler : Ok
> 18: Test breakpoint overflow sampling : Ok
> 19: Test number of exit event of a simple workload : Ok
> 20: Test software clock events have valid period values : Ok
> 21: Test object code reading : Ok
> 22: Test sample parsing : Ok
> 23: Test using a dummy software event to keep tracking : Ok
> 24: Test parsing with no sample_id_all bit set : Ok
> 25: Test filtering hist entries : Ok
> 26: Test mmap thread lookup : Ok
> 27: Test thread mg sharing : Ok
> 28: Test output sorting of hist entries : Ok
> 29: Test cumulation of child hist entries : Ok
> 30: Test tracking with sched_switch : Ok
> 31: Filter fds with revents mask in a fdarray : Ok
> 32: Add fd to a fdarray, making it autogrow : Ok
> 33: Test kmod_path__parse function : Ok
> 34: Test thread map : Ok
> 35: Test LLVM searching and compiling :
> 35.1: Basic BPF llvm compiling test : Ok
> 35.2: Test kbuild searching : Ok
> 35.3: Compile source for BPF prologue generation test : Ok
> 35.4: Compile source for BPF relocation test : Ok
> 36: Test topology in session : Ok
> 37: Test BPF filter :
> 37.1: Test basic BPF filtering : Ok
> 37.2: Test BPF prologue generation : Ok
> 37.3: Test BPF relocation checker : Ok
> 38: Test thread map synthesize : Ok
> 39: Test cpu map synthesize : Ok
> 40: Test stat config synthesize : Ok
> 41: Test stat synthesize : Ok
> 42: Test stat round synthesize : Ok
> 43: Test attr update synthesize : Ok
> 44: Test events times : Ok
> 45: Test backward reading from ring buffer : Ok
> 46: Test cpu map print : Ok
> 47: Test SDT event probing : Ok
> 48: Test is_printable_array function : Ok
> 49: Test bitmap print : Ok
> 50: x86 rdpmc test : Ok
> 51: Test converting perf time to TSC : Ok
> 52: Test dwarf unwind : Ok
> 53: Test x86 instruction decoder - new instructions : Ok
> 54: Test intel cqm nmi context read : Skip
> [root@jouet ~]#
>
> Build stats:
>
> # time dm
> 1 74.534 alpine:3.4: Ok
> 2 25.636 android-ndk:r12b-arm: Ok
> 3 78.066 archlinux:latest: Ok
> 4 41.189 centos:5: Ok
> 5 64.550 centos:6: Ok
> 6 74.689 centos:7: Ok
> 7 68.580 debian:7: Ok
> 8 75.115 debian:8: Ok
> 9 75.288 fedora:20: Ok
> 10 79.294 fedora:21: Ok
> 11 76.839 fedora:22: Ok
> 12 76.695 fedora:23: Ok
> 13 82.058 fedora:24: Ok
> 14 31.649 fedora:24-x-ARC-uClibc: Ok
> 15 85.826 fedora:rawhide: Ok
> 16 83.272 mageia:5: Ok
> 17 76.883 opensuse:13.2: Ok
> 18 78.530 opensuse:42.1: Ok
> 19 85.315 opensuse:tumbleweed: Ok
> 20 63.436 ubuntu:12.04.5: Ok
> 21 40.909 ubuntu:14.04: Ok
> 22 72.689 ubuntu:14.04.4: Ok
> 23 76.374 ubuntu:15.10: Ok
> 24 70.309 ubuntu:16.04: Ok
> 25 59.159 ubuntu:16.04-x-arm: Ok
> 26 56.011 ubuntu:16.04-x-arm64: Ok
> 27 56.913 ubuntu:16.04-x-powerpc64: Ok
> 28 57.442 ubuntu:16.04-x-powerpc64el: Ok
> 29 80.282 ubuntu:16.10: Ok
> 30 60.964 ubuntu:16.10-x-arm64: Ok
> 31 61.390 ubuntu:16.10-x-powerpc: Ok
> 32 63.167 ubuntu:16.10-x-s390: Ok
>
> real 35m54.027s
> user 0m2.855s
> sys 0m2.652s

Pulled, thanks a lot Arnaldo!

Ingo