1. 08 3月, 2016 1 次提交
  2. 27 2月, 2016 2 次提交
    • N
      perf report: Left align dynamic entries in hierarchy · cb1fab91
      Namhyung Kim 提交于
      The dynamic entries are right-aligned unlike other entries since it
      usually has numeric value.  But for the hierarchy mode, left alignment
      is more appropriate IMHO.  Also trim spaces on the left so that we can
      easily identify the hierarchy.
      
      Before:
      
        $ perf report --hierarchy -i perf.data.kmem -s gfp_flags,ptr,bytes_req --stdio -g none
        ...
        #
        #       Overhead                                        gfp_flags /                ptr /          bytes_req
        # ..............  .................................................................................................
        #
            91.67%                   GFP_ATOMIC|GFP_NOWARN|GFP_NOMEMALLOC
               37.50%        0xffff8803f7669400
                  37.50%                       448
                8.33%        0xffff8803f766be00
                   8.33%                        96
                4.17%        0xffff8800d156dc00
                   4.17%                       704
      
      After:
      
        #       Overhead  gfp_flags / ptr / bytes_req
        # ..............  ....................................
        #
            91.67%        GFP_ATOMIC|GFP_NOWARN|GFP_NOMEMALLOC
               37.50%        0xffff8803f7669400
                  37.50%        448
                8.33%        0xffff8803f766be00
                   8.33%        96
                4.17%        0xffff8800d156dc00
                   4.17%        704
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NJiri 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-3-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      cb1fab91
    • N
      perf report: Fix indentation of dynamic entries in hierarchy · d3a72fd8
      Namhyung Kim 提交于
      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: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Acked-by: NJiri 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: NArnaldo Carvalho de Melo <acme@redhat.com>
      d3a72fd8
  3. 26 2月, 2016 5 次提交
  4. 25 2月, 2016 8 次提交
  5. 22 2月, 2016 1 次提交
  6. 12 2月, 2016 1 次提交
    • A
      perf hists: Do column alignment on the format iterator · 89fee709
      Arnaldo Carvalho de Melo 提交于
      We were doing column alignment in the format function for each cell,
      returning a string padded with spaces so that when the next column is
      printed the cursor is at its column alignment.
      
      This ends up needlessly printing trailing spaces, do it at the format
      iterator, that is where we know if it is needed, i.e. if there is more
      columns to be printed.
      
      This eliminates the need for triming lines when doing a dump using 'P'
      in the TUI browser and also produces far saner results with things like
      piping 'perf report' to 'less'.
      
      Right now only the formatters for sym->name and the 'locked' column
      (perf mem report), that are the ones that end up at the end of lines
      in the default 'perf report', 'perf top' and 'perf mem report' tools,
      the others will be done in a subsequent patch.
      
      In the end the 'width' parameter for the formatters now mean, in
      'printf' terms, the 'precision', where before it was the field 'width'.
      Reported-by: NDave Jones <davej@codemonkey.org.uk>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Link: http://lkml.kernel.org/n/tip-s7iwl2gj23w92l6tibnrcqzr@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      89fee709
  7. 03 2月, 2016 17 次提交
  8. 02 2月, 2016 5 次提交
    • N
      perf report: Don't show blank lines if entry has no callchain · 3848c23b
      Namhyung Kim 提交于
      When all callchains of a hist entry is percent-limited, do not add a
      blank line at the end.  It makes the entry look like it doesn't have
      callchains.
      Reported-and-Tested-by: NJiri Olsa <jolsa@kernel.org>
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Wang Nan <wangnan0@huawei.com>
      Link: http://lkml.kernel.org/r/20160128122454.GA27446@danjae.kornetSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      3848c23b
    • N
      perf hists browser: Fix percent display in callchains · 59c624e2
      Namhyung Kim 提交于
      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: NNamhyung 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: NArnaldo Carvalho de Melo <acme@redhat.com>
      59c624e2
    • N
      perf hists browser: Pass parent_total to callchain print functions · 5eca104e
      Namhyung Kim 提交于
      Pass parent node's total period to callchain print functions.  This info
      is needed by later patch to determine whether it can omit percent or not
      correctly.
      
      No functional change intended.
      Signed-off-by: NNamhyung 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-9-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5eca104e
    • N
      perf hists browser: Fix dump to show correct callchain style · 0c841c6c
      Namhyung Kim 提交于
      The commit 8c430a34 ("perf hists browser: Support folded
      callchains") missed to update hist_browser__dump() so it always shows
      graph-style callchains regardless of current setting.
      
      To fix that, factor out callchain printing code and rename the existing
      function which prints graph-style callchain.
      Signed-off-by: NNamhyung 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>
      Fixes: 8c430a34 ("perf hists browser: Support folded callchains")
      Link: http://lkml.kernel.org/r/1453909257-26015-8-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0c841c6c
    • N
      perf report: Fix percent display in callchains on --stdio · 7ed5d6e2
      Namhyung Kim 提交于
      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 -s comm --percent-limit 0.01 --stdio
        ...
           9.95%  swapper
                  |
                  |--7.57%--intel_idle
                  |          cpuidle_enter_state
                  |          cpuidle_enter
                  |          call_cpuidle
                  |          cpu_startup_entry
                  |          |
                  |          |--4.89%--start_secondary
                  |          |
                  |           --2.68%--rest_init
                  |                     start_kernel
                  |                     x86_64_start_reservations
                  |                     x86_64_start_kernel
      	    |
      	    |--0.15%--__schedule
      	    |          |
      	    |          |--0.13%--schedule
      	    |          |          schedule_preempt_disable
      	    |          |          cpu_startup_entry
                  |          |          |
                  |          |          |--0.09%--start_secondary
                  |          |          |
                  |          |           --0.04%--rest_init
                  |          |                     start_kernel
                  |          |                     x86_64_start_reservations
                  |          |                     x86_64_start_kernel
                  |          |
                  |           --0.01%--schedule_preempt_disabled
                  |                     cpu_startup_entry
        ...
      
      Current code omits the percent if 'intel_idle' becomes the only node
      when percent limit is set to 0.5%, its percent is not 9.95% but users
      will assume it incorrectly.
      
      Before:
      
        $ perf report --percent-limit 0.5 --stdio
        ...
           9.95%  swapper
                  |
                  ---intel_idle
                     cpuidle_enter_state
                     cpuidle_enter
                     call_cpuidle
                     cpu_startup_entry
                     |
                     |--4.89%--start_secondary
                     |
                      --2.68%--rest_init
                                start_kernel
                                x86_64_start_reservations
                                x86_64_start_kernel
      
      After:
      
        $ perf report --percent-limit 0.5 --stdio
        ...
           9.95%  swapper
                  |
                   --7.57%--intel_idle
                             cpuidle_enter_state
                             cpuidle_enter
                             call_cpuidle
                             cpu_startup_entry
                             |
                             |--4.89%--start_secondary
                             |
                              --2.68%--rest_init
                                        start_kernel
                                        x86_64_start_reservations
                                        x86_64_start_kernel
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Tested-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      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-7-git-send-email-namhyung@kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7ed5d6e2