1. 21 Aug, 2012 2 commits
    • Ingo Molnar's avatar
      Merge tag 'perf-core-for-mingo' of... · bcada3d4
      Ingo Molnar authored
      Merge tag 'perf-core-for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/core
      
      Pull perf/core improvements and fixes from Arnaldo Carvalho de Melo:
      
       * Fix include order for bison/flex-generated C files, from Ben Hutchings
      
       * Build fixes and documentation corrections from David Ahern
      
       * Group parsing support, from Jiri Olsa
      
       * UI/gtk refactorings and improvements from Namhyung Kim
      
       * NULL deref fix for perf script, from Namhyung Kim
      
       * Assorted cleanups from Robert Richter
      
       * Let O= makes handle relative paths, from Steven Rostedt
      
       * perf script python fixes, from Feng Tang.
      
       * Improve 'perf lock' error message when the needed tracepoints
         are not present, from David Ahern.
      
       * Initial bash completion support, from Frederic Weisbecker
      
       * Allow building without libelf, from Namhyung Kim.
      
       * Support DWARF CFI based unwind to have callchains when %bp
         based unwinding is not possible, from Jiri Olsa.
      
       * Symbol resolution fixes, while fixing support PPC64 files with an .opt ELF
         section was the end goal, several fixes for code that handles all
         architectures and cleanups are included, from Cody Schafer.
      
       * Add a description for the JIT interface, from Andi Kleen.
      
       * Assorted fixes for Documentation and build in 32 bit, from Robert Richter
      
       * Add support for non-tracepoint events in perf script python, from Feng Tang
      
       * Cache the libtraceevent event_format associated to each evsel early, so that we
         avoid relookups, i.e. calling pevent_find_event repeatedly when processing
         tracepoint events.
      
         [ This is to reduce the surface contact with libtraceevents and make clear what
           is that the perf tools needs from that lib: so far parsing the common and per
           event fields. ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      bcada3d4
    • Ingo Molnar's avatar
      Merge branch 'tip/perf/core' of... · 26198c21
      Ingo Molnar authored
      Merge branch 'tip/perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/rostedt/linux-trace into perf/core
      
      Pull ftrace updates from Steve Rostedt:
      
      " This patch series extends ftrace function tracing utility to be
        more dynamic for its users. It allows for data passing to the callback
        functions, as well as reading regs as if a breakpoint were to trigger
        at function entry.
      
        The main goal of this patch series was to allow kprobes to use ftrace
        as an optimized probe point when a probe is placed on an ftrace nop.
        With lots of help from Masami Hiramatsu, and going through lots of
        iterations, we finally came up with a good solution. "
      Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
      26198c21
  2. 20 Aug, 2012 7 commits
  3. 17 Aug, 2012 7 commits
  4. 16 Aug, 2012 2 commits
  5. 15 Aug, 2012 2 commits
  6. 14 Aug, 2012 6 commits
    • Jiri Olsa's avatar
      perf test: Add automated tests for event group parsing · 905f5ee2
      Jiri Olsa authored
      Adding 5 more tests for new event group syntax. Tests are executed
      within the 'perf test parse' test suite.
      Reviewed-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ulrich Drepper <drepper@gmail.com>
      Link: http://lkml.kernel.org/n/tip-dmhsv8mpoksx2wp97balqiem@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      905f5ee2
    • Jiri Olsa's avatar
      perf tools: Enable grouping logic for parsed events · 6a4bb04c
      Jiri Olsa authored
      This patch adds a functionality that allows to create event groups
      based on the way they are specified on the command line. Adding
      functionality to the '{}' group syntax introduced in earlier patch.
      
      The current '--group/-g' option behaviour remains intact. If you
      specify it for record/stat/top command, all the specified events
      become members of a single group with the first event as a group
      leader.
      
      With the new '{}' group syntax you can create group like:
        # perf record -e '{cycles,faults}' ls
      
      resulting in single event group containing 'cycles' and 'faults'
      events, with cycles event as group leader.
      
      All groups are created with regards to threads and cpus. Thus
      recording an event group within a 2 threads on server with
      4 CPUs will create 8 separate groups.
      
      Examples (first event in brackets is group leader):
      
        # 1 group (cpu-clock,task-clock)
        perf record --group -e cpu-clock,task-clock ls
        perf record -e '{cpu-clock,task-clock}' ls
      
        # 2 groups (cpu-clock,task-clock) (minor-faults,major-faults)
        perf record -e '{cpu-clock,task-clock},{minor-faults,major-faults}' ls
      
        # 1 group (cpu-clock,task-clock,minor-faults,major-faults)
        perf record --group -e cpu-clock,task-clock -e minor-faults,major-faults ls
        perf record -e '{cpu-clock,task-clock,minor-faults,major-faults}' ls
      
        # 2 groups (cpu-clock,task-clock) (minor-faults,major-faults)
        perf record -e '{cpu-clock,task-clock} -e '{minor-faults,major-faults}' \
         -e instructions ls
      
        # 1 group
        # (cpu-clock,task-clock,minor-faults,major-faults,instructions)
        perf record --group -e cpu-clock,task-clock \
         -e minor-faults,major-faults -e instructions ls perf record -e
      '{cpu-clock,task-clock,minor-faults,major-faults,instructions}' ls
      
      It's possible to use standard event modifier for a group, which spans
      over all events in the group and updates each event modifier settings,
      for example:
      
        # perf record -r '{faults:k,cache-references}:p'
      
      resulting in ':kp' modifier being used for 'faults' and ':p' modifier
      being used for 'cache-references' event.
      Reviewed-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ulrich Drepper <drepper@gmail.com>
      Link: http://lkml.kernel.org/n/tip-ho42u0wcr8mn1otkalqi13qp@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6a4bb04c
    • Jiri Olsa's avatar
      perf tools: Add support to update event modifier · f5b1135b
      Jiri Olsa authored
      Adding support to update already defined event's attribute with
      event modifier. This change will allow to use group modifier as
      an update to the existing event modifiers.
      
      Adding 'add' parameter to the parse_events__modifier_event function.
      Calling it with 'add' = false/true, the event modifier is
      initialized/updated respectively.
      
      Added exclude_GH flag to evsel struct, because we need to remember
      if one of 'GH' modifiers was used for event. The reason is that the
      default settings for exclude_guest is 1 and during the group
      modifier processing we have no other way of knowing if it was set
      by default or by event modifier.
      
      Keeping the current behaviour, that any event/group modifier reset
      the defaults for exclude_host (0) and exclude_guest (1).
      Reviewed-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ulrich Drepper <drepper@gmail.com>
      Link: http://lkml.kernel.org/n/tip-8peaey3e2qc9dwtkvzbi4wmx@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      f5b1135b
    • Jiri Olsa's avatar
      perf tools: Add support to parse event group syntax · 89efb029
      Jiri Olsa authored
      Adding scanner/parser bits to parse event groups.
      
      The grammar for group is:
        groups:      groups ',' group | group
        group:       group_name '{' events '}' group_mod
        group_name:  name | empty
        group_mod:   ':' group_mods | empty
        group_mods:  event_mod
      
      It's possible to use standard event modifier as a modifier
      for group. It'll be used as an update to existing event
      modifiers.
      
      It's necessary to use quoting ("'\) when specifying group on
      command line, since {} characters are interpreted by most of
      the shells.
      
      It is now possible to specify groups in event syntax like:
      
        '{cycles,faults}'
         - anonymous group
      
        'group1{cycles,faults}
         - group with name 'group1'
      
        '{cycles,faults}:k
         - anonymous group with event modifier 'k'
      
        '{cpu-clock,task-clock},{minor-faults,major-faults}'
         - two anonymous groups
      
      The grouping functionality itself is coming shortly.
      Reviewed-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Acked-by: default avatarPeter Zijlstra <peterz@infradead.org>
      Cc: Andi Kleen <andi@firstfloor.org>
      Cc: Arnaldo Carvalho de Melo <acme@ghostprotocols.net>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Namhyung Kim <namhyung@kernel.org>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Thomas Gleixner <tglx@linutronix.de>
      Cc: Ulrich Drepper <drepper@gmail.com>
      Link: http://lkml.kernel.org/n/tip-p4j8bnvo879uokum4k4zk5q6@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      89efb029
    • Arnaldo Carvalho de Melo's avatar
      perf tools: Add missing files to build the python binding · a6191836
      Arnaldo Carvalho de Melo authored
      Changeset 0f6a3015:
      "perf tools: Support user regs and stack in sample parsing"
      
      uses hweight_long in evsel.c, so we need to drag util/hweight.c
      to the python binding.
      
      Ditto for ee8dd3ca:
      "perf tools: Change strlist to use the new rblist"
      
      where we need to add util/rblist.c.
      
      Now twatch.py works again:
      
       # export PYTHONPATH=~acme/git/build/perf/python/
       # ~acme/git/linux/tools/perf/python/twatch.py
       cpu:  4, pid: 23639, tid: 23639 { type: fork, pid: 30659, ppid: 23639, tid: 30659, ptid: 23639, time: 36287872076780}
       cpu:  5, pid: 30659, tid: 30659 { type: comm, pid: 30659, tid: 30659, comm: ls }
       cpu:  5, pid: 30659, tid: 30659 { type: exit, pid: 30659, ppid: 30659, tid: 30659, ptid: 30659, time: 36287873681539}
       cpu:  4, pid: 23639, tid: 23639 { type: fork, pid: 30660, ppid: 23639, tid: 30660, ptid: 23639, time: 36291720420480}
       cpu:  5, pid: 30659, tid: 30659 { type: exit, pid: 30659, ppid: 30659, tid: 30659, ptid: 30659, time: 36287873685714}
       cpu:  5, pid: 30660, tid: 30660 { type: comm, pid: 30660, tid: 30660, comm: git }
       ^C
       KeyboardInterrupt
      
      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>
      Link: http://lkml.kernel.org/n/tip-gmq82zp5blin9aml9g5tzokr@git.kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      a6191836
    • Namhyung Kim's avatar
      perf script: Fix a NULL pointer dereference · d0d39138
      Namhyung Kim authored
      If 'perf script --gen-script' was called with a perf.data which contains
      no tracepoint event, it'd segfault due to NULL pevent pointer. Fix it.
      Signed-off-by: default avatarNamhyung Kim <namhyung@kernel.org>
      Cc: Feng Tang <feng.tang@intel.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/1344909423-26384-1-git-send-email-namhyung@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      d0d39138
  7. 13 Aug, 2012 14 commits