Path: blob/master/tools/perf/scripts/python/syscall-counts.py
10823 views
# system call counts1# (c) 2010, Tom Zanussi <[email protected]>2# Licensed under the terms of the GNU GPL License version 23#4# Displays system-wide system call totals, broken down by syscall.5# If a [comm] arg is specified, only syscalls called by [comm] are displayed.67import os8import sys910sys.path.append(os.environ['PERF_EXEC_PATH'] + \11'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')1213from perf_trace_context import *14from Core import *15from Util import syscall_name1617usage = "perf script -s syscall-counts.py [comm]\n";1819for_comm = None2021if len(sys.argv) > 2:22sys.exit(usage)2324if len(sys.argv) > 1:25for_comm = sys.argv[1]2627syscalls = autodict()2829def trace_begin():30print "Press control+C to stop and show the summary"3132def trace_end():33print_syscall_totals()3435def raw_syscalls__sys_enter(event_name, context, common_cpu,36common_secs, common_nsecs, common_pid, common_comm,37id, args):38if for_comm is not None:39if common_comm != for_comm:40return41try:42syscalls[id] += 143except TypeError:44syscalls[id] = 14546def print_syscall_totals():47if for_comm is not None:48print "\nsyscall events for %s:\n\n" % (for_comm),49else:50print "\nsyscall events:\n\n",5152print "%-40s %10s\n" % ("event", "count"),53print "%-40s %10s\n" % ("----------------------------------------", \54"-----------"),5556for id, val in sorted(syscalls.iteritems(), key = lambda(k, v): (v, k), \57reverse = True):58print "%-40s %10d\n" % (syscall_name(id), val),596061