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
Ingo Molnar
53b441a565
Revert "perf_counter, x86: speed up the scheduling fast-path"
...
This reverts commit b68f1d2e7a .
It is causing problems (stuck/stuttering profiling) - when mixed
NMI and non-NMI counters are used.
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 21:41:28 +02:00
Peter Zijlstra
a78ac32587
perf_counter: Generic per counter interrupt throttle
...
Introduce a generic per counter interrupt throttle.
This uses the perf_counter_overflow() quick disable to throttle a specific
counter when its going too fast when a pmu->unthrottle() method is provided
which can undo the quick disable.
Power needs to implement both the quick disable and the unthrottle method.
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 >
LKML-Reference: <20090525153931.703093461@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 21:41:12 +02:00
Peter Zijlstra
48e22d56ec
perf_counter: x86: Remove interrupt throttle
...
remove the x86 specific interrupt throttle
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 >
LKML-Reference: <20090525153931.616671838@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 21:41:12 +02:00
Peter Zijlstra
ff99be573e
perf_counter: x86: Expose INV and EDGE bits
...
Expose the INV and EDGE bits of the PMU to raw configs.
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 >
LKML-Reference: <20090525153931.494709027@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 21:41:11 +02:00
Peter Zijlstra
10989fb245
perf_counter: Fix PERF_COUNTER_CONTEXT_SWITCHES for cpu counters
...
Ingo noticed that cpu counters had 0 context switches, even though
there was plenty scheduling on the cpu.
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 >
LKML-Reference: <20090525124600.419025548@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:55:01 +02:00
Peter Zijlstra
6ab423e0ea
perf_counter: Propagate inheritance failures down the fork() path
...
Fail fork() when we fail inheritance for some reason (-ENOMEM most likely).
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 >
LKML-Reference: <20090525124600.324656474@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:55:01 +02:00
Peter Zijlstra
771d7cde14
perf_counter: Make pctrl() affect inherited counters too
...
Paul noted that the new ptcrl() didn't work on child counters.
Reported-by: Paul Mackerras <paulus@samba.org >
Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Corey Ashford <cjashfor@linux.vnet.ibm.com >
Cc: Arnaldo Carvalho de Melo <acme@redhat.com >
Cc: John Kacur <jkacur@redhat.com >
LKML-Reference: <20090525124600.203151469@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:55:00 +02:00
Peter Zijlstra
e527ea312f
perf_counter: Remove unused ABI bits
...
extra_config_len isn't used for anything, remove it.
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 >
LKML-Reference: <20090525124600.116035832@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:55:00 +02:00
Peter Zijlstra
266dfb0b58
perf_counter: Fix perf-$cmd invokation
...
Fix:
$ perf-top
fatal: cannot handle -top internally
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 >
LKML-Reference: <20090525124559.995591577@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:54:59 +02:00
Ingo Molnar
d3f4b3855b
perf stat: flip around ':k' and ':u' flags
...
This output:
$ perf stat -e 0:1:k -e 0:1:u ./hello
Performance counter stats for './hello':
140131 instructions (events)
1906968 instructions (events)
Is quite confusing - as :k means "user instructions", :u means
"kernel instructions".
Flip them around - as the 'exclude' property is not intuitive in
the flag naming.
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: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 14:40:01 +02:00
Ingo Molnar
e4cbb4e3ac
perf_counter: Move child perfcounter init to after scheduler init
...
Initialize a task's perfcounters (inherit from parent, etc.) after
the child task's scheduler fields have been initialized already.
[ Impact: cleanup ]
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: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 13:05:06 +02:00
Mike Galbraith
d94b943054
perf top: Reduce display overhead
...
Iterate over the symbol table once per display interval, and
copy/sort/tally/decay only those symbols which are active.
Before:
top - 10:14:53 up 4:08, 17 users, load average: 1.17, 1.53, 1.49
Tasks: 273 total, 5 running, 268 sleeping, 0 stopped, 0 zombie
Cpu(s): 6.9%us, 38.2%sy, 0.0%ni, 19.9%id, 0.0%wa, 0.0%hi, 35.0%si, 0.0%st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ P COMMAND
28504 root 20 0 1044 260 164 S 58 0.0 0:04.19 2 netserver
28499 root 20 0 1040 412 316 R 51 0.0 0:04.15 0 netperf
28500 root 20 0 1040 408 316 R 50 0.0 0:04.14 1 netperf
28503 root 20 0 1044 260 164 S 50 0.0 0:04.01 1 netserver
28501 root 20 0 1044 260 164 S 49 0.0 0:03.99 0 netserver
28502 root 20 0 1040 412 316 S 43 0.0 0:03.96 2 netperf
28468 root 20 0 1892m 325m 972 S 16 10.8 0:10.50 3 perf
28467 root 20 0 1892m 325m 972 R 2 10.8 0:00.72 3 perf
After:
top - 10:16:30 up 4:10, 17 users, load average: 2.27, 1.88, 1.62
Tasks: 273 total, 6 running, 267 sleeping, 0 stopped, 0 zombie
Cpu(s): 2.5%us, 39.7%sy, 0.0%ni, 24.6%id, 0.0%wa, 0.0%hi, 33.3%si, 0.0%st
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ P COMMAND
28590 root 20 0 1040 412 316 S 54 0.0 0:07.85 2 netperf
28589 root 20 0 1044 260 164 R 54 0.0 0:07.84 0 netserver
28588 root 20 0 1040 412 316 R 50 0.0 0:07.89 1 netperf
28591 root 20 0 1044 256 164 S 50 0.0 0:07.82 1 netserver
28587 root 20 0 1040 408 316 R 47 0.0 0:07.61 0 netperf
28592 root 20 0 1044 260 164 R 47 0.0 0:07.85 2 netserver
28378 root 20 0 8732 1300 860 R 2 0.0 0:01.81 3 top
28577 root 20 0 1892m 165m 972 R 2 5.5 0:00.48 3 perf
28578 root 20 0 1892m 165m 972 S 2 5.5 0:00.04 3 perf
[ Impact: optimization ]
Signed-off-by: Mike Galbraith <efault@gmx.de >
Acked-by: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 13:01:17 +02:00
Ingo Molnar
85a9f92002
perf_counter tools: increase limits, fix
...
NR_CPUS and NR_COUNTERS goes up quadratic ... 1024x4096 was far
too ambitious upper limit - go for 256x256 which is still plenty.
[ Impact: reduce perf tool memory consumption ]
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: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-25 09:59:50 +02:00
Ingo Molnar
a3862d3f81
perf_counter: Increase mmap limit
...
In a default 'perf top' run the tool will create a counter for
each online CPU. With enough CPUs this will eventually exhaust
the default limit.
So scale it up with the number of online CPUs.
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: <new-submission>
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-24 09:02:37 +02:00
Mike Galbraith
c2990a2a58
perf top: fix segfault
...
c6eb13 increased stack usage such that perf-top now croaks on startup.
Take event_array and mmap_array off the stack to prevent segfault on boxen
with smallish ulimit -s setting.
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: 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-24 08:57:08 +02:00
Peter Zijlstra
475c557973
perf_counter: Remove perf_counter_context::nr_enabled
...
now that pctrl() no longer disables other people's counters,
remove the PMU cache code that deals with that.
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 >
LKML-Reference: <20090523163013.032998331@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-24 08:24:30 +02:00
Peter Zijlstra
082ff5a276
perf_counter: Change pctrl() behaviour
...
Instead of en/dis-abling all counters acting on a particular
task, en/dis- able all counters we created.
[ v2: fix crash on first counter enable ]
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 >
LKML-Reference: <20090523163012.916937244@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-24 08:24:08 +02:00
Peter Zijlstra
aa9c67f53d
perf_counter: Simplify context cleanup
...
Use perf_counter_remove_from_context() to remove counters from
the context.
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 >
LKML-Reference: <20090523163012.796275849@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-23 19:37:47 +02:00
Peter Zijlstra
1a482f38c5
perf_counter: Fix userspace build
...
recent userspace (F11) seems to already include the
linux/unistd.h bits which means we cannot include the version
in the kernel sources due to the header guards being the same.
Ensure we include the kernel version first.
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 >
LKML-Reference: <20090523163012.739756497@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-23 19:37:46 +02:00
Peter Zijlstra
682076ae1d
perf_counter: Sanitize context locking
...
Ensure we're consistent with the context locks.
context->mutex
context->lock
list_{add,del}_counter();
so that either lock is sufficient to stabilize the context.
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 >
LKML-Reference: <20090523163012.618790733@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-23 19:37:46 +02:00
Peter Zijlstra
fccc714b31
perf_counter: Sanitize counter->mutex
...
s/counter->mutex/counter->child_mutex/ and make sure its only
used to protect child_list.
The usage in __perf_counter_exit_task() doesn't appear to be
problematic since ctx->mutex also covers anything related to fd
tear-down.
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 >
LKML-Reference: <20090523163012.533186528@chello.nl >
Signed-off-by: Ingo Molnar <mingo@elte.hu >
2009-05-23 19:37:45 +02:00