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

From: Arnaldo Carvalho de Melo
Date: Tue Sep 20 2016 - 16:05:06 EST


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