aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/syscall-counts-by-pid.py
diff options
context:
space:
mode:
authorPaul Mundt <lethal@linux-sh.org>2011-01-13 01:06:28 -0500
committerPaul Mundt <lethal@linux-sh.org>2011-01-13 01:06:28 -0500
commitf43dc23d5ea91fca257be02138a255f02d98e806 (patch)
treeb29722f6e965316e90ac97abf79923ced250dc21 /tools/perf/scripts/python/syscall-counts-by-pid.py
parentf8e53553f452dcbf67cb89c8cba63a1cd6eb4cc0 (diff)
parent4162cf64973df51fc885825bc9ca4d055891c49f (diff)
Merge branch 'master' of master.kernel.org:/pub/scm/linux/kernel/git/torvalds/linux-2.6 into common/serial-rework
Conflicts: arch/sh/kernel/cpu/sh2/setup-sh7619.c arch/sh/kernel/cpu/sh2a/setup-mxg.c arch/sh/kernel/cpu/sh2a/setup-sh7201.c arch/sh/kernel/cpu/sh2a/setup-sh7203.c arch/sh/kernel/cpu/sh2a/setup-sh7206.c arch/sh/kernel/cpu/sh3/setup-sh7705.c arch/sh/kernel/cpu/sh3/setup-sh770x.c arch/sh/kernel/cpu/sh3/setup-sh7710.c arch/sh/kernel/cpu/sh3/setup-sh7720.c arch/sh/kernel/cpu/sh4/setup-sh4-202.c arch/sh/kernel/cpu/sh4/setup-sh7750.c arch/sh/kernel/cpu/sh4/setup-sh7760.c arch/sh/kernel/cpu/sh4a/setup-sh7343.c arch/sh/kernel/cpu/sh4a/setup-sh7366.c arch/sh/kernel/cpu/sh4a/setup-sh7722.c arch/sh/kernel/cpu/sh4a/setup-sh7723.c arch/sh/kernel/cpu/sh4a/setup-sh7724.c arch/sh/kernel/cpu/sh4a/setup-sh7763.c arch/sh/kernel/cpu/sh4a/setup-sh7770.c arch/sh/kernel/cpu/sh4a/setup-sh7780.c arch/sh/kernel/cpu/sh4a/setup-sh7785.c arch/sh/kernel/cpu/sh4a/setup-sh7786.c arch/sh/kernel/cpu/sh4a/setup-shx3.c arch/sh/kernel/cpu/sh5/setup-sh5.c drivers/serial/sh-sci.c drivers/serial/sh-sci.h include/linux/serial_sci.h
Diffstat (limited to 'tools/perf/scripts/python/syscall-counts-by-pid.py')
-rw-r--r--tools/perf/scripts/python/syscall-counts-by-pid.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/tools/perf/scripts/python/syscall-counts-by-pid.py b/tools/perf/scripts/python/syscall-counts-by-pid.py
new file mode 100644
index 000000000000..c64d1c55d745
--- /dev/null
+++ b/tools/perf/scripts/python/syscall-counts-by-pid.py
@@ -0,0 +1,69 @@
1# system call counts, by pid
2# (c) 2010, Tom Zanussi <tzanussi@gmail.com>
3# Licensed under the terms of the GNU GPL License version 2
4#
5# Displays system-wide system call totals, broken down by syscall.
6# If a [comm] arg is specified, only syscalls called by [comm] are displayed.
7
8import os, sys
9
10sys.path.append(os.environ['PERF_EXEC_PATH'] + \
11 '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
12
13from perf_trace_context import *
14from Core import *
15from Util import syscall_name
16
17usage = "perf script -s syscall-counts-by-pid.py [comm]\n";
18
19for_comm = None
20for_pid = None
21
22if len(sys.argv) > 2:
23 sys.exit(usage)
24
25if len(sys.argv) > 1:
26 try:
27 for_pid = int(sys.argv[1])
28 except:
29 for_comm = sys.argv[1]
30
31syscalls = autodict()
32
33def trace_begin():
34 print "Press control+C to stop and show the summary"
35
36def trace_end():
37 print_syscall_totals()
38
39def raw_syscalls__sys_enter(event_name, context, common_cpu,
40 common_secs, common_nsecs, common_pid, common_comm,
41 id, args):
42
43 if (for_comm and common_comm != for_comm) or \
44 (for_pid and common_pid != for_pid ):
45 return
46 try:
47 syscalls[common_comm][common_pid][id] += 1
48 except TypeError:
49 syscalls[common_comm][common_pid][id] = 1
50
51def print_syscall_totals():
52 if for_comm is not None:
53 print "\nsyscall events for %s:\n\n" % (for_comm),
54 else:
55 print "\nsyscall events by comm/pid:\n\n",
56
57 print "%-40s %10s\n" % ("comm [pid]/syscalls", "count"),
58 print "%-40s %10s\n" % ("----------------------------------------", \
59 "----------"),
60
61 comm_keys = syscalls.keys()
62 for comm in comm_keys:
63 pid_keys = syscalls[comm].keys()
64 for pid in pid_keys:
65 print "\n%s [%d]\n" % (comm, pid),
66 id_keys = syscalls[comm][pid].keys()
67 for id, val in sorted(syscalls[comm][pid].iteritems(), \
68 key = lambda(k, v): (v, k), reverse = True):
69 print " %-38s %10d\n" % (syscall_name(id), val),