Skip to content
Snippets Groups Projects
  1. May 28, 2013
  2. Apr 01, 2013
    • Andi Kleen's avatar
      perf tools: Add support for weight v7 (modified) · 05484298
      Andi Kleen authored
      
      perf record has a new option -W that enables weightened sampling.
      
      Add sorting support in top/report for the average weight per sample and the
      total weight sum. This allows to both compare relative cost per event
      and the total cost over the measurement period.
      
      Add the necessary glue to perf report, record and the library.
      
      v2: Merge with new hist refactoring.
      v3: Fix manpage. Remove value check.
      Rename global_weight to weight and weight to local_weight.
      v4: Readd sort keys to manpage
      v5: Move weight to end
      v6: Move weight to template
      v7: Rename weight key.
      
      Original patch from Andi modified by Stephane Eranian <eranian@google.com>
      to include ONLY the weight supporting code and apply to pristine 3.8.0-rc4.
      
      Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Jiri Olsa <jolsa@redhat.com>
      Cc: Namhyung Kim <namhyung.kim@lge.com>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Link: http://lkml.kernel.org/r/1359040242-8269-6-git-send-email-eranian@google.com
      
      
      [ committer note: changed to cope with fc5871ed and the hists_link perf test entry ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      05484298
  3. Mar 15, 2013
  4. Feb 06, 2013
  5. Jan 31, 2013
  6. Jan 24, 2013
  7. Dec 11, 2012
    • Arnaldo Carvalho de Melo's avatar
      perf top: Use perf_evlist__config() · 2376c67a
      Arnaldo Carvalho de Melo authored
      Using struct perf_record_opts to specify how to configure the evsel
      perf_event_attrs.
      
      This gets top closer to record in the way it sets up evsels, with the
      aim of sharing more and more to the point that both will be a single
      utility.
      
      In this direction top now uses the same callchain option parsing as
      record and that brings DWARF callchains to top, something that was
      already available for record.
      
      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-u03o0bsrqcjgskciso3pvsjr@git.kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2376c67a
  8. Dec 10, 2012
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Introduce method to request IDs be used · 7a5a5ca5
      Arnaldo Carvalho de Melo authored
      When mmaping multiple events we need to find the right evsel that
      matches an event in the ring buffer.
      
      For that we need to set the PERF_FORMAT_ID bit in
      perf_event_attr.read_format so that when we read the event fds we get
      that id to then hash it and be able later to use perf_evlist__id2evsel
      to find the right evsel.
      
      We also need to set the PERF_SAMPLE_ID bit in
      perf_event_attr.sample_type to ask for that id to be stashed in each
      sample, so that we can demux it.
      
      So add a perf_evsel__set_sample_id() method to do those two things in
      one operation.
      
      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-1z4xcmbud30lamklfe80oopu@git.kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7a5a5ca5
    • Arnaldo Carvalho de Melo's avatar
      perf evsel: Update sample_size when setting sample_type bits · 7be5ebe8
      Arnaldo Carvalho de Melo authored
      We use evsel->sample_size to detect underflows in
      perf_evsel__parse_sample, but we were failing to update it after
      perf_evsel__init(), i.e. when we decide, after creating an evsel, that
      we want some extra field bit set.
      
      Fix it by introducing methods to set a bit that will take care of
      correctly adjusting evsel->sample_size.
      
      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-2ny5pzsing0dcth7hws48x9c@git.kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      7be5ebe8
  9. Dec 09, 2012
    • Arnaldo Carvalho de Melo's avatar
      perf top: Add missing newline on pr_err call · ee8d7787
      Arnaldo Carvalho de Melo authored
      The perf_event__process_sample function, when not finding a machine
      associated with a sample, was calling pr_err without a newline,
      garbling the screen on TUI mode due to a problem introduced by a
      recent ui_helpline patch.
      
      On --stdio it would just concatenate the messages for each sample with
      no machine associated, fix it by adding the newline.
      
      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-vuz88welqvp15c2uybd9osnz@git.kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      ee8d7787
  10. Nov 05, 2012
  11. Oct 24, 2012
    • David Ahern's avatar
      perf tools: Give user better message if precise is not supported · 2305c82f
      David Ahern authored
      
      Platforms (e.g., VM's) without support for precise mode get a confusing
      error message. e.g.,
      $ perf record -e cycles:p -a -- sleep 1
      
        Error: sys_perf_event_open() syscall returned with 95 (Operation not
        supported).  /bin/dmesg may provide additional information.
      
        No hardware sampling interrupt available. No APIC? If so then you can
        boot the kernel with the "lapic" boot parameter to force-enable it.
        sleep: Terminated
      
      which is not clear that precise mode might be the root problem. With this
      patch:
      
      $ perf record -e cycles:p -fo /tmp/perf.data -- sleep 1
        Error:
        'precise' request may not be supported. Try removing 'p' modifier
        sleep: Terminated
      
      v2: softened message to 'may not be' supported per Robert's suggestion
      
      Signed-off-by: default avatarDavid Ahern <dsahern@gmail.com>
      Cc: Ingo Molnar <mingo@kernel.org>
      Cc: Peter Zijlstra <peterz@infradead.org>
      Cc: Robert Richter <robert.richter@amd.com>
      Link: http://lkml.kernel.org/r/1347569955-54626-4-git-send-email-dsahern@gmail.com
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      2305c82f
  12. Oct 06, 2012
    • Arnaldo Carvalho de Melo's avatar
      perf machine: Carve up event processing specific from perf_tool · b0a7d1a0
      Arnaldo Carvalho de Melo authored
      The perf_tool vtable expects methods that receive perf_tool and
      perf_sample entries, but for tools not interested in doing any special
      processing on non PERF_RECORD_SAMPLE events, like 'perf top', and for
      those not using perf_session, like 'perf trace', they were using
      perf_event__process passing tool and sample paramenters that were just
      not used.
      
      Provide 'machine' methods for this purpose and make the perf_event
      ones use them.
      
      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-ot9cc6mt025o8kbngzckcrx9@git.kernel.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      b0a7d1a0
  13. Oct 04, 2012
  14. Oct 02, 2012
  15. Sep 26, 2012
  16. Sep 11, 2012
    • Irina Tirdea's avatar
      perf tools: Use __maybe_used for unused variables · 1d037ca1
      Irina Tirdea authored
      
      perf defines both __used and __unused variables to use for marking
      unused variables. The variable __used is defined to
      __attribute__((__unused__)), which contradicts the kernel definition to
      __attribute__((__used__)) for new gcc versions. On Android, __used is
      also defined in system headers and this leads to warnings like: warning:
      '__used__' attribute ignored
      
      __unused is not defined in the kernel and is not a standard definition.
      If __unused is included everywhere instead of __used, this leads to
      conflicts with glibc headers, since glibc has a variables with this name
      in its headers.
      
      The best approach is to use __maybe_unused, the definition used in the
      kernel for __attribute__((unused)). In this way there is only one
      definition in perf sources (instead of 2 definitions that point to the
      same thing: __used and __unused) and it works on both Linux and Android.
      This patch simply replaces all instances of __used and __unused with
      __maybe_unused.
      
      Signed-off-by: default avatarIrina Tirdea <irina.tirdea@intel.com>
      Acked-by: default avatarPekka Enberg <penberg@kernel.org>
      Cc: David Ahern <dsahern@gmail.com>
      Cc: Ingo Molnar <mingo@redhat.com>
      Cc: Namhyung Kim <namhyung.kim@lge.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Steven Rostedt <rostedt@goodmis.org>
      Link: http://lkml.kernel.org/r/1347315303-29906-7-git-send-email-irina.tirdea@intel.com
      
      
      [ committer note: fixed up conflict with a116e05d in builtin-sched.c ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      1d037ca1
  17. Aug 15, 2012
  18. Aug 14, 2012
    • 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.org
      
      
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      6a4bb04c
  19. Aug 11, 2012
    • Jiri Olsa's avatar
      perf tools: Support for DWARF CFI unwinding on post processing · 71ad0f5e
      Jiri Olsa authored
      
      This brings the support for DWARF cfi unwinding on perf post
      processing. Call frame informations are retrieved and then passed
      to libunwind that requests memory and register content from the
      applications.
      
      Adding unwind object to handle the user stack backtrace based
      on the user register values and user stack dump.
      
      The unwind object access the libunwind via remote interface
      and provides to it all the necessary data to unwind the stack.
      
      The unwind interface provides following function:
      	unwind__get_entries
      
      And callback (specified in above function) to retrieve
      the backtrace entries:
      	typedef int (*unwind_entry_cb_t)(struct unwind_entry *entry,
      					 void *arg);
      
      Signed-off-by: default avatarJiri Olsa <jolsa@redhat.com>
      Original-patch-by: default avatarFrederic Weisbecker <fweisbec@gmail.com>
      Cc: "Frank Ch. Eigler" <fche@redhat.com>
      Cc: Arun Sharma <asharma@fb.com>
      Cc: Benjamin Redelings <benjamin.redelings@nescent.org>
      Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com>
      Cc: Cyrill Gorcunov <gorcunov@openvz.org>
      Cc: Frank Ch. Eigler <fche@redhat.com>
      Cc: Frederic Weisbecker <fweisbec@gmail.com>
      Cc: Ingo Molnar <mingo@elte.hu>
      Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com>
      Cc: Paul Mackerras <paulus@samba.org>
      Cc: Peter Zijlstra <a.p.zijlstra@chello.nl>
      Cc: Robert Richter <robert.richter@amd.com>
      Cc: Stephane Eranian <eranian@google.com>
      Cc: Tom Zanussi <tzanussi@gmail.com>
      Cc: Ulrich Drepper <drepper@gmail.com>
      Link: http://lkml.kernel.org/r/1344345647-11536-12-git-send-email-jolsa@redhat.com
      
      
      [ Replaced use of perf_session by usage of perf_evsel ]
      Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
      71ad0f5e
  20. Aug 03, 2012
  21. Aug 02, 2012
Loading