1. 17 7月, 2014 14 次提交
  2. 10 7月, 2014 2 次提交
  3. 08 7月, 2014 4 次提交
  4. 27 6月, 2014 3 次提交
  5. 20 6月, 2014 2 次提交
  6. 12 6月, 2014 10 次提交
  7. 10 6月, 2014 2 次提交
    • M
      perf probe: Improve error messages in --line option · 5ee05b88
      Masami Hiramatsu 提交于
      Improve error messages of 'perf probe --line' mode.
      
      Currently 'perf probe' shows the "Debuginfo analysis failed" message with
      an error code when the given symbol is not found:
      
        -----
        # perf probe -L page_cgroup_init_flatmem
        Debuginfo analysis failed. (-2)
          Error: Failed to show lines.
        -----
      
      But -2 (-ENOENT) means that the given source line or function was not
      found. With this patch, 'perf probe' shows the correct error message:
      
        -----
        # perf probe -L page_cgroup_init_flatmem
        Specified source line is not found.
          Error: Failed to show lines.
        -----
      
      There is also another debug error code is shown in the same function
      after get_real_path(). This removes that too.
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@kernel.org>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/20140606071406.6788.47850.stgit@kbuild-fedora.novalocalSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5ee05b88
    • M
      perf probe: Improve an error message of perf probe --vars mode · 69e96eaa
      Masami Hiramatsu 提交于
      Fix an error message when failed to find given address in --vars
      mode.
      
      Without this fix, perf probe -V doesn't show the final "Error"
      message if it fails to find given source line. Moreover, it
      tells it fails to find "variables" instead of the source line.
        -----
        # perf probe -V foo@bar
        Failed to find variables at foo@bar (0)
        -----
      The result also shows mysterious error code. Actually the error
      returns 0 or -ENOENT means that it just fails to find the address
      of given source line. (0 means there is no matching address,
      and -ENOENT means there is an entry(DIE) but it has no instance,
      e.g. an empty inlined function)
      
      This fixes it to show what happened and the final error message
      as below.
        -----
        # perf probe -V foo@bar
        Failed to find the address of foo@bar
          Error: Failed to show vars.
        -----
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/20140606071359.6788.84716.stgit@kbuild-fedora.novalocalSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      69e96eaa
  8. 09 6月, 2014 3 次提交
    • M
      perf probe: Improve error message for unknown member of data structure · 36d789a4
      Masami Hiramatsu 提交于
      Improve the error message if we can not find given member in the given
      structure. Currently perf probe shows a wrong error message as below.
      
        -----
        # perf probe getname_flags:65 "result->BOGUS"
        result(type:filename) has no member BOGUS.
        Failed to find 'result' in this function.
          Error: Failed to add events. (-22)
        -----
      
      The first message is correct, but the second one is not, since we didn't
      fail to find a variable but fails to find the member of given variable.
      
        -----
        # perf probe getname_flags:65 "result->BOGUS"
        result(type:filename) has no member BOGUS.
          Error: Failed to add events. (-22)
        -----
      
      With this patch, the error message shows only the first one.  And if we
      really failed to find given variable, it tells us so.
      
        -----
        # perf probe getname_flags:65 "BOGUS"
        Failed to find 'BOGUS' in this function.
          Error: Failed to add events. (-2)
        -----
      Reported-by: NArnaldo Carvalho de Melo <acme@kernel.org>
      Signed-off-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/20140606071345.6788.23744.stgit@kbuild-fedora.novalocalSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      36d789a4
    • D
      perf tools: Add dcacheline sort · 9b32ba71
      Don Zickus 提交于
      In perf's 'mem-mode', one can get access to a whole bunch of details specific to a
      particular sample instruction.  A bunch of those details relate to the data
      address.
      
      One interesting thing you can do with data addresses is to convert them into a unique
      cacheline they belong too.  Organizing these data cachelines into similar groups and sorting
      them can reveal cache contention.
      
      This patch creates an alogorithm based on various sample details that can help group
      entries together into data cachelines and allows 'perf report' to sort on it.
      
      The algorithm relies on having proper mmap2 support in the kernel to help determine
      if the memory map the data address belongs to is private to a pid or globally shared.
      
      The alogortithm is as follows:
      
      o group cpumodes together
      o group entries with discovered maps together
      o sort on major, minor, inode and inode generation numbers
      o if userspace anon, then sort on pid
      o sort on cachelines based on data addresses
      
      The 'dcacheline' sort option in 'perf report' only works in 'mem-mode'.
      
      Sample output:
      
       #
       # Samples: 206  of event 'cpu/mem-loads/pp'
       # Total weight : 2534
       # Sort order   : dcacheline,pid
       #
       # Overhead       Samples                                                          Data Cacheline       Command:  Pid
       # ........  ............  ......................................................................  ..................
       #
          13.22%             1  [k] 0xffff88042f08ebc0                                                       swapper:    0
           9.27%             1  [k] 0xffff88082e8cea80                                                       swapper:    0
           3.59%             2  [k] 0xffffffff819ba180                                                       swapper:    0
           0.32%             1  [k] arch_trigger_all_cpu_backtrace_handler_na.23901+0xffffffffffffffe0       swapper:    0
           0.32%             1  [k] timekeeper_seq+0xfffffffffffffff8                                        swapper:    0
      
      Note:  Added a '+1' to symlen size in hists__calc_col_len to prevent the next column
      from prematurely tabbing over and mis-aligning.  Not sure what the problem is.
      Signed-off-by: NDon Zickus <dzickus@redhat.com>
      Link: http://lkml.kernel.org/r/1401208087-181977-8-git-send-email-dzickus@redhat.comSigned-off-by: NJiri Olsa <jolsa@kernel.org>
      9b32ba71
    • D
      perf tools: Add support to dynamically get cacheline size · 2b1b7100
      Don Zickus 提交于
      Different arches may have different cacheline sizes.  Look it up and set
      a global variable for reference.
      Signed-off-by: NDon Zickus <dzickus@redhat.com>
      Link: http://lkml.kernel.org/r/1401480605-97442-1-git-send-email-dzickus@redhat.comSigned-off-by: NJiri Olsa <jolsa@kernel.org>
      2b1b7100