1. 03 10月, 2012 1 次提交
  2. 29 9月, 2012 1 次提交
  3. 27 9月, 2012 2 次提交
    • N
      perf tools: Check libaudit availability for perf-trace builtin · 4d29089c
      Namhyung Kim 提交于
      The newly added trace command requires an external audit library.
      
      However it can cause a build error because it's not checked whether the
      libaudit is installed on system:
      
          CC builtin-trace.o
        builtin-trace.c:7:22: fatal error: libaudit.h: No such file or directory
        compilation terminated.
        make: *** [builtin-trace.o] Error 1
      Signed-off-by: NNamhyung Kim <namhyung@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Link: http://lkml.kernel.org/r/1348745018-21744-1-git-send-email-namhyung@kernel.org
      [ committer note: Added ", disables 'trace tool' to the feature warning msg ]
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      4d29089c
    • A
      perf trace: New tool · 514f1c67
      Arnaldo Carvalho de Melo 提交于
      Initially should look loosely like the venerable 'strace' tool, but
      using the infrastructure in the perf tools to allow tracing extra
      targets:
      
        [acme@sandy linux]$ perf trace --hell
        Error: unknown option `hell'
      
         usage: perf trace <PID>
      
            -p, --pid <pid>       trace events on existing process id
                --tid <tid>       trace events on existing thread id
                --all-cpus        system-wide collection from all CPUs
                --cpu <cpu>       list of cpus to monitor
                --no-inherit      child tasks do not inherit counters
                --mmap-pages <n>  number of mmap data pages
                --uid <user>      user to profile
      
        [acme@sandy linux]$
      
      Those should have the same semantics as when using with 'perf record'.
      
      It gets stuck sometimes, but hey, it works sometimes too!
      
      In time it should support perf.data based workloads, i.e. it should have
      a:
      	-o filename
      
      Command line option that will produce a perf.data file that can then be
      used with 'perf trace' or any of the other perf tools (script, report,
      etc).
      
      It will also eventually have the set of functionalities described in the
      previous 'trace' prototype by Thomas Gleixner:
      
         "Announcing a new utility: 'trace'"
         http://lwn.net/Articles/415728/
      
      Also planned is to have some of the features suggested in the comments
      of that LWN article.
      
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Namhyung Kim <namhyung@gmail.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Link: http://lkml.kernel.org/n/tip-v9x3q9rv4caxtox7wtjpchq5@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      514f1c67
  4. 08 9月, 2012 1 次提交
  5. 10 8月, 2012 2 次提交
  6. 28 11月, 2011 1 次提交
    • A
      perf tools: Simplify debugfs mountpoint handling code · ebf294bf
      Arnaldo Carvalho de Melo 提交于
      We don't need to have two PATH_MAX char sized arrays holding it, just
      one in util/debugfs.c will do.
      
      Also rename debugfs_path to tracing_events_path, as it is not the path
      to debugfs, that is debugfs_mountpoint. Both are now accessible.
      
      This will allow accessing this code in the perf python binding without
      having to drag in perf.c and util/parse-events.c.
      
      The defaults for these variables are the canonical "/sys/kernel/debug"
      and "/sys/kernel/debug/tracing/events/", removing the need for simple
      tools to call debugfs_mount(NULL).
      
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Link: http://lkml.kernel.org/n/tip-ug9jvtjrsqbluuhqqxpvg30f@git.kernel.orgSigned-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      ebf294bf
  7. 13 10月, 2011 1 次提交
  8. 15 3月, 2011 1 次提交
    • A
      perf evlist: New command to list the names of events present in a perf.data file · 43adec95
      Arnaldo Carvalho de Melo 提交于
      [root@emilia ~]# perf record -a -e sched:* -e timer:timer* sleep 5
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.172 MB perf.data (~7530 samples) ]
      [root@emilia ~]# perf evlist
      sched:sched_kthread_stop
      sched:sched_kthread_stop_ret
      sched:sched_wakeup
      sched:sched_wakeup_new
      sched:sched_switch
      sched:sched_migrate_task
      sched:sched_process_free
      sched:sched_process_exit
      sched:sched_wait_task
      sched:sched_process_wait
      sched:sched_process_fork
      sched:sched_stat_wait
      sched:sched_stat_sleep
      sched:sched_stat_iowait
      sched:sched_stat_runtime
      sched:sched_pi_setprio
      timer:timer_init
      timer:timer_start
      timer:timer_expire_entry
      timer:timer_expire_exit
      timer:timer_cancel
      [root@emilia ~]#
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      43adec95
  9. 11 1月, 2011 1 次提交
    • A
      perf evsel: Fix order of event list deletion · bd3bfe9e
      Arnaldo Carvalho de Melo 提交于
      We need to defer calling perf_evsel_list__delete() till after atexit
      registered routines, because we need to traverse the events being
      recorded at that time at least on 'perf record'.
      
      This fixes the problem reported by Thomas Renninger where cmd_record
      called by cmd_timechart would not write the tracing data to the perf.data
      file header because the evsel_list at atexit (control+C on 'perf timechart
      record') time would be empty, being already deleted by run_builtin(),
      and thus 'perf timechart' when trying to process such perf.data file would
      die with:
      
      "no trace data in the file"
      
      Problem introduced in 70d544d0.
      Reported-by: NThomas Renninger <trenn@suse.de>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Thomas Renninger <trenn@suse.de>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      bd3bfe9e
  10. 04 1月, 2011 1 次提交
    • A
      perf evsel: Delete the event selectors at exit · 70d544d0
      Arnaldo Carvalho de Melo 提交于
      Freeing all the possibly allocated resources, reducing complexity
      on each tool exit path.
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      70d544d0
  11. 17 11月, 2010 1 次提交
  12. 05 6月, 2010 1 次提交
    • S
      perf buildid: add perfconfig option to specify buildid cache dir · 45de34bb
      Stephane Eranian 提交于
      This patch adds the ability to specify an alternate directory to store the
      buildid cache (buildids, copy of binaries). By default, it is hardcoded to
      $HOME/.debug. This directory contains immutable data. The layout of the
      directory is such that no conflicts in filenames are possible. A modification
      in a file, yields a different buildid and thus a different location in the
      subdir hierarchy.
      
      You may want to put the buildid cache elsewhere because of disk space
      limitation or simply to share the cache between users. It is also useful for
      remote collect vs. local analysis of profiles.
      
      This patch adds a new config option to the perfconfig file.  Under the tag
      'buildid', there is a dir option. For instance, if you have:
      
      $ cat /etc/perfconfig
      [buildid]
      dir = /var/cache/perf-buildid
      
      All buildids and binaries are be saved in the directory specified. The perf
      record, buildid-list, buildid-cache, report, annotate, and archive commands
      will it to pull information out.
      
      The option can be set in the system-wide perfconfig file or in the
      $HOME/.perfconfig file.
      
      Cc: David S. Miller <davem@davemloft.net>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <4c055fb7.df0ce30a.5f0d.ffffae52@mx.google.com>
      Signed-off-by: NStephane Eranian <eranian@google.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      45de34bb
  13. 21 5月, 2010 1 次提交
    • A
      perf tui: Allow disabling the TUI on a per command basis in ~/.perfconfig · 5d06e691
      Arnaldo Carvalho de Melo 提交于
      Using the same scheme as for git's/perf's pager setup, i.e. if one
      doesn't want to, on a newt enabled perf binary, to disable the TUI for
      'perf report', its just a matter of doing:
      
        [root@doppio linux-2.6-tip]# printf "[tui]\n\nreport = off\n" >
        /root/.perfconfig
        [root@doppio linux-2.6-tip]# cat /root/.perfconfig
        [tui]
      
        report = off
        [root@doppio linux-2.6-tip]#
      
      System wide settings are also possible, by editing /etc/perfconfig, etc,
      i.e. the git machinery for config files applies to perf as well, so when
      in doubt where to put your settings, consult the git documentation, if
      it fails, please let us know.
      Suggested-by: NIngo Molnar <mingo@elte.hu>
      Discussed-with: Stephane Eranian <eranian@google.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      5d06e691
  14. 03 5月, 2010 1 次提交
    • T
      perf: add perf-inject builtin · 454c407e
      Tom Zanussi 提交于
      Currently, perf 'live mode' writes build-ids at the end of the
      session, which isn't actually useful for processing live mode events.
      
      What would be better would be to have the build-ids sent before any of
      the samples that reference them, which can be done by processing the
      event stream and retrieving the build-ids on the first hit.  Doing
      that in perf-record itself, however, is off-limits.
      
      This patch introduces perf-inject, which does the same job while
      leaving perf-record untouched.  Normal mode perf still records the
      build-ids at the end of the session as it should, but for live mode,
      perf-inject can be injected in between the record and report steps
      e.g.:
      
      perf record -o - ./hackbench 10 | perf inject -v -b | perf report -v -i -
      
      perf-inject reads a perf-record event stream and repipes it to stdout.
      At any point the processing code can inject other events into the
      event stream - in this case build-ids (-b option) are read and
      injected as needed into the event stream.
      
      Build-ids are just the first user of perf-inject - potentially
      anything that needs userspace processing to augment the trace stream
      with additional information could make use of this facility.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <1272696080-16435-3-git-send-email-tzanussi@gmail.com>
      Signed-off-by: NTom Zanussi <tzanussi@gmail.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      454c407e
  15. 30 4月, 2010 1 次提交
    • A
      perf test: Initial regression testing command · 1c6a800c
      Arnaldo Carvalho de Melo 提交于
      First an example with the first internal test:
      
      [acme@doppio linux-2.6-tip]$ perf test
       1: vmlinux symtab matches kallsyms: Ok
      
      So it run just one test, that is "vmlinux symtab matches kallsyms", and it was
      successful.
      
      If we run it in verbose mode, we'll see details about errors and extra warnings
      for non-fatal problems:
      
      [acme@doppio linux-2.6-tip]$ perf test -v
       1: vmlinux symtab matches kallsyms:
      --- start ---
      Looking at the vmlinux_path (5 entries long)
      No build_id in vmlinux, ignoring it
      No build_id in /boot/vmlinux, ignoring it
      No build_id in /boot/vmlinux-2.6.34-rc4-tip+, ignoring it
      Using /lib/modules/2.6.34-rc4-tip+/build/vmlinux for symbols
      Maps only in vmlinux:
       ffffffff81cb81b1-ffffffff81e1149b 0 [kernel].init.text
       ffffffff81e1149c-ffffffff9fffffff 0 [kernel].exit.text
       ffffffffff600000-ffffffffff6000ff 0 [kernel].vsyscall_0
       ffffffffff600100-ffffffffff6003ff 0 [kernel].vsyscall_fn
       ffffffffff600400-ffffffffff6007ff 0 [kernel].vsyscall_1
       ffffffffff600800-ffffffffffffffff 0 [kernel].vsyscall_2
      Maps in vmlinux with a different name in kallsyms:
       ffffffffff600000-ffffffffff6000ff 0 [kernel].vsyscall_0 in kallsyms as [kernel].0
       ffffffffff600100-ffffffffff6003ff 0 [kernel].vsyscall_fn in kallsyms as:
      *ffffffffff600100-ffffffffff60012f 0 [kernel].2
       ffffffffff600400-ffffffffff6007ff 0 [kernel].vsyscall_1 in kallsyms as [kernel].6
       ffffffffff600800-ffffffffffffffff 0 [kernel].vsyscall_2 in kallsyms as [kernel].8
      Maps only in kallsyms:
       ffffffffff600130-ffffffffff6003ff 0 [kernel].4
      ---- end ----
      vmlinux symtab matches kallsyms: Ok
      [acme@doppio linux-2.6-tip]$
      
      In the above case we only know the name of the non contiguous kernel ranges in
      the address space when reading the symbol information from the ELF symtab in
      vmlinux.
      
      The /proc/kallsyms file lack this, we only notice they are separate because
      there are modules after the kernel and after that more kernel functions, so we
      need to have a module rbtree backed by the module .ko path to get symtabs in
      the vmlinux case.
      
      The tool uses it to match by address to emit appropriate warning, but don't
      considers this fatal.
      
      The .init.text and .exit.text ines, of course, aren't in kallsyms, so I left
      these cases just as extra info in verbose mode.
      
      The end of the sections also aren't in kallsyms, so we the symbols layer does
      another pass and sets the end addresses as the next map start minus one, which
      sometimes pads, causing harmless mismatches.
      
      But at least the symbols match, tested it by copying /proc/kallsyms to
      /tmp/kallsyms and doing changes to see if they were detected.
      
      This first test also should serve as a first stab at documenting the
      symbol library by providing a self contained example that exercises it
      together with comments about what is being done.
      
      More tests to check if actions done on a monitored app, like doing mmaps, etc,
      makes the kernel generate the expected events should be added next.
      
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      1c6a800c
  16. 19 4月, 2010 1 次提交
  17. 03 4月, 2010 1 次提交
  18. 23 3月, 2010 1 次提交
  19. 13 3月, 2010 1 次提交
  20. 12 3月, 2010 1 次提交
    • A
      perf report: Implement initial UI using newt · f9224c5c
      Arnaldo Carvalho de Melo 提交于
      Newt has widespread availability and provides a rather simple
      API as can be seen by the size of this patch.
      
      The work needed to support it will benefit other frontends too.
      
      In this initial patch it just checks if the output is a tty, if
      not it falls back to the previous behaviour, also if
      newt-devel/libnewt-dev is not installed the previous behaviour
      is maintaned.
      
      Pressing enter on a symbol will annotate it, ESC in the
      annotation window will return to the report symbol list.
      
      More work will be done to remove the special casing in
      color_fprintf, stop using fmemopen/FILE in the printing of
      hist_entries, etc.
      
      Also the annotation doesn't need to be done via spawning "perf
      annotate" and then browsing its output, we can do better by
      calling directly the builtin-annotate.c functions, that would
      then be moved to tools/perf/util/annotate.c and shared with perf
      top, etc
      
      But lets go by baby steps, this patch already improves perf
      usability by allowing to quickly do annotations on symbols from
      the report screen and provides a first experimentation with
      libnewt/TUI integration of tools.
      
      Tested on RHEL5 and Fedora12 X86_64 and on Debian PARISC64 to
      browse a perf.data file collected on a Fedora12 x86_64 box.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Avi Kivity <avi@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1268349164-5822-5-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f9224c5c
  21. 05 2月, 2010 1 次提交
  22. 31 1月, 2010 1 次提交
  23. 29 1月, 2010 1 次提交
    • T
      tools/perf/perf.c: Clean up trivial style issues · 4c574159
      Thiago Farina 提交于
      Checked with:
      ./../scripts/checkpatch.pl --terse --file perf.c
      
       perf.c: 51: ERROR: open brace '{' following function declarations go on the next line
       perf.c: 73: ERROR: "foo*** bar" should be "foo ***bar"
       perf.c:112: ERROR: space prohibited before that close parenthesis ')'
       perf.c:127: ERROR: space prohibited before that close parenthesis ')'
       perf.c:171: ERROR: "foo** bar" should be "foo **bar"
       perf.c:213: ERROR: "(foo*)" should be "(foo *)"
       perf.c:216: ERROR: "(foo*)" should be "(foo *)"
       perf.c:217: ERROR: space required before that '*' (ctx:OxV)
       perf.c:452: ERROR: do not initialise statics to 0 or NULL
       perf.c:453: ERROR: do not initialise statics to 0 or NULL
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Masami Hiramatsu <mhiramat@redhat.com>
      LKML-Reference: <1264633557-17597-7-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      4c574159
  24. 21 1月, 2010 1 次提交
    • A
      perf buildid-cache: Add new command to manage build-id cache · ef12a141
      Arnaldo Carvalho de Melo 提交于
      For now it just has operations to examine a given file, find its
      build-id and add or remove it to/from the cache.
      
      Useful, for instance, when adding binaries sent together with a
      perf.data file, so that we can add them to the cache and have
      the tools find it when resolving symbols.
      
      It'll also manage the size of the cache like 'ccache' does.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      LKML-Reference: <1264008525-29025-1-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ef12a141
  25. 28 12月, 2009 1 次提交
  26. 15 12月, 2009 1 次提交
    • A
      perf diff: Introduce tool to show performance difference · 86a9eee0
      Arnaldo Carvalho de Melo 提交于
      I guess it is enough to show some examples:
      
      [root@doppio linux-2.6-tip]# rm -f perf.data*
      [root@doppio linux-2.6-tip]# ls -la perf.data*
      ls: cannot access perf.data*: No such file or directory
      [root@doppio linux-2.6-tip]# perf record -f find / > /dev/null
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.062 MB perf.data (~2699 samples) ]
      [root@doppio linux-2.6-tip]# ls -la perf.data*
      -rw------- 1 root root 74440 2009-12-14 20:03 perf.data
      [root@doppio linux-2.6-tip]# perf record -f find / > /dev/null
      [ perf record: Woken up 1 times to write data ]
      [ perf record: Captured and wrote 0.062 MB perf.data (~2692 samples) ]
      [root@doppio linux-2.6-tip]# ls -la perf.data*
      -rw------- 1 root root 74280 2009-12-14 20:03 perf.data
      -rw------- 1 root root 74440 2009-12-14 20:03 perf.data.old
      [root@doppio linux-2.6-tip]# perf diff | head -5
         1        -34994580     /lib64/libc-2.10.1.so   _IO_vfprintf_internal
         2        -15307806         [kernel.kallsyms]   __kmalloc
         3    +1   +3665941     /lib64/libc-2.10.1.so   __GI_memmove
         4    +4  +23508995     /lib64/libc-2.10.1.so   _int_malloc
         5    +7  +38538813         [kernel.kallsyms]   __d_lookup
      [root@doppio linux-2.6-tip]# perf diff -p | head -5
         1        +1.00%     /lib64/libc-2.10.1.so   _IO_vfprintf_internal
         2                       [kernel.kallsyms]   __kmalloc
         3    +1             /lib64/libc-2.10.1.so   __GI_memmove
         4    +4             /lib64/libc-2.10.1.so   _int_malloc
         5    +7  -1.00%         [kernel.kallsyms]   __d_lookup
      [root@doppio linux-2.6-tip]# perf diff -v | head -5
         1        361449551 326454971 -34994580     /lib64/libc-2.10.1.so   _IO_vfprintf_internal
         2        151009241 135701435 -15307806         [kernel.kallsyms]   __kmalloc
         3    +1  101805328 105471269  +3665941     /lib64/libc-2.10.1.so   __GI_memmove
         4    +4   78041440 101550435 +23508995     /lib64/libc-2.10.1.so   _int_malloc
         5    +7   59536172  98074985 +38538813         [kernel.kallsyms]   __d_lookup
      [root@doppio linux-2.6-tip]# perf diff -vp | head -5
         1        9.00% 8.00% +1.00%     /lib64/libc-2.10.1.so   _IO_vfprintf_internal
         2        3.00% 3.00%                [kernel.kallsyms]   __kmalloc
         3    +1  2.00% 2.00%            /lib64/libc-2.10.1.so   __GI_memmove
         4    +4  2.00% 2.00%            /lib64/libc-2.10.1.so   _int_malloc
         5    +7  1.00% 2.00% -1.00%         [kernel.kallsyms]   __d_lookup
      [root@doppio linux-2.6-tip]#
      
      This should be enough for diffs where the system is non
      volatile, i.e. when one doesn't updates binaries.
      
      For volatile environments, stay tuned for the next perf tool
      feature: a buildid cache populated by 'perf record', managed by
      'perf buildid-cache' a-la ccache, and used by all the report
      tools.
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: "Paul E. McKenney" <paulmck@linux.vnet.ibm.com>
      Cc: Stephen Hemminger <shemminger@vyatta.com>
      Cc: Frédéric Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
      LKML-Reference: <1260828571-3613-3-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      86a9eee0
  27. 20 11月, 2009 1 次提交
    • L
      perf: Add 'perf kmem' tool · ba77c9e1
      Li Zefan 提交于
      This tool is mostly a perf version of kmemtrace-user.
      
      The following information is provided by this tool:
      
       - the total amount of memory allocated and fragmentation per
         call-site
      
       - the total amount of memory allocated and fragmentation per
         allocation
      
       - total memory allocated and fragmentation in the collected
         dataset - ...
      
      Sample output:
      
       # ./perf kmem record
       ^C
       # ./perf kmem --stat caller --stat alloc -l 10
      
       ------------------------------------------------------------------------------
       Callsite          | Total_alloc/Per |  Total_req/Per  |  Hit   | Fragmentation
       ------------------------------------------------------------------------------
       0xc052f37a        |   790528/4096   |   790528/4096   |    193 |    0.000%
       0xc0541d70        |   524288/4096   |   524288/4096   |    128 |    0.000%
       0xc051cc68        |   481600/200    |   481600/200    |   2408 |    0.000%
       0xc0572623        |   297444/676    |   297440/676    |    440 |    0.001%
       0xc05399f1        |    73476/164    |    73472/164    |    448 |    0.005%
       0xc05243bf        |    51456/256    |    51456/256    |    201 |    0.000%
       0xc0730d0e        |    31844/497    |    31808/497    |     64 |    0.113%
       0xc0734c4e        |    17152/256    |    17152/256    |     67 |    0.000%
       0xc0541a6d        |    16384/128    |    16384/128    |    128 |    0.000%
       0xc059c217        |    13120/40     |    13120/40     |    328 |    0.000%
       0xc0501ee6        |    11264/88     |    11264/88     |    128 |    0.000%
       0xc04daef0        |     7504/682    |     7128/648    |     11 |    5.011%
       0xc04e14a3        |     4216/191    |     4216/191    |     22 |    0.000%
       0xc05041ca        |     3524/44     |     3520/44     |     80 |    0.114%
       0xc0734fa3        |     2104/701    |     1620/540    |      3 |   23.004%
       0xc05ec9f1        |     2024/289    |     2016/288    |      7 |    0.395%
       0xc06a1999        |     1792/256    |     1792/256    |      7 |    0.000%
       0xc0463b9a        |     1584/144    |     1584/144    |     11 |    0.000%
       0xc0541eb0        |     1024/16     |     1024/16     |     64 |    0.000%
       0xc06a19ac        |      896/128    |      896/128    |      7 |    0.000%
       0xc05721c0        |      772/12     |      768/12     |     64 |    0.518%
       0xc054d1e6        |      288/57     |      280/56     |      5 |    2.778%
       0xc04b562e        |      157/31     |      154/30     |      5 |    1.911%
       0xc04b536f        |       80/16     |       80/16     |      5 |    0.000%
       0xc05855a0        |       64/64     |       36/36     |      1 |   43.750%
       ------------------------------------------------------------------------------
      
       ------------------------------------------------------------------------------
       Alloc Ptr         | Total_alloc/Per |  Total_req/Per  |  Hit   | Fragmentation
       ------------------------------------------------------------------------------
       0xda884000        |  1052672/4096   |  1052672/4096   |    257 |    0.000%
       0xda886000        |   262144/4096   |   262144/4096   |     64 |    0.000%
       0xf60c7c00        |    16512/128    |    16512/128    |    129 |    0.000%
       0xf59a4118        |    13120/40     |    13120/40     |    328 |    0.000%
       0xdfd4b2c0        |    11264/88     |    11264/88     |    128 |    0.000%
       0xf5274600        |     7680/256    |     7680/256    |     30 |    0.000%
       0xe8395000        |     5948/594    |     5464/546    |     10 |    8.137%
       0xe59c3c00        |     5748/479    |     5712/476    |     12 |    0.626%
       0xf4cd1a80        |     3524/44     |     3520/44     |     80 |    0.114%
       0xe5bd1600        |     2892/482    |     2856/476    |      6 |    1.245%
       ...               | ...             | ...             | ...    | ...
       ------------------------------------------------------------------------------
      
      SUMMARY
      =======
      Total bytes requested: 2333626
      Total bytes allocated: 2353712
      Total bytes wasted on internal fragmentation: 20086
      Internal fragmentation: 0.853375%
      
      TODO:
      - show sym+offset in 'callsite' column
      - show cross node allocation stats
      - collect more useful stats?
      - ...
      Signed-off-by: NLi Zefan <lizf@cn.fujitsu.com>
      Acked-by: NPekka Enberg <penberg@cs.helsinki.fi>
      Acked-by: NPeter Zijlstra <peterz@infradead.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Eduard - Gabriel Munteanu <eduard.munteanu@linux360.ro>
      Cc: linux-mm@kvack.org <linux-mm@kvack.org>
      LKML-Reference: <4B064AF5.9060208@cn.fujitsu.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      ba77c9e1
  28. 17 11月, 2009 1 次提交
    • A
      perf buildid-list: New plumbing command · c34984b2
      Arnaldo Carvalho de Melo 提交于
      With this we can list the buildids in a perf.data file so that
      we can pipe them to other, distro specific tools that from the
      buildids can figure out separate packages (foo-debuginfo) where
      we can find the matching symtabs so that perf report can do its
      job.
      
      E.g:
      
      [acme@doppio linux-2.6-tip]$ perf buildid-list | head -5
      8e08b117e5458ad3f85da16d42d0fc5cd21c5869
      520c2387a587cc5acfcf881e27dba1caaeab4b1f
      ec8dd400904ddfcac8b1c343263a790f977159dc
      7caedbca5a6d8ab39a7fe44bd28c07d3e14a3f3f
      379bb828fd08859dbea73279f04abefabc95a6a3
      [acme@doppio linux-2.6-tip]$ perf buildid-list -v | head -5
      8e08b117e5458ad3f85da16d42d0fc5cd21c5869 /sbin/init
      520c2387a587cc5acfcf881e27dba1caaeab4b1f /lib64/ld-2.10.1.so
      ec8dd400904ddfcac8b1c343263a790f977159dc /lib64/libc-2.10.1.so
      7caedbca5a6d8ab39a7fe44bd28c07d3e14a3f3f /sbin/udevd
      379bb828fd08859dbea73279f04abefabc95a6a3 /lib64/libdl-2.10.1.so
      [acme@doppio linux-2.6-tip]$
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      LKML-Reference: <1258396365-29217-5-git-send-email-acme@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      c34984b2
  29. 09 11月, 2009 1 次提交
  30. 08 11月, 2009 1 次提交
  31. 13 10月, 2009 3 次提交
    • V
      perf tools: Do not manually count string lengths · cfed95a6
      Vincent Legoll 提交于
      Use strlen & macros instead of manually counting string lengths as
      this is error prone and may lend to bugs.
      Signed-off-by: NVincent Legoll <vincent.legoll@gmail.com>
      Cc: Linus Torvalds <torvalds@osdl.org>
      LKML-Reference: <4727185d0910130118m5387058dndb02ac9b384af9f0@mail.gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      cfed95a6
    • M
      perf probe: Add perf probe command support without libdwarf · 23e8ec0d
      Masami Hiramatsu 提交于
      Enables 'perf probe' even if libdwarf is not installed. If libdwarf is
      not found, 'perf probe' just disables dwarf support. Users can use
      'perf probe' to set up new events by using kprobe_events format.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      Cc: Jim Keniston <jkenisto@us.ibm.com>
      Cc: Frank Ch. Eigler <fche@redhat.com>
      LKML-Reference: <20091007222830.1684.25665.stgit@dhcp-100-2-132.bos.redhat.com>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      23e8ec0d
    • M
      perf: Add perf probe subcommand, a kprobe-event setup helper · 4ea42b18
      Masami Hiramatsu 提交于
      Add perf probe subcommand that implements a kprobe-event setup helper
      to the perf command.
      This allows user to define kprobe events using C expressions (C line
      numbers, C function names, and C local variables).
      
      Usage
      -----
       perf probe [<options>] -P 'PROBEDEF' [-P 'PROBEDEF' ...]
      
          -k, --vmlinux <file>  vmlinux/module pathname
          -P, --probe <p|r:[GRP/]NAME FUNC[+OFFS][@src]|@src:LINE [ARG ...]>
                                probe point definition, where
      		p:	kprobe probe
      		r:	kretprobe probe
      		GRP:	Group name (optional)
      		NAME:	Event name
      		FUNC:	Function name
      		OFFS:	Offset from function entry (in byte)
      		SRC:	Source code path
      		LINE:	Line number
      		ARG:	Probe argument (local variable name or
      			kprobe-tracer argument format is supported.)
      
      Changes in v4:
       - Add _GNU_SOURCE macro for strndup().
      
      Changes in v3:
       - Remove -r option because perf always be used for online kernel.
       - Check malloc/calloc results.
      
      Changes in v2:
       - Check synthesized string length.
       - Rename perf kprobe to perf probe.
       - Use spaces for separator and update usage comment.
       - Check error paths in parse_probepoint().
       - Check optimized-out variables.
      Signed-off-by: NMasami Hiramatsu <mhiramat@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Ananth N Mavinakayanahalli <ananth@in.ibm.com>
      Cc: Jim Keniston <jkenisto@us.ibm.com>
      Cc: Frank Ch. Eigler <fche@redhat.com>
      LKML-Reference: <20091008211737.29299.14784.stgit@dhcp-100-2-132.bos.redhat.com>
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      4ea42b18
  32. 19 9月, 2009 1 次提交
    • A
      perf: Add the timechart tool · 10274989
      Arjan van de Ven 提交于
      timechart is a tool to visualize what is going on in the system.
      
      The user makes a trace of what is going on with
      
       > perf record --timechart /usr/bin/some_command
      
      and then can turn the output of this into an svg file
      
       > perf timechart
      
      which then can be viewed with any SVG view; inkscape works well
      enough for me.
      
      The idea behind timechart is to create a "infinitely zoomable"
      picture; something that has high level information on a 1:1 zoom
      level, but which exposes more details every time you zoom into a
      specific area.
      Signed-off-by: NArjan van de Ven <arjan@linux.intel.com>
      Acked-by: NPeter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <20090912130713.6a77bbc0@infradead.org>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      10274989
  33. 13 9月, 2009 1 次提交
    • I
      perf: Add 'perf sched' tool · 0a02ad93
      Ingo Molnar 提交于
      This turn-key tool allows scheduler measurements to be
      conducted and the results be displayed numerically.
      
      First baby step towards that goal: clone the new command off of
      perf trace.
      
      Fix a few other details along the way:
      
       - add (minimal) perf trace documentation
      
       - reorder a few places
      
       - list perf trace in the mainporcelain list as well
         as it's a very useful utility.
      
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      0a02ad93
  34. 17 8月, 2009 1 次提交
    • F
      perf tools: Add perf trace · 5f9c39dc
      Frederic Weisbecker 提交于
      This adds perf trace into the set of perf tools.
      
      It is written to fetch the tracepoint samples from perf events
      and display them, according to the events information given by
      the debugfs files through the util/trace* tools.
      
      It is a rough first shot and doesn't yet handle the cpu,
      timestamps fields and some other things.
      
      Example:
      
       perf record -f -e workqueue:workqueue_execution:record -F 1 -a
       perf trace
      
             kblockd/0-236   [000]     0.000000: workqueue_execution: thread=:236 func=cfq_kick_queue+0x0
           kondemand/0-360   [000]     0.000000: workqueue_execution: thread=:360 func=do_dbs_timer+0x0
           kondemand/0-360   [000]     0.000000: workqueue_execution: thread=:360 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
           kondemand/1-361   [000]     0.000000: workqueue_execution: thread=:361 func=do_dbs_timer+0x0
      
      Todo:
      
      - A lot of things!
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: "Luis Claudio R. Goncalves" <lclaudio@uudg.org>
      Cc: Clark Williams <williams@redhat.com>
      Cc: Jon Masters <jonathan@jonmasters.org>
      Cc: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
      Cc: Christoph Hellwig <hch@infradead.org>
      Cc: Xiao Guangrong <xiaoguangrong@cn.fujitsu.com>
      Cc: Zhaolei <zhaolei@cn.fujitsu.com>
      Cc: Li Zefan <lizf@cn.fujitsu.com>
      Cc: Lai Jiangshan <laijs@cn.fujitsu.com>
      Cc: Masami Hiramatsu <mhiramat@redhat.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: "Frank Ch. Eigler" <fche@redhat.com>
      Cc: Roland McGrath <roland@redhat.com>
      Cc: Jason Baron <jbaron@redhat.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Jiaying Zhang <jiayingz@google.com>
      Cc: Anton Blanchard <anton@samba.org>
      LKML-Reference: <1250518688-7207-4-git-send-email-fweisbec@gmail.com>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      5f9c39dc
  35. 23 7月, 2009 1 次提交
  36. 01 7月, 2009 1 次提交
    • I
      perf_counter tools: Add more warnings and fix/annotate them · f37a291c
      Ingo Molnar 提交于
      Enable -Wextra. This found a few real bugs plus a number
      of signed/unsigned type mismatches/uncleanlinesses. It
      also required a few annotations
      
      All things considered it was still worth it so lets try with
      this enabled for now.
      
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Mike Galbraith <efault@gmx.de>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      f37a291c