Peter Zijlstra
ca8cdeef9c
perf_counter tools: report: Implement header output for --sort variants
...
Implement this style of header:
#
# Overhead Command File: Symbol
# ........ ....... ............
#
for the various --sort variants as well.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-28 11:47:02 +02:00
Ingo Molnar
d3e78ee3d0
perf_counter: Fix perf_counter_init_task() on !CONFIG_PERF_COUNTERS
...
Pointed out by compiler warnings:
tip/include/linux/perf_counter.h:644: warning: no return statement in function returning non-void
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-28 11:42:16 +02:00
Ingo Molnar
55717314c4
pref_counter: tools: report: Robustify in case of weird events
...
This error condition:
aldebaran:~/linux/linux/Documentation/perf_counter> perf report
dso__load_sym: cannot get elf header.
failed to open: /etc/ld.so.cache
problem processing PERF_EVENT_MMAP, bailing out
caused the profile to be very short - as the error was at the beginning
of the file and we bailed out completely.
Be more permissive and consider the event broken instead.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 22:19:58 +02:00
Ingo Molnar
2d65537ee7
pref_counter: tools: report: Add header printout & prettify
...
Old default output:
3.12% perf-report [.] ./perf-report: dsos__find
2.44% perf-report [k] kernel: kallsyms_expand_symbol
2.28% :4483 [.] <unknown>: <unknown>
2.05% :4174 [k] kernel: _spin_lock_irqsave
2.01% perf-report [k] kernel: vsnprintf
1.92% perf-report [k] kernel: format_decode
1.92% :4438 [k] kernel: _spin_lock
New default output:
#
# Overhead Command File: Symbol
# ........ ....... ............
#
6.54% perf [k] kernel: kallsyms_expand_symbol
6.26% perf [.] /home/mingo/tip/Documentation/perf_counter/perf: dso__insert_symbol
4.76% perf [.] /home/mingo/tip/Documentation/perf_counter/perf: hex2long
4.55% perf [k] kernel: number
4.48% perf [k] kernel: format_decode
4.09% perf [k] kernel: vsnprintf
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182101.229504802@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:40:47 +02:00
Peter Zijlstra
55e5ec41a9
pref_counter: tools: report: Add dso sorting
...
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182101.229504802@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:15 +02:00
Peter Zijlstra
992444b173
perf_counter: tools: report: Add comm sorting
...
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182101.129302022@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:14 +02:00
Peter Zijlstra
37f440cba2
pref_counter: tools: report: Add --sort option
...
option parsing for dynamic sorting.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182101.041817692@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:14 +02:00
Peter Zijlstra
1aa1673823
perf_counter: tools: report: Dynamic sort/print bits
...
Make the sorting and printing dynamic.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182100.921953817@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:13 +02:00
Peter Zijlstra
e7fb08b1d0
perf_counter: tools: report: Rework histogram code
...
In preparation for configurable sorting, rework the histgram code a bit.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182100.796410098@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:13 +02:00
Peter Zijlstra
450aaa2b2a
perf_counter: tools: report: Add vmlinux support
...
Allow to use vmlinux instead of kallsyms.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Mike Galbraith <efault@gmx.de >
LKML-Reference: <20090527182100.740018486@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 21:44:12 +02:00
Peter Zijlstra
b7a16eac5e
perf_counter: tools: /usr/lib/debug%s.debug support
...
Some distros seem to store debuginfo in weird places.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 14:54:29 +02:00
Ingo Molnar
d716fba49c
perf report: Remove <ctype.h> include
...
Pekka reported build failure in builtin-report.c:
CC builtin-report.o
In file included from builtin-report.c:7:
/usr/include/ctype.h:102: error: expected expression before token
And observed:
| Removing #include <ctype.h> from builtin-report.c makes the problem
| go away. I am running Ubuntu 9.04 that has gcc 4.3.3 and libc 2.9.
Reported-by: Pekka J Enberg <penberg@cs.helsinki.fi >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 13:19:59 +02:00
Mike Galbraith
ef65b2a0b3
perf record: Fix the profiling of existing pid or whole box
...
Perf record bails if no command argument is provided, so you can't use
naked -a or -p to profile a running task or the whole box.
Allow foreground profiling of an existing pid or the entire system.
[ Impact: fix command option handling bug ]
Signed-off-by: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 12:31:03 +02:00
Ingo Molnar
a930d2c0d0
perf_counter tools: Add built-in pager support
...
Add Git's pager.c (and sigchain) code. A command only
has to call setup_pager() to get paged interactive
output.
Non-interactive (redirected, command-piped, etc.) uses
are not affected.
Update perf-report to make use of this.
[ Impact: new feature ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:59:00 +02:00
Ingo Molnar
23ac9cbed8
perf_counter tools: Rename output.perf to perf.data
...
output.perf is only output to perf-record - it's input to
perf-report. So change it to a more direction-neutral name.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:33:18 +02:00
Ingo Molnar
16f762a2ac
perf_counter tools: Introduce stricter C code checking
...
Tighten up our C code requirements:
- disallow warnings
- disallow declarations-mixed-with-statements
- require proper prototypes
- require C99 (with gcc extensions)
Fix up a ton of problems these measures unearth:
- unused functions
- needlessly global functions
- missing prototypes
- code mixed with declarations
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20090526222155.GJ4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 08:10:35 +02:00
Arnaldo Carvalho de Melo
815e777f91
perf report: Show the IP only in --verbose mode
...
perf: report should show the IP only in --verbose mode
[acme@emilia ~]$ perf report | head
4.95 find [k] _spin_lock
2.19 find [k] ext3fs_dirhash [ext3]
1.87 find [k] __rcu_read_lock
1.86 find [k] _atomic_dec_and_lock
1.86 find [.] /lib64/libc-2.5.so: __GI_strlen
1.85 find [k] __kmalloc
1.62 find [.] /lib64/libc-2.5.so: vfprintf
1.59 find [k] __rcu_read_unlock
1.55 find [k] __d_lookup
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20090526224614.GK4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:10:37 +02:00
Ingo Molnar
af83632f98
perf report: Only load text symbols from kallsyms, fix
...
- allow 'W' symbols too
- Convert initializations to C99 style
- whitespace cleanups
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20090526222155.GJ4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:10:37 +02:00
Arnaldo Carvalho de Melo
03f6316d32
perf report: Only load text symbols from kallsyms
...
Just like we do for userspace when reading the symtab, reducing the
number of entries we insert on the symbols rbtree.
Before:
[acme@emilia ~]$ rm -f perf_report.perf ; perf record -o perf_report.perf perf stat perf report > /dev/null
Performance counter stats for 'perf':
218.138382 task clock ticks (msecs)
4 context switches (events)
8 CPU migrations (events)
2136 pagefaults (events)
32746212 CPU cycles (events) (scaled from 67.04%)
11961102 instructions (events) (scaled from 66.19%)
49841 cache references (events) (scaled from 21.96%)
13777 cache misses (events) (scaled from 21.98%)
Wall-clock time elapsed: 218.702477 msecs
[acme@emilia ~]$ perf report -i perf_report.perf | head
11.06 perf [.] 0x00000000000057cb /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__find_symbol
9.15 perf [.] 0x00000000000056a0 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__insert_symbol
8.72 perf [k] 0xffffffff8101b1d2 intel_pmu_enable_all
8.51 perf [.] 0x0000000000006672 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: thread__symbol_incnew
3.83 perf [k] 0xffffffff811cfc5a vsnprintf
3.40 perf [.] 0x0000000000005e33 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex
3.40 perf [.] 0x0000000000005ec7 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex2long
3.19 perf [k] 0xffffffff811ce1c1 number
2.77 perf [.] 0x0000000000006869 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: threads__findnew
2.77 perf [.] 0x000000000000fde3 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: rb_insert_color
[acme@emilia ~]$
After:
acme@emilia ~]$ rm -f perf_report.perf ; perf record -o perf_report.perf perf stat perf report > /dev/null
Performance counter stats for 'perf':
190.228511 task clock ticks (msecs)
4 context switches (events)
7 CPU migrations (events)
1625 pagefaults (events)
29578745 CPU cycles (events) (scaled from 66.92%)
10516914 instructions (events) (scaled from 66.47%)
44015 cache references (events) (scaled from 22.04%)
8248 cache misses (events) (scaled from 22.07%)
Wall-clock time elapsed: 190.816096 msecs
[acme@emilia ~]$ perf report -i perf_report.perf | head
15.99 perf [.] 0x00000000000057a9 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__find_symbol
10.87 perf [.] 0x000000000000674d /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: thread__symbol_incnew
8.74 perf [k] 0xffffffff8101b1d2 intel_pmu_enable_all
5.54 perf [.] 0x0000000000005e42 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex
4.48 perf [.] 0x0000000000005ebe /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex2long
4.48 perf [k] 0xffffffff811cfba0 vsnprintf
3.84 perf [.] 0x00000000000056b4 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__insert_symbol
3.62 perf [.] 0x00000000000068d0 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: threads__findnew
3.20 perf [k] 0xffffffff811ce0b3 number
2.56 perf [.] 0x0000000000006d78 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: __cmd_report
[acme@emilia ~]$
[ Impact: optimization ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20090526222155.GJ4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:10:36 +02:00
Arnaldo Carvalho de Melo
d8d1656ee1
perf report: Use hex2long instead of sscanf
...
Before:
[acme@emilia ~]$ perf record -o perf_report.perf perf stat perf report > /dev/null
Performance counter stats for 'perf':
245.414985 task clock ticks (msecs)
6 context switches (events)
6 CPU migrations (events)
2108 pagefaults (events)
37493013 CPU cycles (events) (scaled from 67.04%)
13576789 instructions (events) (scaled from 66.76%)
57931 cache references (events) (scaled from 21.96%)
12263 cache misses (events) (scaled from 21.98%)
Wall-clock time elapsed: 246.575587 msecs
[acme@emilia ~]$ perf report -i perf_report.perf | head
12.15 perf [.] 0x000000000005432a /lib64/libc-2.5.so: _IO_vfscanf_internal
9.38 perf [k] 0xffffffff8101b1d2 intel_pmu_enable_all
8.53 perf [.] 0x00000000000056b8 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__insert_symbol
6.61 perf [.] 0x00000000000057cb /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__find_symbol
5.33 perf [k] 0xffffffff811ce082 number
4.69 perf [.] 0x0000000000034829 /lib64/libc-2.5.so: ____strtoull_l_internal
4.48 perf [.] 0x0000000000006505 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: thread__symbol_incnew
3.41 perf [.] 0x000000000000fce6 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: rb_insert_color
3.20 perf [k] 0xffffffff811cfc01 vsnprintf
2.99 perf [k] 0xffffffff811ce5e8 format_decode
After:
[acme@emilia ~]$ perf record -o perf_report.perf perf stat perf report > /dev/null
Performance counter stats for 'perf':
218.186805 task clock ticks (msecs)
4 context switches (events)
7 CPU migrations (events)
2133 pagefaults (events)
32735365 CPU cycles (events) (scaled from 67.04%)
11952309 instructions (events) (scaled from 66.26%)
50314 cache references (events) (scaled from 21.96%)
13228 cache misses (events) (scaled from 21.98%)
Wall-clock time elapsed: 218.810451 msecs
[acme@emilia ~]$ perf report -i perf_report.perf | head
10.68 perf [.] 0x000000000000578d /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__find_symbol
9.62 perf [.] 0x00000000000065f7 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: thread__symbol_incnew
9.40 perf [.] 0x00000000000056b4 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: dso__insert_symbol
9.19 perf [k] 0xffffffff8101b1d2 intel_pmu_enable_all
5.13 perf [.] 0x0000000000005ec7 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex2long
4.49 perf [k] 0xffffffff81083808 kallsyms_expand_symbol
3.85 perf [k] 0xffffffff811ce2c1 number
3.63 perf [.] 0x0000000000005e81 /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: hex
2.99 perf [.] 0x000000000000fd5b /home/acme/git/linux-2.6-tip/Documentation/perf_counter/perf: rb_insert_color
2.99 perf [k] 0xffffffff811cf251 string
[acme@emilia ~]$
[ Impact: optimization ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
Cc: Steven Rostedt <rostedt@goodmis.org >
LKML-Reference: <20090526222057.GI4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-27 09:10:35 +02:00
Arnaldo Carvalho de Melo
3a4b8cc70b
perf report: Sort output by symbol usage
...
[acme@emilia ~]$ perf record find / > /dev/null 2>&1
[acme@emilia ~]$ perf stat perf report | head -20
4.95 find [k] 0xffffffff81393d65 _spin_lock
3.89 find [.] 0x000000000000af89 /usr/bin/find: <unknown>
2.19 find [k] 0xffffffffa00518e0 ext3fs_dirhash
1.87 find [k] 0xffffffff810a6cea __rcu_read_lock
1.86 find [k] 0xffffffff811c7312 _atomic_dec_and_lock
1.86 find [.] 0x00000000000782ab /lib64/libc-2.5.so: __GI_strlen
1.85 find [k] 0xffffffff810fedfb __kmalloc
1.62 find [.] 0x00000000000430ff /lib64/libc-2.5.so: vfprintf
1.59 find [k] 0xffffffff810a6d6d __rcu_read_unlock
1.55 find [k] 0xffffffff81119395 __d_lookup
1.39 find [.] 0x0000000000071b40 /lib64/libc-2.5.so: _int_malloc
1.30 find [k] 0xffffffffa031c4fc nfs_do_filldir
1.21 find [k] 0xffffffff811876a5 avc_has_perm_noaudit
1.15 find [k] 0xffffffff810fef62 kmem_cache_alloc
1.07 find [k] 0xffffffff811d03fb copy_user_generic_string
1.03 find [k] 0xffffffffa0043882 ext3_htree_store_dirent
0.99 find [k] 0xffffffff81393ebb _spin_lock_bh
0.98 find [k] 0xffffffffa03319a2 nfs3_decode_dirent
0.97 find [k] 0xffffffff8100bf20 system_call
0.92 find [k] 0xffffffff8139437e _spin_unlock
Performance counter stats for 'perf':
244.278972 task clock ticks (msecs)
8 context switches (events)
9 CPU migrations (events)
2104 pagefaults (events)
35329669 CPU cycles (events) (scaled from 75.40%)
13740366 instructions (events) (scaled from 75.49%)
59073 cache references (events) (scaled from 24.60%)
196 cache misses (events) (scaled from 24.51%)
Wall-clock time elapsed: 246.060717 msecs
[acme@emilia ~]$
[acme@emilia ~]$ grep "model name" /proc/cpuinfo | head -1
model name : Intel(R) Xeon(R) CPU E5405 @ 2.00GHz
[acme@emilia ~]$ grep "model name" /proc/cpuinfo | wc -l
8
[acme@emilia ~]$
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Steven Rostedt <rostedt@goodmis.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <20090526191904.GH4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 21:26:30 +02:00
Peter Zijlstra
6142f9ec10
perf report: More robust error handling
...
Don't let funny events confuse us, stick to what we know and
try to find sensible data again.
If we find an unknown event, check we're still u64 aligned, and
increment by one u64. This ensures we're bound to happen upon a
valid event soon.
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 20:17:46 +02:00
Ingo Molnar
f49515b157
perf report: add more debugging
...
Add the offset of the file we are analyzing, and the size of the record.
In case of problems it's easier to see where the parser lost track.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 20:22:56 +02:00
Ingo Molnar
3e70611460
perf report: add counter for unknown events
...
Add a counter for unknown event records.
[ Impact: improve debugging ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 18:53:17 +02:00
Ingo Molnar
97b07b699b
perf report: add --dump-raw-trace option
...
To help the inspection of various data files, implement an ASCII dump
method that just dumps the records as they are read in - then we exit.
[ Impact: new feature ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 18:48:58 +02:00
Arnaldo Carvalho de Melo
abd54f6862
perf: Don't assume /proc/kallsyms is ordered
...
perf: Don't assume /proc/kallsyms is ordered
Since we _are_ ordering it by the symbol start, just traverse the
freshly built rbtree setting the prev->end members to curr->start - 1.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <20090526152134.GF4424@ghostprotocols.net >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 17:36:13 +02:00
Arnaldo Carvalho de Melo
59d81029b6
perf report: Fix kernel symbol resolution
...
kallsyms have just the symbol start, so we need to read two lines
to get the len.
[ Impact: fix incorrect kernel symbol display in perf report ]
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 16:19:05 +02:00
Peter Zijlstra
f17e04afaf
perf report: Fix ELF symbol parsing
...
[ Impact: fix DSO symbol output in perf report ]
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 16:18:43 +02:00
Mike Galbraith
db20c00312
perf top: fix typo in -d option
...
Clean up copy/paste options parsing conversion error.
[ Impact: reactivate -d option ]
Signed-off-by: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 15:25:34 +02:00
Mike Galbraith
f91183fe37
perf top: Remove leftover NMI/IRQ bits
...
79202b removed IRQ/NMI mode selection, so remove it from
perf top as well.
[ Impact: cleanup ]
Signed-off-by: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 15:25:34 +02:00
Ingo Molnar
0bec253c81
perf report: Add help/manpage
...
Add a (minimal) manpage for perf report.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:11:57 +02:00
Ingo Molnar
53cb8bc2a3
perf record: Convert to Git option parsing
...
Remove getopt usage and use Git's much more advanced and more compact
command option library.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:05:27 +02:00
Peter Zijlstra
f3e08c5341
perf report: Fix segfault on unknown symbols
...
Ingo reported:
> Program received signal SIGSEGV, Segmentation fault.
> 0x0000003e25080f80 in strlen () from /lib64/libc.so.6
> Missing separate debuginfos, use: debuginfo-install elfutils.x86_64
> glibc.x86_64 zlib.x86_64
> (gdb) bt
> #0 0x0000003e25080f80 in strlen () from /lib64/libc.so.6
> #1 0x0000003e2506954e in fputs () from /lib64/libc.so.6
> #2 0x00000000004059e8 in cmd_report (argc=<value optimized out>,
> argv=<value optimized out>) at builtin-report.c:521
> #3 0x0000000000402dad in handle_internal_command (argc=1, argv=0x7fffe1218e30)
> at perf.c:226
> #4 0x0000000000402f6d in main (argc=1, argv=0x7fffe1218e30) at perf.c:324
> (gdb)
Signed-off-by Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:53:05 +02:00
Arnaldo Carvalho de Melo
ce7e43653b
perf_counter: Use rb_tree for symhists and threads in report
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:55 +02:00
Arnaldo Carvalho de Melo
040e603412
perf_counter: Add our private copy of list.h
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:55 +02:00
Arnaldo Carvalho de Melo
35a50c8a20
perf_counter: Use rb_trees in perf report
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:55 +02:00
Arnaldo Carvalho de Melo
62eb93905b
perf_counter: Implement dso__load using libelf
...
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:53 +02:00
Ingo Molnar
fd4242bb35
perf_counter tools: remove the standalone perf-report utility
...
With a built-in 'perf report' command now available, remove the
standalone implementation for good.
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:53 +02:00
Arnaldo Carvalho de Melo
8fa66bdcc8
perf_counter: First part of 'perf report' conversion to C + elfutils
...
Integrate perf-report into 'perf', as builtin-report.c.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 13:52:53 +02:00
Ingo Molnar
b456bae0ff
perf top: Convert to Git option parsing
...
Remove getopt usage and use Git's much more advanced and more compact
command option library.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 12:33:04 +02:00
Ingo Molnar
5242519b02
perf stat: Convert to Git option parsing
...
Remove getopt usage and use Git's much more advanced and more compact
command option library.
Extend the event parser library with the extensions that were in
perf-stat before.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 11:59:34 +02:00
Ingo Molnar
8ad8db3788
perf_counter tools: Librarize event string parsing
...
Extract the event string parser from builtin-record.c, and
librarize it - to be reused in other commands.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 11:26:34 +02:00
Ingo Molnar
0e9b20b8a1
perf record: Convert to Git option parsing
...
Remove getopt usage and use Git's much more advanced and more compact
command option library.
Git's library (util/parse-options.[ch]) constructs help texts and
error messages automatically, and has a number of other convenience
features as well.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 11:26:32 +02:00
Ingo Molnar
4e97ddf09e
perf stat: Remove unused variable
...
[ Impact: cleanup ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 10:08:19 +02:00
Ingo Molnar
69aa48ab82
perf record: Straighten out argv types
...
[ Impact: cleanup ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 10:05:56 +02:00
Ingo Molnar
329d876d6f
perf_counter: Initialize ->oncpu properly
...
This shouldnt matter normally (and i have not seen any
misbehavior), because active counters always have a
proper ->oncpu value - but nevertheless initialize the
field properly to -1.
[ Impact: cleanup ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 09:54:13 +02:00
Ingo Molnar
aaba98018b
perf_counter, x86: Make NMI lockups more robust
...
We have a debug check that detects stuck NMIs and returns with
the PMU disabled in the global ctrl MSR - but i managed to trigger
a situation where this was not enough to deassert the NMI.
So clear/reset the full PMU and keep the disable count balanced when
exiting from here. This way the box produces a debug warning but
stays up and is more debuggable.
[ Impact: in case of PMU related bugs, recover more gracefully ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 09:52:03 +02:00
Ingo Molnar
79202ba9ff
perf_counter, x86: Fix APIC NMI programming
...
My Nehalem box locks up in certain situations (with an
always-asserted NMI causing a lockup) if the PMU LVT
entry is programmed between NMI and IRQ mode with a
high frequency.
Standardize exlusively on NMIs instead.
[ Impact: fix lockup ]
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Marcelo Tosatti <mtosatti@redhat.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: Thomas Gleixner <tglx@linutronix.de >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 09:49:28 +02:00
Paul Mackerras
8a7b8cb91f
perf_counter: powerpc: Implement interrupt throttling
...
This implements interrupt throttling on powerpc. Since we don't have
individual count enable/disable or interrupt enable/disable controls
per counter, this simply sets the hardware counter to 0, meaning that
it will not interrupt again until it has counted 2^31 counts, which
will take at least 2^30 cycles assuming a maximum of 2 counts per
cycle. Also, we set counter->hw.period_left to the maximum possible
value (2^63 - 1), so we won't report overflows for this counter for
the forseeable future.
The unthrottle operation restores counter->hw.period_left and the
hardware counter so that we will once again report a counter overflow
after counter->hw.irq_period counts.
[ Impact: new perfcounters robustness feature on PowerPC ]
Signed-off-by: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
LKML-Reference: <18971.35823.643362.446774@cargo.ozlabs.ibm.com >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-26 09:43:59 +02:00
Ingo Molnar
0127c3ea08
perf_counter: fix warning & lockup
...
- remove bogus warning
- fix wakeup from NMI path lockup
- also fix up whitespace noise in perf_counter.h
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <20090525153931.703093461@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 22:02:23 +02:00