• Linus Torvalds's avatar
    Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 7e4dc77b
    Linus Torvalds authored
    Pull perf updates from Ingo Molnar:
     "With over 300 commits it's been a busy cycle - with most of the work
      concentrated on the tooling side (as it should).
    
      The main kernel side enhancements were:
    
       - Add per event callchain limit: Recently we introduced a sysctl to
         tune the max-stack for all events for which callchains were
         requested:
    
           $ sysctl kernel.perf_event_max_stack
           kernel.perf_event_max_stack = 127
    
         Now this patch introduces a way to configure this per event, i.e.
         this becomes possible:
    
           $ perf record -e sched:*/max-stack=2/ -e block:*/max-stack=10/ -a
    
         allowing finer tuning of how much buffer space callchains use.
    
         This uses an u16 from the reserved space at the end, leaving
         another u16 for future use.
    
         There has been interest in even finer tuning, namely to control the
         max stack for kernel and userspace callchains separately.  Further
         discussion is needed, we may for instance use the remaining u16 for
         that and when it is present, assume that the sample_max_stack
         introduced in this patch applies for the kernel, and the u16 left
         is used for limiting the userspace callchain (Arnaldo Carvalho de
         Melo)
    
       - Optimize AUX event (hardware assisted side-band event) delivery
         (Kan Liang)
    
       - Rework Intel family name macro usage (this is partially x86 arch
         work) (Dave Hansen)
    
       - Refine and fix Intel LBR support (David Carrillo-Cisneros)
    
       - Add support for Intel 'TopDown' events (Andi Kleen)
    
       - Intel uncore PMU driver fixes and enhancements (Kan Liang)
    
       - ... other misc changes.
    
      Here's an incomplete list of the tooling enhancements (but there's
      much more, see the shortlog and the git log for details):
    
       - Support cross unwinding, i.e.  collecting '--call-graph dwarf'
         perf.data files in one machine and then doing analysis in another
         machine of a different hardware architecture.  This enables, for
         instance, to do:
    
           $ perf record -a --call-graph dwarf
    
         on a x86-32 or aarch64 system and then do 'perf report' on it on a
         x86_64 workstation (He Kuang)
    
       - Allow reading from a backward ring buffer (one setup via
         sys_perf_event_open() with perf_event_attr.write_backward = 1)
         (Wang Nan)
    
       - Finish merging initial SDT (Statically Defined Traces) support, see
         cset comments for details about how it all works (Masami Hiramatsu)
    
       - Support attaching eBPF programs to tracepoints (Wang Nan)
    
       - Add demangling of symbols in programs written in the Rust language
         (David Tolnay)
    
       - Add support for tracepoints in the python binding, including an
         example, that sets up and parses sched:sched_switch events,
         tools/perf/python/tracepoint.py (Jiri Olsa)
    
       - Introduce --stdio-color to set up the color output mode selection
         in 'annotate' and 'report', allowing emit color escape sequences
         when redirecting the output of these tools (Arnaldo Carvalho de
         Melo)
    
       - Add 'callindent' option to 'perf script -F', to indent the Intel PT
         call stack, making this output more ftrace-like (Adrian Hunter,
         Andi Kleen)
    
       - Allow dumping the object files generated by llvm when processing
         eBPF scriptlet events (Wang Nan)
    
       - Add stackcollapse.py script to help generating flame graphs (Paolo
         Bonzini)
    
       - Add --ldlat option to 'perf mem' to specify load latency for loads
         event (e.g. cpu/mem-loads/ ) (Jiri Olsa)
    
       - Tooling support for Intel TopDown counters, recently added to the
         kernel (Andi Kleen)"
    
    * 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (303 commits)
      perf tests: Add is_printable_array test
      perf tools: Make is_printable_array global
      perf script python: Fix string vs byte array resolving
      perf probe: Warn unmatched function filter correctly
      perf cpu_map: Add more helpers
      perf stat: Balance opening and reading events
      tools: Copy linux/{hash,poison}.h and check for drift
      perf tools: Remove include/linux/list.h from perf's MANIFEST
      tools: Copy the bitops files accessed from the kernel and check for drift
      Remove: kernel unistd*h files from perf's MANIFEST, not used
      perf tools: Remove tools/perf/util/include/linux/const.h
      perf tools: Remove tools/perf/util/include/asm/byteorder.h
      perf tools: Add missing linux/compiler.h include to perf-sys.h
      perf jit: Remove some no-op error handling
      perf jit: Add missing curly braces
      objtool: Initialize variable to silence old compiler
      objtool: Add -I$(srctree)/tools/arch/$(ARCH)/include/uapi
      perf record: Add --tail-synthesize option
      perf session: Don't warn about out of order event if write_backward is used
      perf tools: Enable overwrite settings
      ...
    7e4dc77b
core.c 57.1 KB