• Namhyung Kim's avatar
    perf hists browser: Fix percent display in callchains · 59c624e2
    Namhyung Kim authored
    When there's only a single callchain, perf doesn't print its percentage
    in front of the symbols.  This is because it assumes that the percentage
    is same as parents.  But if a percent limit is applied, it's possible
    that there are actually a couple of child nodes but only one of them is
    shown.  In this case it should display the percent to prevent
    misunderstanding of its percentage is same as the parent's.
    
    For example, let's see the following callchain.
    
      $ perf report --no-children --percent-limit 0.01 --tui
      ...
      -    0.06%  sleep    [kernel.vmlinux]    [k] kmem_cache_alloc_trace
           kmem_cache_alloc_trace
         - perf_event_mmap
            - 0.04% mmap_region
                 do_mmap_pgoff
               - vm_mmap_pgoff
                  + 0.02% sys_mmap_pgoff
                  + 0.02% vm_mmap
               + 0.02% mprotect_fixup
    
    Current code omits the percent if 'mmap_region' becomes the only node
    when percent limit is set to 0.03%, its percent is not 0.06% but users
    will assume it incorrectly.
    
    Before:
    
      $ perf report --no-children --percent-limit 0.03 --tui
      ...
         0.06%  sleep    [kernel.vmlinux]    [k] kmem_cache_alloc_trace
           kmem_cache_alloc_trace
         - perf_event_mmap
            - mmap_region
              do_mmap_pgoff
              vm_mmap_pgoff
    
    After:
    
      $ perf report --no-children --percent-limit 0.03 --tui
      ...
         0.06%  sleep    [kernel.vmlinux]    [k] kmem_cache_alloc_trace
           kmem_cache_alloc_trace
         - perf_event_mmap
            - 0.04% mmap_region
                 do_mmap_pgoff
                 vm_mmap_pgoff
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Frederic Weisbecker <fweisbec@gmail.com>
    Cc: Jiri Olsa <jolsa@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1453909257-26015-10-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    59c624e2
hists.c 64.9 KB