Messages in this thread | | | From | Arnaldo Carvalho de Melo <> | Subject | [GIT PULL 00/44] perf/core improvements and fixes | Date | Fri, 22 Sep 2017 11:41:36 -0300 |
| |
Hi Ingo,
Please consider pulling,
- Arnaldo
The following changes since commit b130a699c07155a1d6ef7d971a5f3bf0e3818d5a:
Merge tag 'perf-urgent-for-mingo-4.14-20170912' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent (2017-09-13 09:25:10 +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.15-20170922
for you to fetch changes up to 0a7c74eae307894c6c95316c382f118aef8481e8:
perf tools: Provide mutex wrappers for pthreads rwlocks (2017-09-21 13:28:06 -0300)
---------------------------------------------------------------- perf/core improvements and fixes:
- Support direct --user-regs arguments in 'perf record', previously the only way to sample PERF_SAMPLE_REGS_USER was implicitly selecting it when recording callchains (Andi Kleen)
- Support showing sampled user regs in 'perf script' (Andi Kleen)
- Introduce the concept of weak groups in 'perf stat': try to set up a group, but if it's not schedulable fallback to not using a group. That gives us the best of both worlds: groups if they work, but still a usable fallback if they don't. E.g: (Andi Kleen)
% perf stat -e '{branches,branch-misses,l1d.replacement,l2_lines_in.all,l2_rqsts.all_code_rd}:W' -a sleep 1
125,366,055 branches (80.02%) 9,208,402 branch-misses # 7.35% of all branches (80.01%) 24,560,249 l1d.replacement (80.00%) 43,174,971 l2_lines_in.all (80.05%) 31,891,457 l2_rqsts.all_code_rd (79.92%)
- Support metrics in 'stat' and 'list'. A metric is a formula that uses multiple events to compute a higher level result (e.g. IPC). (Andi Kleen)
- Add Intel processors vendor event metrics JSON files (Andi Kleen)
- Add 'pid' and 'tid' options to 'perf sched timehist' (David Ahern)
- Generate 'behavior' string table from kernel headers, helps getting new parameters when synchronizing kernel headers, like MADV_WIPEONFORK and MADV_KEEPONFORK, that are now beautied (Arnaldo Carvalho de Melo)
- Improve TUI progress bar by showing how many bytes from a total were processed (Jiri Olsa)
- Use scandir() to replace readdir(), prep work to have the synthesizing of PERF_RECORD_ entries for existing threads be multithreaded, making 'perf top' bearable on high core count systems such as Intel's Knights Landing/Mill (Kan Liang)
- Allow creating a ~/.perfconfig file when setting a variable to its default value, previously it would bail out and not write such a file (Taeung Song)
- Introduce wrapper for allowing purely single threaded apps to avoid the costs of locking (Arnaldo Carvalho de Melo)
- Introduce hashtable to reduce the cost of thread lookup
- Fix build C++ build wrt poison.h using void pointer arithmetic, affects only the embedded clang/llvm case, that is disabled by default (Arnaldo Carvalho de Melo)
- Fix leaking rec_argv in error cases (Martin Kepplinger)
- Remove Intel CQM perf test, that infrastructure was nuked (Xiaochen Shen)
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
---------------------------------------------------------------- Andi Kleen (27): perf tools: Support weak groups in 'perf stat' perf vendor events: Support metric_group and no event name in JSON parser perf stat: Factor out generic metric printing perf stat: Print generic metric header even for failed expressions perf pmu: Extract function to get JSON alias map perf stat: Support JSON metrics in perf stat perf list: Add metric groups to perf list perf stat: Don't use ctx for saved values lookup perf stat: Support duration_time for metrics perf stat: Hide internal duration_time counter perf stat: Update walltime_nsecs_stats in interval mode perf record: Support direct --user-regs arguments perf script: Support user regs perf stat: Fall weak group back even for EBADF perf vendor events: Add JSON metrics for Broadwell perf vendor events: Add JSON metrics for Skylake perf vendor events: Add JSON metrics for Sandy Bridge perf vendor events: Add JSON metrics for Sandy Bridge EP perf vendor events: Add JSON metrics for Ivy Bridge perf vendor events: Add JSON metrics for Haswell perf vendor events: Add JSON metrics for Ivy Town perf vendor events: Add JSON metrics for Haswell EP perf vendor events: Add JSON metrics for Broadwell Server perf vendor events: Add JSON metrics for Broadwell DE perf vendor events: Add JSON metrics for Skylake server perf pmu: Improve error messages for missing PMUs perf stat: Fix adding multiple event groups
Arnaldo Carvalho de Melo (7): perf tools: Make copyfile_offset() static perf machine: Optimize a bit the machine__findnew_thread() methods perf trace beauty madvise: Generate 'behavior' string table from kernel headers tools: Update asm-generic/mman-common.h copy from the kernel perf tools: Get all of tools/{arch,include}/ in the MANIFEST tools include: Do not use poison with C++ perf tools: Provide mutex wrappers for pthreads rwlocks
David Ahern (1): perf sched timehist: Add pid and tid options
Jiri Olsa (3): perf tools: Add python-clean target perf ui progress: Add ui specific init function perf ui progress: Add size info into progress bar
Kan Liang (2): perf tools: Use scandir() to replace readdir() perf machine: Use hashtable for machine threads
Martin Kepplinger (1): perf tools: Fix leaking rec_argv in error cases
Taeung Song (2): perf config: Write a config file just once perf config: Allow creating empty config set for config file autogeneration
Xiaochen Shen (1): perf tests: Remove Intel CQM perf test
tools/include/linux/poison.h | 5 + tools/include/uapi/asm-generic/mman-common.h | 14 +- tools/perf/Documentation/perf-list.txt | 9 +- tools/perf/Documentation/perf-record.txt | 2 + tools/perf/Documentation/perf-sched.txt | 8 + tools/perf/Documentation/perf-script.txt | 4 +- tools/perf/Documentation/perf-stat.txt | 7 + tools/perf/MANIFEST | 87 +--- tools/perf/Makefile.perf | 17 +- tools/perf/arch/x86/include/arch-tests.h | 1 - tools/perf/arch/x86/tests/Build | 1 - tools/perf/arch/x86/tests/arch-tests.c | 4 - tools/perf/arch/x86/tests/intel-cqm.c | 127 ------ tools/perf/builtin-c2c.c | 1 + tools/perf/builtin-config.c | 22 +- tools/perf/builtin-kvm.c | 1 - tools/perf/builtin-list.c | 7 + tools/perf/builtin-mem.c | 1 + tools/perf/builtin-record.c | 3 + tools/perf/builtin-sched.c | 4 + tools/perf/builtin-script.c | 32 +- tools/perf/builtin-stat.c | 82 +++- tools/perf/builtin-timechart.c | 4 +- tools/perf/builtin-trace.c | 20 +- tools/perf/perf.h | 1 + .../pmu-events/arch/x86/broadwell/bdw-metrics.json | 164 +++++++ .../arch/x86/broadwellde/bdwde-metrics.json | 164 +++++++ .../arch/x86/broadwellx/bdx-metrics.json | 164 +++++++ .../pmu-events/arch/x86/haswell/hsw-metrics.json | 158 +++++++ .../pmu-events/arch/x86/haswellx/hsx-metrics.json | 158 +++++++ .../pmu-events/arch/x86/ivybridge/ivb-metrics.json | 164 +++++++ .../pmu-events/arch/x86/ivytown/ivt-metrics.json | 164 +++++++ .../pmu-events/arch/x86/jaketown/jkt-metrics.json | 140 ++++++ .../arch/x86/sandybridge/snb-metrics.json | 140 ++++++ .../pmu-events/arch/x86/skylake/skl-metrics.json | 164 +++++++ .../pmu-events/arch/x86/skylakex/skx-metrics.json | 182 ++++++++ tools/perf/pmu-events/jevents.c | 24 +- tools/perf/pmu-events/jevents.h | 2 +- tools/perf/pmu-events/pmu-events.h | 1 + tools/perf/tests/builtin-test.c | 1 + tools/perf/trace/beauty/madvise_behavior.sh | 10 + tools/perf/trace/beauty/mmap.c | 38 +- tools/perf/ui/progress.c | 6 +- tools/perf/ui/progress.h | 12 +- tools/perf/ui/tui/progress.c | 32 +- tools/perf/util/Build | 2 + tools/perf/util/config.c | 5 +- tools/perf/util/data.c | 1 + tools/perf/util/dso.c | 13 +- tools/perf/util/dso.h | 4 +- tools/perf/util/event.c | 46 +- tools/perf/util/evlist.h | 1 + tools/perf/util/evsel.c | 7 +- tools/perf/util/evsel.h | 1 + tools/perf/util/machine.c | 155 ++++--- tools/perf/util/machine.h | 24 +- tools/perf/util/map.c | 34 +- tools/perf/util/map.h | 3 +- tools/perf/util/metricgroup.c | 490 +++++++++++++++++++++ tools/perf/util/metricgroup.h | 31 ++ tools/perf/util/namespaces.c | 1 + tools/perf/util/parse-events.c | 29 +- tools/perf/util/parse-events.h | 3 + tools/perf/util/parse-events.l | 3 +- tools/perf/util/pmu.c | 55 ++- tools/perf/util/pmu.h | 2 + tools/perf/util/probe-file.c | 1 + tools/perf/util/rb_resort.h | 5 +- tools/perf/util/rwsem.c | 32 ++ tools/perf/util/rwsem.h | 19 + tools/perf/util/session.c | 2 +- tools/perf/util/stat-shadow.c | 110 +++-- tools/perf/util/stat.h | 4 +- tools/perf/util/symbol.c | 8 +- tools/perf/util/thread.c | 4 +- tools/perf/util/trace-event-info.c | 1 - tools/perf/util/trace-event-read.c | 1 - tools/perf/util/util.c | 16 +- tools/perf/util/util.h | 7 +- tools/perf/util/vdso.c | 4 +- tools/perf/util/zlib.c | 1 + 81 files changed, 2988 insertions(+), 489 deletions(-) delete mode 100644 tools/perf/arch/x86/tests/intel-cqm.c create mode 100644 tools/perf/pmu-events/arch/x86/broadwell/bdw-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/broadwellde/bdwde-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/broadwellx/bdx-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/haswell/hsw-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/haswellx/hsx-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/ivybridge/ivb-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/ivytown/ivt-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/jaketown/jkt-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/sandybridge/snb-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/skylake/skl-metrics.json create mode 100644 tools/perf/pmu-events/arch/x86/skylakex/skx-metrics.json create mode 100755 tools/perf/trace/beauty/madvise_behavior.sh create mode 100644 tools/perf/util/metricgroup.c create mode 100644 tools/perf/util/metricgroup.h create mode 100644 tools/perf/util/rwsem.c create mode 100644 tools/perf/util/rwsem.h
| |