• Namhyung Kim's avatar
    perf report: Fix indentation of dynamic entries in hierarchy · d3a72fd8
    Namhyung Kim authored
    When dynamic entries are used in the hierarchy mode with multiple
    events, the output might not be aligned properly.  In the hierarchy
    mode, the each sort column is indented using total number of sort keys.
    So it keeps track of number of sort keys when adding them.  However
    a dynamic sort key can be added more than once when multiple events have
    same field names.  This results in unnecessarily long indentation in the
    output.
    
    For example perf kmem records following events:
    
      $ perf evlist --trace-fields -i perf.data.kmem
      kmem:kmalloc: trace_fields: call_site,ptr,bytes_req,bytes_alloc,gfp_flags
      kmem:kmalloc_node: trace_fields: call_site,ptr,bytes_req,bytes_alloc,gfp_flags,node
      kmem:kfree: trace_fields: call_site,ptr
      kmem:kmem_cache_alloc: trace_fields: call_site,ptr,bytes_req,bytes_alloc,gfp_flags
      kmem:kmem_cache_alloc_node: trace_fields: call_site,ptr,bytes_req,bytes_alloc,gfp_flags,node
      kmem:kmem_cache_free: trace_fields: call_site,ptr
      kmem:mm_page_alloc: trace_fields: page,order,gfp_flags,migratetype
      kmem:mm_page_free: trace_fields: page,order
    
    As you can see, many field names shared between kmem events.  So adding
    'ptr' dynamic sort key alone will set nr_sort_keys to 6.  And this adds
    many unnecessary spaces between columns.
    
    Before:
    
      $ perf report -i perf.data.kmem --hierarchy -s ptr -g none --stdio
      ...
      #                Overhead                 ptr
      # .......................  ...................................
      #
          99.89%                 0xffff8803ffb79720
           0.06%                 0xffff8803d228a000
           0.03%                 0xffff8803f7678f00
           0.00%                 0xffff880401dc5280
           0.00%                 0xffff880406172380
           0.00%                 0xffff8803ffac3a00
           0.00%                 0xffff8803ffac1600
    
    After:
    
      # Overhead                 ptr
      # ........  ....................
      #
          99.89%  0xffff8803ffb79720
           0.06%  0xffff8803d228a000
           0.03%  0xffff8803f7678f00
           0.00%  0xffff880401dc5280
           0.00%  0xffff880406172380
           0.00%  0xffff8803ffac3a00
           0.00%  0xffff8803ffac1600
    Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
    Tested-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Cc: Andi Kleen <andi@firstfloor.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Wang Nan <wangnan0@huawei.com>
    Link: http://lkml.kernel.org/r/1456512767-1164-2-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    d3a72fd8
sort.c 62.2 KB