~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

TOMOYO Linux Cross Reference
Linux/tools/perf/scripts/python/syscall-counts-by-pid.py

Version: ~ [ linux-6.12-rc7 ] ~ [ linux-6.11.7 ] ~ [ linux-6.10.14 ] ~ [ linux-6.9.12 ] ~ [ linux-6.8.12 ] ~ [ linux-6.7.12 ] ~ [ linux-6.6.60 ] ~ [ linux-6.5.13 ] ~ [ linux-6.4.16 ] ~ [ linux-6.3.13 ] ~ [ linux-6.2.16 ] ~ [ linux-6.1.116 ] ~ [ linux-6.0.19 ] ~ [ linux-5.19.17 ] ~ [ linux-5.18.19 ] ~ [ linux-5.17.15 ] ~ [ linux-5.16.20 ] ~ [ linux-5.15.171 ] ~ [ linux-5.14.21 ] ~ [ linux-5.13.19 ] ~ [ linux-5.12.19 ] ~ [ linux-5.11.22 ] ~ [ linux-5.10.229 ] ~ [ linux-5.9.16 ] ~ [ linux-5.8.18 ] ~ [ linux-5.7.19 ] ~ [ linux-5.6.19 ] ~ [ linux-5.5.19 ] ~ [ linux-5.4.285 ] ~ [ linux-5.3.18 ] ~ [ linux-5.2.21 ] ~ [ linux-5.1.21 ] ~ [ linux-5.0.21 ] ~ [ linux-4.20.17 ] ~ [ linux-4.19.323 ] ~ [ linux-4.18.20 ] ~ [ linux-4.17.19 ] ~ [ linux-4.16.18 ] ~ [ linux-4.15.18 ] ~ [ linux-4.14.336 ] ~ [ linux-4.13.16 ] ~ [ linux-4.12.14 ] ~ [ linux-4.11.12 ] ~ [ linux-4.10.17 ] ~ [ linux-4.9.337 ] ~ [ linux-4.4.302 ] ~ [ linux-3.10.108 ] ~ [ linux-2.6.32.71 ] ~ [ linux-2.6.0 ] ~ [ linux-2.4.37.11 ] ~ [ unix-v6-master ] ~ [ ccs-tools-1.8.12 ] ~ [ policy-sample ] ~
Architecture: ~ [ i386 ] ~ [ alpha ] ~ [ m68k ] ~ [ mips ] ~ [ ppc ] ~ [ sparc ] ~ [ sparc64 ] ~

Diff markup

Differences between /tools/perf/scripts/python/syscall-counts-by-pid.py (Architecture mips) and /tools/perf/scripts/python/syscall-counts-by-pid.py (Architecture ppc)


  1 # system call counts, by pid                        1 # system call counts, by pid
  2 # (c) 2010, Tom Zanussi <tzanussi@gmail.com>         2 # (c) 2010, Tom Zanussi <tzanussi@gmail.com>
  3 # Licensed under the terms of the GNU GPL Lice      3 # Licensed under the terms of the GNU GPL License version 2
  4 #                                                   4 #
  5 # Displays system-wide system call totals, bro      5 # Displays system-wide system call totals, broken down by syscall.
  6 # If a [comm] arg is specified, only syscalls       6 # If a [comm] arg is specified, only syscalls called by [comm] are displayed.
  7                                                     7 
  8 from __future__ import print_function               8 from __future__ import print_function
  9                                                     9 
 10 import os, sys                                     10 import os, sys
 11                                                    11 
 12 sys.path.append(os.environ['PERF_EXEC_PATH'] +     12 sys.path.append(os.environ['PERF_EXEC_PATH'] + \
 13         '/scripts/python/Perf-Trace-Util/lib/P     13         '/scripts/python/Perf-Trace-Util/lib/Perf/Trace')
 14                                                    14 
 15 from perf_trace_context import *                   15 from perf_trace_context import *
 16 from Core import *                                 16 from Core import *
 17 from Util import syscall_name                      17 from Util import syscall_name
 18                                                    18 
 19 usage = "perf script -s syscall-counts-by-pid.     19 usage = "perf script -s syscall-counts-by-pid.py [comm]\n";
 20                                                    20 
 21 for_comm = None                                    21 for_comm = None
 22 for_pid = None                                     22 for_pid = None
 23                                                    23 
 24 if len(sys.argv) > 2:                              24 if len(sys.argv) > 2:
 25         sys.exit(usage)                            25         sys.exit(usage)
 26                                                    26 
 27 if len(sys.argv) > 1:                              27 if len(sys.argv) > 1:
 28         try:                                       28         try:
 29                 for_pid = int(sys.argv[1])         29                 for_pid = int(sys.argv[1])
 30         except:                                    30         except:
 31                 for_comm = sys.argv[1]             31                 for_comm = sys.argv[1]
 32                                                    32 
 33 syscalls = autodict()                              33 syscalls = autodict()
 34                                                    34 
 35 def trace_begin():                                 35 def trace_begin():
 36         print("Press control+C to stop and sho     36         print("Press control+C to stop and show the summary")
 37                                                    37 
 38 def trace_end():                                   38 def trace_end():
 39         print_syscall_totals()                     39         print_syscall_totals()
 40                                                    40 
 41 def raw_syscalls__sys_enter(event_name, contex     41 def raw_syscalls__sys_enter(event_name, context, common_cpu,
 42                 common_secs, common_nsecs, com     42                 common_secs, common_nsecs, common_pid, common_comm,
 43                 common_callchain, id, args):       43                 common_callchain, id, args):
 44         if (for_comm and common_comm != for_co     44         if (for_comm and common_comm != for_comm) or \
 45                 (for_pid and common_pid != for     45                 (for_pid and common_pid != for_pid ):
 46                 return                             46                 return
 47         try:                                       47         try:
 48                 syscalls[common_comm][common_p     48                 syscalls[common_comm][common_pid][id] += 1
 49         except TypeError:                          49         except TypeError:
 50                 syscalls[common_comm][common_p     50                 syscalls[common_comm][common_pid][id] = 1
 51                                                    51 
 52 def syscalls__sys_enter(event_name, context, c     52 def syscalls__sys_enter(event_name, context, common_cpu,
 53                 common_secs, common_nsecs, com     53                 common_secs, common_nsecs, common_pid, common_comm,
 54                 id, args):                         54                 id, args):
 55         raw_syscalls__sys_enter(**locals())        55         raw_syscalls__sys_enter(**locals())
 56                                                    56 
 57 def print_syscall_totals():                        57 def print_syscall_totals():
 58         if for_comm is not None:                   58         if for_comm is not None:
 59                 print("\nsyscall events for %s     59                 print("\nsyscall events for %s:\n" % (for_comm))
 60         else:                                      60         else:
 61                 print("\nsyscall events by com     61                 print("\nsyscall events by comm/pid:\n")
 62                                                    62 
 63         print("%-40s  %10s" % ("comm [pid]/sys     63         print("%-40s  %10s" % ("comm [pid]/syscalls", "count"))
 64         print("%-40s  %10s" % ("--------------     64         print("%-40s  %10s" % ("----------------------------------------",
 65                                 "----------"))     65                                 "----------"))
 66                                                    66 
 67         comm_keys = syscalls.keys()                67         comm_keys = syscalls.keys()
 68         for comm in comm_keys:                     68         for comm in comm_keys:
 69                 pid_keys = syscalls[comm].keys     69                 pid_keys = syscalls[comm].keys()
 70                 for pid in pid_keys:               70                 for pid in pid_keys:
 71                         print("\n%s [%d]" % (c     71                         print("\n%s [%d]" % (comm, pid))
 72                         id_keys = syscalls[com     72                         id_keys = syscalls[comm][pid].keys()
 73                         for id, val in sorted(     73                         for id, val in sorted(syscalls[comm][pid].items(),
 74                                 key = lambda k     74                                 key = lambda kv: (kv[1], kv[0]), reverse = True):
 75                                 print("  %-38s     75                                 print("  %-38s  %10d" % (syscall_name(id), val))
                                                      

~ [ source navigation ] ~ [ diff markup ] ~ [ identifier search ] ~

kernel.org | git.kernel.org | LWN.net | Project Home | SVN repository | Mail admin

Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.

sflogo.php