Ingo Molnar
e25804a032
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent
2010-10-27 08:25:15 +02:00
Arnaldo Carvalho de Melo
00204c3396
perf python scripting: Add futex-contention script
...
The equivalent to this SystemTAP script:
http://sourceware.org/systemtap/wiki/WSFutexContention
[root@doppio ~]# perf trace futex-contention
Press control+C to stop and show the summary
^Cnpviewer.bin[15242] lock 7f0a8be19104 contended 29 times, 72806 avg ns
npviewer.bin[15242] lock 7f0a8be19130 contended 2 times, 1355 avg ns
synergyc[17245] lock f127f4 contended 1 times, 1830569 avg ns
firefox[15116] lock 7f2b7238af0c contended 168 times, 1230390 avg ns
synergyc[17245] lock f2fc20 contended 1 times, 33149 avg ns
npviewer.bin[15255] lock 7f0a8be19074 contended 155 times, 73047 avg ns
npviewer.bin[15255] lock 7f0a8be190a0 contended 127 times, 7088 avg ns
synergyc[17247] lock f12854 contended 1 times, 46741 avg ns
synergyc[17245] lock f12610 contended 1 times, 7358 avg ns
[root@doppio ~]#
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-26 17:07:33 -02:00
Arnaldo Carvalho de Melo
22d0594b31
perf python scripting: Fixup cut'n'paste error in sctop script
...
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-26 15:21:15 -02:00
Arnaldo Carvalho de Melo
b44308f540
perf scripting: Shut up 'perf record' final status
...
We want just the script output, not internal details about the record phase.
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-26 15:20:09 -02:00
Matt Fleming
0ab7368f8d
perf record: Remove newline character from perror() argument
...
If we include a newline character in the string argument to perror()
then the output will be split across two lines like so,
Unable to read perf file descriptor
: No space left on device
Deleting the newline character prints a much more readable error,
Unable to read perf file descriptor: No space left on device
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <89e77b54659bc3798b23a5596c2debb7f6f4cf27.1283010281.git.matt@console-pimps.org >
Signed-off-by: Matt Fleming <matt@console-pimps.org >
Signed-off-by: Arnaldo Carvalho de Melo <acme@felicio.ghostprotocols.net >
2010-10-26 13:03:09 -02:00
Ingo Molnar
5df414c61e
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent
2010-10-26 09:30:22 +02:00
Arnaldo Carvalho de Melo
7f6c1bd50d
perf python scripting: Support fedora 11 (audit 1.7.17)
...
Where we don't have the audit.MACH_ARMEB constant.
Cc: David S. Miller <davem@davemloft.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-25 22:12:01 -02:00
Arnaldo Carvalho de Melo
a64fa198ba
perf python scripting: Improve the syscalls-by-pid script
...
. Print message at script start telling how to get te summary
. Print the syscall names
. Accept both pid (if numeric) or COMM name
Now it looks like this:
[root@emilia tmp]# perf trace syscall-counts-by-pid
Press control+C to stop and show the summary
^C
syscall events by comm/pid:
comm [pid]/syscalls count
---------------------------------------- ----------
automount [1670]
futex 2
sshd [2322]
rt_sigprocmask 4
select 2
write 1
read 1
perf [15178]
read 2506
open 794
close 769
write 240
getdents 112
lseek 16
stat 9
perf_counter_open 5
fcntl 5
mmap 5
statfs 2
perf [15179]
read 56701
open 499
stat 176
fstat 149
close 109
mmap 98
brk 75
rt_sigaction 66
munmap 42
mprotect 24
lstat 7
lseek 5
getdents 4
ioctl 3
readlink 2
futex 1
statfs 1
getegid 1
geteuid 1
getgid 1
getuid 1
getrlimit 1
fcntl 1
uname 1
write 1
[root@emilia tmp]# fg
-bash: fg: current: no such job
[root@emilia tmp]# perf trace syscall-counts-by-pid 2322
Press control+C to stop and show the summary
^C
syscall events by comm/pid:
comm [pid]/syscalls count
---------------------------------------- ----------
sshd [2322]
rt_sigprocmask 4
select 2
write 1
read 1
[root@emilia tmp]# perf trace syscall-counts-by-pid sshd
Press control+C to stop and show the summary
^C
syscall events for sshd:
comm [pid]/syscalls count
---------------------------------------- ----------
sshd [2322]
rt_sigprocmask 4
select 2
write 1
read 1
[root@emilia tmp]#
Cc: David S. Miller <davem@davemloft.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-25 18:48:15 -02:00
Arnaldo Carvalho de Melo
2e7d1e3fb8
perf python scripting: print the syscall name on sctop
...
[root@emilia tmp]# perf trace sctop 1
syscall events:
event count
---------------------------------------- ----------
read 215400
futex 4029
write 376
brk 33
rt_sigprocmask 24
select 17
lseek 2
fsync 1
^C[root@emilia tmp]#
Cc: David S. Miller <davem@davemloft.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-25 18:47:27 -02:00
Arnaldo Carvalho de Melo
6545aaa561
perf python scripting: Improve the syscalls-counts script
...
. Print message at script start telling how to get te summary
. Print the syscall name
Now it looks like this:
[root@emilia ~]# perf trace syscall-counts
Press control+C to stop and show the summary
^C
syscall events:
event count
---------------------------------------- -----------
read 102752
open 1293
close 878
write 319
stat 185
fstat 149
getdents 116
mmap 98
brk 80
rt_sigaction 66
munmap 42
mprotect 24
lseek 21
lstat 7
rt_sigprocmask 4
futex 3
statfs 3
ioctl 3
readlink 2
select 2
getegid 1
geteuid 1
getgid 1
getuid 1
getrlimit 1
fcntl 1
uname 1
[root@emilia ~]#
Cc: David S. Miller <davem@davemloft.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-25 18:47:11 -02:00
Arnaldo Carvalho de Melo
6cc7361440
perf python scripting: Improve the failed-syscalls-by-pid script
...
. Print message at script start telling how to get te summary
. Print the syscall name using the audit-lib-python package, if
installed
. Print the errno string
. Accept both pid (if numeric) or COMM name
Now it looks like this:
[root@emilia ~]# perf trace failed-syscalls-by-pid
Press control+C to stop and show the summary
^C
syscall errors:
comm [pid] count
------------------------------ ----------
automount [1670]
syscall: futex
err = ETIMEDOUT 39
irqbalance [1462]
syscall: openat
err = ENOENT 4
perf [7888]
syscall: lseek
err = ESPIPE 1
syscall: open
err = ENOENT 24
perf [7889]
syscall: ioctl
err = EINVAL 1
syscall: readlink
err = EINVAL 2
syscall: open
err = ENOENT 389
syscall: stat
err = ENOENT 141
syscall: lseek
err = ESPIPE 3
[root@emilia ~]#
[root@emilia ~]# perf trace failed-syscalls-by-pid 1670
Press control+C to stop and show the summary
^C
syscall errors:
comm [pid] count
------------------------------ ----------
automount [1670]
syscall: futex
err = ETIMEDOUT 2
[root@emilia ~]#
[root@emilia ~]#
[root@emilia ~]#
[root@emilia ~]# perf trace failed-syscalls-by-pid automount
Press control+C to stop and show the summary
^C
syscall errors for automount:
comm [pid] count
------------------------------ ----------
automount [1669]
syscall: futex
err = ETIMEDOUT 1
automount [1670]
syscall: futex
err = ETIMEDOUT 5
[root@emilia ~]#
Cc: David S. Miller <davem@davemloft.net >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <peterz@infradead.org >
Cc: Stephane Eranian <eranian@google.com >
Cc: Tom Zanussi <tzanussi@gmail.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-25 18:46:41 -02:00
Ingo Molnar
b8ecad8b2f
Merge branch 'perf/core' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux-2.6 into perf/urgent
2010-10-23 20:05:43 +02:00
Arnaldo Carvalho de Melo
66a301c380
perf probe: Fix format specified for Dwarf_Off parameter
...
Fixing the following error on 32-bit arches:
util/probe-finder.c: In function ‘line_range_search_cb’:
util/probe-finder.c:1734: error: format ‘%lx’ expects type ‘long
unsigned int’, but argument 3 has type ‘Dwarf_Off’
Reported-by: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
Cc: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-23 15:31:20 -02:00
Ben Hutchings
d1e95bb530
perf trace: Fix detection of script extension
...
The extension starts with the last dot in the name, not the first.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <1286723462.2955.206.camel@localhost>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-23 15:31:20 -02:00
Ben Hutchings
44e668c6fa
perf trace: Use $PERF_EXEC_PATH in canned report scripts
...
Set $PERF_EXEC_PATH before starting the record and report scripts, and
make them use it where necessary.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
LKML-Reference: <1286723403.2955.205.camel@localhost>
Signed-off-by: Ben Hutchings <ben@decadent.org.uk >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-23 15:31:20 -02:00
Sonny Rao
ffec516976
perf tools: Document event modifiers
...
Existing documentation doesn't discuss event modifiers, so add a description of
what's currently possible to the documentation of perf-list.
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Robert Richter <robert.richter@amd.com >
LKML-Reference: <1287107460-12112-1-git-send-email-sonnyrao@linux.vnet.ibm.com >
Signed-off-by: Sonny Rao <sonnyrao@linux.vnet.ibm.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-23 15:31:20 -02:00
Arnaldo Carvalho de Melo
8bfb5e7d6a
perf tools: Remove direct slang.h include
...
We wrap it in libslang.h because we need to deal with older slang release
where HAVE_LONG_LONG is referenced as:
So we need to define it.
Noticed when rebuilding the perf tools on a RHEL5 machine.
Cc: Frédéric Weisbecker <fweisbec@gmail.com >
Cc: Mike Galbraith <efault@gmx.de >
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Stephane Eranian <eranian@google.com >
LKML-Reference: <new-submission>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-22 17:48:16 -02:00
Linus Torvalds
5d70f79b5e
Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip
...
* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (163 commits)
tracing: Fix compile issue for trace_sched_wakeup.c
[S390] hardirq: remove pointless header file includes
[IA64] Move local_softirq_pending() definition
perf, powerpc: Fix power_pmu_event_init to not use event->ctx
ftrace: Remove recursion between recordmcount and scripts/mod/empty
jump_label: Add COND_STMT(), reducer wrappery
perf: Optimize sw events
perf: Use jump_labels to optimize the scheduler hooks
jump_label: Add atomic_t interface
jump_label: Use more consistent naming
perf, hw_breakpoint: Fix crash in hw_breakpoint creation
perf: Find task before event alloc
perf: Fix task refcount bugs
perf: Fix group moving
irq_work: Add generic hardirq context callbacks
perf_events: Fix transaction recovery in group_sched_in()
perf_events: Fix bogus AMD64 generic TLB events
perf_events: Fix bogus context time tracking
tracing: Remove parent recording in latency tracer graph options
tracing: Use one prologue for the preempt irqs off tracer function tracers
...
2010-10-21 12:54:49 -07:00
Masami Hiramatsu
469b9b8848
perf probe: Add basic module support
...
Add basic module probe support on perf probe. This introduces "--module
<MODNAME>" option to perf probe for putting probes and showing lines and
variables in the given module.
Currently, this supports only probing on running modules. Supporting off-line
module probing is the next step.
e.g.)
[show lines]
# ./perf probe --module drm -L drm_vblank_info
<drm_vblank_info:0>
0 int drm_vblank_info(struct seq_file *m, void *data)
1 {
struct drm_info_node *node = (struct drm_info_node *) m->private
3 struct drm_device *dev = node->minor->dev;
...
[show vars]
# ./perf probe --module drm -V drm_vblank_info:3
Available variables at drm_vblank_info:3
@<drm_vblank_info+20>
(unknown_type) data
struct drm_info_node* node
struct seq_file* m
[put a probe]
# ./perf probe --module drm drm_vblank_info:3 node m
Add new event:
probe:drm_vblank_info (on drm_vblank_info:3 with node m)
You can now use it on all perf tools, such as:
perf record -e probe:drm_vblank_info -aR sleep 1
[list probes]
# ./perf probe -l
probe:drm_vblank_info (on drm_vblank_info:3@drivers/gpu/drm/drm_info.c with ...
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101341.3542.71638.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 16:11:44 -02:00
Masami Hiramatsu
fb8c5a56c7
perf probe: Show accessible global variables
...
Add --externs for allowing --vars to show accessible global (externally
defined) variables from a given probe point too.
This will give you a hint which globals can be accessible from the probe point.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101335.3542.31003.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 16:06:42 -02:00
Masami Hiramatsu
c82ec0a2bd
perf probe: Function style fix
...
Just change the order of function arguments for ease of read; moving optional
bool flag to the last.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101329.3542.51200.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 16:00:42 -02:00
Masami Hiramatsu
cf6eb489e5
perf probe: Show accessible local variables
...
Add -V (--vars) option for listing accessible local variables at given probe
point. This will help finding which local variables are available for event
arguments.
e.g.)
# perf probe -V call_timer_fn:23
Available variables at call_timer_fn:23
@<run_timer_softirq+345>
function_type* fn
int preempt_count
long unsigned int data
struct list_head work_list
struct list_head* head
struct timer_list* timer
struct tvec_base* base
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
Cc: Frederic Weisbecker <fweisbec@gmail.com >
LKML-Reference: <20101021101323.3542.40282.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:59:06 -02:00
Masami Hiramatsu
632941c4f8
perf probe: Support global variables
...
Allow users to set external defined global variables as event arguments (e.g.
jiffies).
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101316.3542.1999.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:58:27 -02:00
Masami Hiramatsu
378eeaad3e
perf probe: Fix local variable searching loop
...
Fix to check the die's address and search into the die only if it has given
address.
This will avoid finding wrong variables in wrong basic block.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101309.3542.46434.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:58:05 -02:00
Masami Hiramatsu
4046b8bb5f
perf probe: Fix type searching
...
Fix to get the actual type die of variables by using dwarf_attr_integrate()
which gets attribute from die even if the type die is connected by
DW_AT_abstract_origin.
Cc: Peter Zijlstra <a.p.zijlstra@chello.nl >
Cc: Paul Mackerras <paulus@samba.org >
Cc: Ingo Molnar <mingo@elte.hu >
LKML-Reference: <20101021101302.3542.38549.stgit@ltc236.sdl.hitachi.co.jp >
Signed-off-by: Masami Hiramatsu <masami.hiramatsu.pt@hitachi.com >
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com >
2010-10-21 15:57:08 -02:00