• Jiri Olsa's avatar
    perf tools: Speed up report for perf compiled with linwunwind · 382619c0
    Jiri Olsa authored
    When compiled with libunwind, perf does some preparatory work when
    processing side-band events. This is not needed when report actually
    don't unwind dwarf callchains, so it's disabled with
    dwarf_callchain_users bool.
    
    However we could move that check to higher level and shield more
    unwanted code for normal report processing, giving us following speed up
    on kernel build profile:
    
    Before:
    
      $ perf record make -j40
      ...
      $ ll ../../perf.data
      -rw-------. 1 jolsa jolsa 461783932 Apr 26 09:11 perf.data
      $ perf stat -e cycles:u,instructions:u perf report -i perf.data > out
    
       Performance counter stats for 'perf report -i perf.data':
    
        78,669,920,155      cycles:u
        99,076,431,951      instructions:u            #    1.26  insn per cycle
    
          55.382823668 seconds time elapsed
    
          27.512341000 seconds user
          27.712871000 seconds sys
    
    After:
    
      $ perf stat -e cycles:u,instructions:u perf report -i perf.data > out
    
       Performance counter stats for 'perf report -i perf.data':
    
        59,626,798,904      cycles:u
        88,583,575,849      instructions:u            #    1.49  insn per cycle
    
          21.296935559 seconds time elapsed
    
          20.010191000 seconds user
           1.202935000 seconds sys
    
    The speed is higher with profile having many side-band events,
    because these trigger libunwind preparatory code.
    
    This does not apply for perf compiled with libdw for dwarf unwind,
    only for build with libunwind.
    Signed-off-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Link: http://lkml.kernel.org/r/20190426073804.17238-1-jolsa@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    382619c0
unwind-libunwind-local.c 16.8 KB