1. 12 3月, 2011 2 次提交
    • A
      perf top: Remove redundant syme->origin field · 8b8ba4a9
      Arnaldo Carvalho de Melo 提交于
      We can get it from syme->map->dso->kernel (that should be renamed to
      origin, but leave this for another patch).
      
      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>
      8b8ba4a9
    • A
      perf top: Remove redundant perf_top->sym_counter · ec52d976
      Arnaldo Carvalho de Melo 提交于
      We can get that counter index from perf_top->sym_evsel->idx instead.
      
      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>
      ec52d976
  2. 10 3月, 2011 4 次提交
    • A
      perf header: Stop using 'self' · 1c0b04d1
      Arnaldo Carvalho de Melo 提交于
      Stop using this python/OOP convention, doesn't really helps. Will do
      more from time to time till we get it cleaned up in all of tools/perf.
      Suggested-by: NThomas Gleixner <tglx@linutronix.de>
      LKML-Reference: <new-submission>
      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 Gleixner <tglx@linutronix.de>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      1c0b04d1
    • A
      perf session: Use evlist/evsel for managing perf.data attributes · a91e5431
      Arnaldo Carvalho de Melo 提交于
      So that we can reuse things like the id to attr lookup routine
      (perf_evlist__id2evsel) that uses a hash table instead of the linear
      lookup done in the older perf_header_attr routines, etc.
      
      Also to make evsels/evlist more pervasive an API, simplyfing using the
      emerging perf lib.
      
      cc: Arun Sharma <arun@sharma-home.net>
      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>
      a91e5431
    • J
      perf top: Don't let events to eat up whole header line · 65472503
      Jiri Olsa 提交于
      Passing multiple events might force out information about pid/tid/cpu.
      Attached patch leaves 30 characters for this info at the expense of the
      events' names.
      
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Han Pingtian <phan@redhat.com>
      LKML-Reference: <1299528821-17521-3-git-send-email-jolsa@redhat.com>
      Signed-off-by: NJiri Olsa <jolsa@redhat.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      65472503
    • J
      perf top: Fix events overflow in top command · b9a46bba
      Jiri Olsa 提交于
      The snprintf function returns number of printed characters even if it
      cross the size parameter. So passing enough events via '-e' parameter
      will cause segmentation fault.
      
      It's reproduced by following command:
      
      perf top -e `perf list | grep Tracepoint | awk -F'[' '\
      {gsub(/[[:space:]]+/,"",$1);array[FNR]=$1}END{outputs=array[1];\
      for (i=2;i<=FNR;i++){ outputs=outputs "," array[i];};print outputs}'`
      
      Attached patch is adding SNPRINTF macro that provides the overflow check
      and returns actuall number of printed characters.
      Reported-by: NHan Pingtian <phan@redhat.com>
      Cc: Han Pingtian <phan@redhat.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      LKML-Reference: <1299528821-17521-2-git-send-email-jolsa@redhat.com>
      Signed-off-by: NJiri Olsa <jolsa@redhat.com>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      b9a46bba
  3. 07 3月, 2011 4 次提交
    • A
      perf report tui: Improve multi event session support · 7f0030b2
      Arnaldo Carvalho de Melo 提交于
      When multiple events were used in 'perf record', allow the user to
      choose which one is wanted before showing the per event histograms.
      
      Annotations will be performed on the chosen event.
      
      Allow going back and forth from event to event quickly using just the
      arrow keys and enter.
      
      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>
      Cc: William Cohen <wcohen@redhat.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      7f0030b2
    • A
      perf tools: Improve support for sessions with multiple events · e248de33
      Arnaldo Carvalho de Melo 提交于
      By creating an perf_evlist out of the attributes in the perf.data file
      header, so that we can use evlists and evsels when reading recorded
      sessions in addition to when we record sessions.
      
      More work is needed to allow tools to allow the user to select which
      events are wanted when browsing sessions, be it just one or a subset of
      them, aggregated or showed at the same time but with different
      indications on the UI to allow seeing workloads thru different views at
      the same time.
      
      But the overall goal/trend is to more uniformly use evsels and evlists.
      
      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>
      e248de33
    • A
      perf evlist: Split perf_evlist__id_hash · 3d3b5e95
      Arnaldo Carvalho de Melo 提交于
      The previous situation was to receive an fd from where to read the event
      ID.
      
      Spin off a routine for when we have the ID handy, not having to read it
      from some fd.
      
      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>
      3d3b5e95
    • A
      perf hists browser: Handle browsing empty hists tree · 60098917
      Arnaldo Carvalho de Melo 提交于
      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>
      60098917
  4. 06 3月, 2011 2 次提交
    • A
      perf hists: Remove needless global col lenght calcs · d7603d51
      Arnaldo Carvalho de Melo 提交于
      To support multiple events we need to do these calcs per 'struct hists'
      instance, and it turns out we already do that at:
      
      	__hists__add_entry
      		hists__inc_nr_entries
      			hists__calc_col_len
      
      for all the unfiltered hist_entry instances we stash in the rb tree, so
      trow away the dead code.
      
      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>
      d7603d51
    • A
      perf report tui: Fix multi event switching · a03f35ce
      Arnaldo Carvalho de Melo 提交于
      TAB/UNTAB were not hotkeys, so didn't exit hists__browse back to
      hists__tui_browse_tree, allowing just the first event to be browsed.
      Reported-by: NWilliam Cohen <wcohen@redhat.com>
      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>
      Cc: William Cohen <wcohen@redhat.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a03f35ce
  5. 04 3月, 2011 2 次提交
    • F
      perf: Fix undefined PyVarObject_HEAD_INIT in python 2.5 · cfff2d90
      Frederic Weisbecker 提交于
      PyVarObject_HEAD_INIT is undefined in python 2.5, resulting
      in a build crash:
      
      	util/python.c:81: attention : déclaration implicite de la fonction « «PyVarObject_HEAD_INIT» »
      	util/python.c:82: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:117: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:146: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:177: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:290: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:359: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:532: erreur: request for member «tp_name» in something not a structure or union
      	util/python.c:761: erreur: request for member «tp_name» in something not a structure or union
      	error: command 'gcc' failed with exit status 1
      	make: *** [python/perf.so] Erreur 1
      
      We can fix that by defining PyVarObject_HEAD_INIT as a wrapper on
      PyObject_HEAD_INIT, thanks to a trick found on biopython:
      https://github.com/biopython/biopython/commit/d4eaf57946c7b4c32eca8d18821edf32f83e300dSigned-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      cfff2d90
    • F
      perf: Fix missing strndup declaration · ff9ae1ba
      Frederic Weisbecker 提交于
      <ctype.h> is included first without _GNU_SOURCE, so it ends up
      including <string.h> without declaring strndup(). And further
      <string.h> declarations, even with _GNU_SOURCE defined, are
      of course without effect.
      
      Therefore:
      
      	util/strfilter.c: Dans la fonction «strfilter_node__new» :
      	util/strfilter.c:134: attention : déclaration implicite de la fonction « «strndup» »
      	util/strfilter.c:134: attention : incompatible implicit declaration of built-in function «strndup»
      	make: *** [util/strfilter.o] Erreur 1
      
      Just don't include ctype.h as it doesn't appear to be necessary
      anyway.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      ff9ae1ba
  6. 02 3月, 2011 1 次提交
    • F
      perf: Set filters before mmaping events · 0a102479
      Frederic Weisbecker 提交于
      We currently set the filters after we mmap the events, this is a
      race that let undesired events record themselves in the buffer before
      we had the time to set the filters.
      
      So set the filters before they can be recorded. That also librarizes
      the filters setting so that filtering can be done more easily
      from other tools than perf record later.
      Signed-off-by: NFrederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      0a102479
  7. 01 3月, 2011 5 次提交
    • A
      perf top tui: Wait till the first sample to refresh the screen. · 5807806a
      Arnaldo Carvalho de Melo 提交于
      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>
      5807806a
    • A
      perf top: Fix reporting of invalid --vmlinux · 374cfe56
      Arnaldo Carvalho de Melo 提交于
      Using ui__warning, that will, in --tui, show a window with the message,
      waiting for the user to press Ok.
      
      Also run exit_browser() to let newt do its final cleaning of the screen.
      
      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>
      374cfe56
    • A
      perf tui: Make ui__warning modal · a1ceb741
      Arnaldo Carvalho de Melo 提交于
      By taking the ui__lock so that no other screen updates take place while
      waiting for the user.
      
      That was happening when handling an invalid --vmlinux parameter in 'perf
      top --tui', with the screen refresh routine repainting the screen and
      removing the warning window.
      
      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>
      a1ceb741
    • A
      perf top browser: Handle empty active symbols list · 3166fc8f
      Arnaldo Carvalho de Melo 提交于
      Fixing a SEGV. An empty list could happen when not being able to resolve
      symbols, for instance when --vmlinux invalid-file is used.
      
      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>
      3166fc8f
    • A
      perf symbols: Fix vmlinux path when not using --symfs · a639dc64
      Arnaldo Carvalho de Melo 提交于
      The ec5761ea cset introduced the symfs feature with a bug for loading vmlinux
      files that ended up causing this failure:
      
      [root@emilia v2.6.38-rc5+]# strace -e trace=open perf top --vmlinux ./vmlinux 2>&1 | tail -3
      open("/./vmlinux", O_RDONLY)            = -1 ENOENT (No such file or directory)
      ./vmlinux with build id b9266bf40e98dadb5d43a2f3e95d3c5d4aff46dc not found, continuing without symbols
      The ./vmlinux file can't be used
      [root@emilia v2.6.38-rc5+]#
      
      Remove the extra slash, just like is done in the DSO__ORIG_DSO handling in
      dso__load() and other parts of the ec5761ea cset.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      Cc: David Ahern <daahern@cisco.com>
      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>
      a639dc64
  8. 28 2月, 2011 2 次提交
    • T
      perf timechart: Fix max number of cpus · 54b08f5f
      Thomas Renninger 提交于
      Currently numcpus is determined in pid_put_sample which is only
      called on sched_switch/sched_wakeup sample processing.
      
      On a machine with a lot cpus I often saw the last cpu missing.
      
      Check for (max) numcpus on every event happening and in the
      beginning. -> fixes the issue for me.
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: lenb@kernel.org
      LKML-Reference: <1298842606-55712-6-git-send-email-trenn@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      54b08f5f
    • T
      perf timechart: Fix black idle boxes in the title · e8530720
      Thomas Renninger 提交于
      This fix is needed for eye of gnome and firefox svg viewers.
      Only Inkscape can handle the broken case.
      
      Compare with the other svg_legenda_box declarations, looks
      like a typo slipped in at this place.
      Signed-off-by: NThomas Renninger <trenn@suse.de>
      Cc: Arjan van de Ven <arjan@linux.intel.com>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: lenb@kernel.org
      LKML-Reference: <1298842606-55712-5-git-send-email-trenn@suse.de>
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      e8530720
  9. 25 2月, 2011 3 次提交
    • A
      perf ui browser: Introduce ui_browser__show_title · b210b3bb
      Arnaldo Carvalho de Melo 提交于
      Needed because we were only showing the title in ui_browser__show,
      not in ui_browser__run, and in the run loop we may be calling other
      browsers that would then change the title, when we go back to the
      previous browser, we need to redraw the title.
      
      We could have done this as the Newt help line, with pop, etc, but I
      don't think its worth, doing it explicitely, when needed (some browsers
      may not use the title area at all) seems enough/more flexible.
      
      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>
      b210b3bb
    • A
      perf top browser: Fix up exit keys · c16bfe9a
      Arnaldo Carvalho de Melo 提交于
      The left key was exiting 'perf top --tui' when it really shouldn't, it
      was too easy to leave the live annotation window and then press one too
      many <- and get out of the tool altogether.
      
      Do just like the report TUI does, ignore the left key for exit and also
      ask the user when pressing ESC if that is really what is wanted.
      Reported-by: NMike Galbraith <efault@gmx.de>
      Suggested-by: NIngo Molnar <mingo@elte.hu>
      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>
      c16bfe9a
    • A
      perf hists: Print number of samples, not the period sum · 69cf0218
      Arnaldo Carvalho de Melo 提交于
      So that we match the header where we state the number of events with the
      "Samples" column when using 'perf report -n/--show-nr-samples':
      
       [root@emilia ~]# perf record -a sleep 1
       [ perf record: Woken up 1 times to write data ]
       [ perf record: Captured and wrote 0.111 MB perf.data (~4860 samples) ]
       [root@emilia ~]# perf report --stdio --show-nr-samples
       # Events: 11  cycles
       #
       # Overhead  Samples        Command       Shared Object                        Symbol
       # ........ ..........  ...........  ..................  ............................
       #
           16.65%          1        sleep  [kernel.kallsyms]   [k] unmap_vmas
           16.10%          1         perf  libpthread-2.12.so  [.] __pthread_cleanup_push_defer
           15.79%          2         perf  [kernel.kallsyms]   [k] format_decode
           12.88%          1  kworker/1:2  [kernel.kallsyms]   [k] cache_reap
           10.69%          1      swapper  [kernel.kallsyms]   [k] _raw_spin_lock
            7.55%          1        sleep  [kernel.kallsyms]   [k] prepare_exec_creds
            6.00%          1         perf  [jbd2]              [k] start_this_handle
            5.29%          1         perf  [kernel.kallsyms]   [k] seq_read
            4.75%          1         perf  [kernel.kallsyms]   [k] get_pid_task
            4.30%          1         perf  [kernel.kallsyms]   [k] _raw_spin_unlock_irqrestore
      
       #
       # (For a higher level overview, try: perf report --sort comm,dso)
       #
       [root@emilia ~]#
      Reported-by: NStephane Eranian <eranian@google.com>
      Reported-by: NCliff Wickman <cpw@sgi.com>
      Acked-by: NStephane Eranian <eranian@google.com>
      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>
      Cc: <stable@kernel.org>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      [ cherry-picked it from perf/core, as it has been reported by others as well. ]
      Signed-off-by: NIngo Molnar <mingo@elte.hu>
      69cf0218
  10. 23 2月, 2011 3 次提交
  11. 22 2月, 2011 4 次提交
    • A
      perf top: Live TUI Annotation · c97cf422
      Arnaldo Carvalho de Melo 提交于
      Now one has just to press the right key, 'a' or Enter on the main 'perf
      top --tui' screen to live annotate the symbol under the cursor.
      
      The annotate window starts centered on the hottest line (the one with
      most samples so far) then TAB and shift+TAB can be used to go to the
      prev/next hot line.
      
      Pressing 'H' at any point will center again the screen on the hottest
      line.
      
      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>
      c97cf422
    • A
      perf probe: Remove redundant checks · 8635bf6e
      Arnaldo Carvalho de Melo 提交于
      While fixing an error propagating problem in f809b25 I added two
      redundant checks.
      
      I did that because I didn't expect the checks to be on the while and for
      loop condition expression, where they are tested before we run the loop,
      where the 'ret' variable is set.
      
      So remove it from there and leave it just after it is actually set,
      eliminating unneded tests.
      Reported-by: NMasami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.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>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8635bf6e
    • A
      perf evsel: Fix inverted test for fixing up attr.inherit flag · e603dc15
      Arnaldo Carvalho de Melo 提交于
      The kernel refuses mmapping an event with the inherit flag set for
      something that is systemwide (cpu == -1), and the evsel layer got this
      reversed at some point, fix it.
      
      The symtom was that the --pid and --tid parameters for 'perf record' and
      'perf top' returned with -EINVAL, like:
      
       # /tmp/build-perf/perf record -v -fo/tmp/perf.data -p 1042
         Warning:  ... trying to fall back to cpu-clock-ticks
      
         Fatal: failed to mmap with 22 (Invalid argument)
      Reported-by: NDavid Ahern <dsahern@gmail.com>
      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>
      e603dc15
    • A
      perf probe: Fix error propagation leading to segfault · fbee632d
      Arnaldo Carvalho de Melo 提交于
      There are two hunks in this patch that stops probe processing as soon as one
      error is found, breaking out of loops, the other fix an error propagation that
      should return a negative error number but instead was returning the result of
      "ret < 0", which is 1 and thus made several error checks fail because they test
      agains < 0.
      
      The problem could be triggered by asking for a variable that was optimized out,
      fact that should stop the whole probe processing but instead was segfaulting
      while installing broken probes:
      
      [root@emilia ~]# probe perf_mmap:55 user_lock_limit
      Failed to find the location of user_lock_limit at this address.
       Perhaps, it has been optimized out.
      Failed to find 'user_lock_limit' in this function.
      Add new events:
        probe:perf_mmap      (on perf_mmap:55 with user_lock_limit)
        probe:perf_mmap_1    (on perf_mmap:55 with user_lock_limit)
      Segmentation fault (core dumped)
      [root@emilia ~]# perf probe -l
        probe:perf_mmap      (on perf_mmap:55@git/linux/kernel/perf_event.c with user_lock_limit)
        probe:perf_mmap_1    (on perf_mmap:55@git/linux/kernel/perf_event.c with user_lock_limit)
      [root@emilia ~]#
      
      After the fix:
      
      [root@emilia ~]# probe perf_mmap:55 user_lock_limit
      Failed to find the location of user_lock_limit at this address.
       Perhaps, it has been optimized out.
      Failed to find 'user_lock_limit' in this function.
        Error: Failed to add events. (-2)
      [root@emilia ~]#
      
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.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>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      fbee632d
  12. 18 2月, 2011 6 次提交
    • M
      perf tools: Makefile: Remove various and sundry cruft · a3d1ee10
      Michael Witten 提交于
      This commit squashes several commits that remove:
      
       unnecessary uname calls
       `sh -c'
       BUILT_INS and QUIET_BUILT_IN
      
          They have no effect, and the `fixup-builtins' and `check-builtins.sh'
          scripts don't even exist.
      
       RUNTIME_PREFIX
      
          It's currently never anything but unset, and it's apparently
          only meaningful when Microsoft Windows is the operating system
          (according to the source for git).
      
       TEST_PROGRAMS
       EXTRA_PROGRAMS
       unused SHELL_PATH_SQ portions
       unused test for V=2
       useless exports
      
          Only when `V' is undefined (that is, only when the value of `V'
          is empty) is `export V' performed, which just has the effect of
          placing the empty-valued variable `V' in the environment.
      
          The only other script to make use of `V' is `Documentation/Makefile',
          which only checks whether `V' is undefined (that is, whether the value
          of `V' is empty); hence, the `export V' has no effect whatsoever.
      
          Similarly, `export QUIET_GEN' is useless because it will only have
          a non-empty value when `V' has an empty-value, and when `V' has
          an empty-value, `QUIET_GEN' is always explicitly set in every
          script in which it is used.
      
          `DESTDIR' is only ever defined by the user via the environment
          or the command line, both of which are automatically exported
          to sub-make processes. Furthermore, no non-make sub-scripts
          make use of `DESTDIR' as an environment variable.
      
          No other scripts use `perfexec_instdir'.
      
       unused QUIET_SUBDIR{0,1}
       TAR and RPMBUILD
       PTHREAD_LIBS
       Maintainer's dist rules and commands
       distclean target
       Test suite coverage testing
       PRINT_DIR and NO_SUBDIR
       `configure' target
       NO_CURL
       @@PERF_VERSION@@ substitution
      
          Without the sed command, all of the rule's commands can be reduced
          to a single line that copies a file and sets the permissions properly
          in the process.
      
       `make test' echo line
       template_instdir
       PERF-BUILD-OPTIONS
       double-colon rules
      
          The use of double-colon rules seems misguided or vestigial git.
      
       Essentially hard-coded $(SCRIPTS) expansion
      Signed-off-by: NMichael Witten <mfwitten@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      a3d1ee10
    • M
      perf tools: Makefile: Remove tool-specific cruft · 0a54fb63
      Michael Witten 提交于
      This commit squashes several commits that remove:
      
       NO_C99_FORMAT
       CURLDIR and EXPATDIR
       NO_DEFLATE_BOUND
       CC_LD_DYNPATH and NO_R_TO_GCC_LINKER
       NO_PERL_MAKEMAKER
       INTERNAL_QSORT
       NO_EXTERNAL_GREP
       NO_PERL
       SCRIPT_PERL
       PERL_PATH_SQ
      Signed-off-by: NMichael Witten <mfwitten@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      0a54fb63
    • M
      perf tools: Makefile: Remove platform-specific cruft · 8796cb9d
      Michael Witten 提交于
      While it makes sense that this tool could be used on
      other platforms at least to parse data, there doesn't
      appear to be any real support for such usage.
      
      This commit squashes several commits that remove:
      
       SNPRINTF_RETURNS_BOGUS
       FREAD_READS_DIRECTORIES
       NO_D_{INO,TYPE}_IN_DIRENT
       NO_STRCASESTR
       NO_MEMMEM
       NO_STRTOUMAX and NO_STRTOULL
       NO_SETENV
       NO_UNSETENV
       NO_MKDTEMP
       NEEDS_LIBICONV
       NEEDS_SOCKET
       NO_MMAP
       NO_PTHREADS
       NO_PREAD
       NO_TRUSTABLE_FILEMODE
       NO_IPV6 and NO_SOCKADDR_STORAGE
       NO_ICONV and OLD_ICONV
       NO_NSEC, USE_NSEC, and USE_ST_TIMESPEC
       NO_ST_BLOCKS_IN_STRUCT_STAT
       NO_FINK and NO_DARWIN_PORTS
       NO_SYS_SELECT_H
       NO_HSTRERROR
       DIR_HAS_BSD_GROUP_SEMANTICS and FORCE_DIR_SET_GID
       NEEDS_NSL, NO_UINTMAX_T, NO_INET_{N,P}TON
       COMPAT_{CFLAGS,OBJS}
       Executable extension `X'
      Signed-off-by: NMichael Witten <mfwitten@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      8796cb9d
    • M
      perf tools: Makefile: Remove vestigial git-specific cruft · 006cdc32
      Michael Witten 提交于
      This commit squashes several commits that remove:
      
       NO_SYMLINK_HEAD
       NO_SVN_TESTS
       NO_FAST_WORKING_DIRECTORY
       USE_STDEV
       SHA1/SSL cruft
       makefile rules
      Signed-off-by: NMichael Witten <mfwitten@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      006cdc32
    • A
      perf list: Allow filtering list of events · 668b8788
      Arnaldo Carvalho de Melo 提交于
      The man page has the details, here are some examples:
      
      [root@emilia ~]# perf list *fault*  *:*wait*
      
      List of pre-defined events (to be used in -e):
        page-faults OR faults                      [Software event]
        minor-faults                               [Software event]
        major-faults                               [Software event]
        alignment-faults                           [Software event]
        emulation-faults                           [Software event]
      
        radeon:radeon_fence_wait_begin             [Tracepoint event]
        radeon:radeon_fence_wait_end               [Tracepoint event]
        writeback:wbc_writeback_wait               [Tracepoint event]
        writeback:wbc_balance_dirty_wait           [Tracepoint event]
        writeback:writeback_congestion_wait        [Tracepoint event]
        writeback:writeback_wait_iff_congested     [Tracepoint event]
        sched:sched_wait_task                      [Tracepoint event]
        sched:sched_process_wait                   [Tracepoint event]
        sched:sched_stat_wait                      [Tracepoint event]
        sched:sched_stat_iowait                    [Tracepoint event]
        syscalls:sys_enter_epoll_wait              [Tracepoint event]
        syscalls:sys_exit_epoll_wait               [Tracepoint event]
        syscalls:sys_enter_epoll_pwait             [Tracepoint event]
        syscalls:sys_exit_epoll_pwait              [Tracepoint event]
        syscalls:sys_enter_rt_sigtimedwait         [Tracepoint event]
        syscalls:sys_exit_rt_sigtimedwait          [Tracepoint event]
        syscalls:sys_enter_waitid                  [Tracepoint event]
        syscalls:sys_exit_waitid                   [Tracepoint event]
        syscalls:sys_enter_wait4                   [Tracepoint event]
        syscalls:sys_exit_wait4                    [Tracepoint event]
        syscalls:sys_enter_waitpid                 [Tracepoint event]
        syscalls:sys_exit_waitpid                  [Tracepoint event]
      [root@emilia ~]#
      Suggested-by: NIngo Molnar <mingo@elte.hu>
      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>
      668b8788
    • A
      perf report: Tell the user when a perf.data file has no samples · 74cfc17d
      Arnaldo Carvalho de Melo 提交于
      [root@emilia ~]# perf report --stdio
      The perf.data file has no samples!
      [root@emilia ~]#
      
      The TUI shows a popup warning message with the same message.
      Reported-by: NIngo Molnar <mingo@elte.hu>
      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: Steven Rostedt <rostedt@goodmis.org>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      LKML-Reference: <new-submission>
      Signed-off-by: NArnaldo Carvalho de Melo <acme@redhat.com>
      74cfc17d
  13. 17 2月, 2011 2 次提交
    • A
      perf record: Delay setting the header writing atexit call · 712a4b60
      Arnaldo Carvalho de Melo 提交于
      While testing the --filter option I noticed that we were writing lots of
      unneeded stuff to the perf.data header when the filter ioctl fails, so
      move the atexit(atexit_header) call to after we create the counters
      successfully.
      
      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>
      712a4b60
    • A
      perf hists: Print number of samples, not the period sum · fec9cbd1
      Arnaldo Carvalho de Melo 提交于
      So that we match the header where we state the number of events with the
      "Samples" column when using 'perf report -n/--show-nr-samples':
      
       [root@emilia ~]# perf record -a sleep 1
       [ perf record: Woken up 1 times to write data ]
       [ perf record: Captured and wrote 0.111 MB perf.data (~4860 samples) ]
       [root@emilia ~]# perf report --stdio --show-nr-samples
       # Events: 11  cycles
       #
       # Overhead  Samples        Command       Shared Object                        Symbol
       # ........ ..........  ...........  ..................  ............................
       #
           16.65%          1        sleep  [kernel.kallsyms]   [k] unmap_vmas
           16.10%          1         perf  libpthread-2.12.so  [.] __pthread_cleanup_push_defer
           15.79%          2         perf  [kernel.kallsyms]   [k] format_decode
           12.88%          1  kworker/1:2  [kernel.kallsyms]   [k] cache_reap
           10.69%          1      swapper  [kernel.kallsyms]   [k] _raw_spin_lock
            7.55%          1        sleep  [kernel.kallsyms]   [k] prepare_exec_creds
            6.00%          1         perf  [jbd2]              [k] start_this_handle
            5.29%          1         perf  [kernel.kallsyms]   [k] seq_read
            4.75%          1         perf  [kernel.kallsyms]   [k] get_pid_task
            4.30%          1         perf  [kernel.kallsyms]   [k] _raw_spin_unlock_irqrestore
      
       #
       # (For a higher level overview, try: perf report --sort comm,dso)
       #
       [root@emilia ~]#
      Reported-by: NStephane Eranian <eranian@google.com>
      Acked-by: NStephane Eranian <eranian@google.com>
      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>
      fec9cbd1