aboutsummaryrefslogtreecommitdiffstats
path: root/tools/perf/scripts/python/syscall-counts-by-pid.py
blob: f254e40c6f0fda463fe296d536f6ebf4921621ab (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
# system call counts, by pid
# (c) 2010, Tom Zanussi <tzanussi@gmail.com>
# Licensed under the terms of the GNU GPL License version 2
#
# Displays system-wide system call totals, broken down by syscall.
# If a [comm] arg is specified, only syscalls called by [comm] are displayed.

from __future__ import print_function

import os, sys

sys.path.append(os.environ['PERF_EXEC_PATH'] + \
	'/scripts/python/Perf-Trace-Util/lib/Perf/Trace')

from perf_trace_context import *
from Core import *
from Util import syscall_name

usage = "perf script -s syscall-counts-by-pid.py [comm]\n";

for_comm = None
for_pid = None

if len(sys.argv) > 2:
	sys.exit(usage)

if len(sys.argv) > 1:
	try:
		for_pid = int(sys.argv[1])
	except:
		for_comm = sys.argv[1]

syscalls = autodict()

def trace_begin():
	print("Press control+C to stop and show the summary")

def trace_end():
	print_syscall_totals()

def raw_syscalls__sys_enter(event_name, context, common_cpu,
		common_secs, common_nsecs, common_pid, common_comm,
		common_callchain, id, args):
	if (for_comm and common_comm != for_comm) or \
		(for_pid and common_pid != for_pid ):
		return
	try:
		syscalls[common_comm][common_pid][id] += 1
	except TypeError:
		syscalls[common_comm][common_pid][id] = 1

def syscalls__sys_enter(event_name, context, common_cpu,
		common_secs, common_nsecs, common_pid, common_comm,
		id, args):
	raw_syscalls__sys_enter(**locals())

def print_syscall_totals():
	if for_comm is not None:
		print("\nsyscall events for %s:\n" % (for_comm))
	else:
		print("\nsyscall events by comm/pid:\n")

	print("%-40s  %10s" % ("comm [pid]/syscalls", "count"))
	print("%-40s  %10s" % ("----------------------------------------",
				"----------"))

	comm_keys = syscalls.keys()
	for comm in comm_keys:
		pid_keys = syscalls[comm].keys()
		for pid in pid_keys:
			print("\n%s [%d]" % (comm, pid))
			id_keys = syscalls[comm][pid].keys()
			for id, val in sorted(syscalls[comm][pid].items(),
				key = lambda kv: (kv[1], kv[0]), reverse = True):
				print("  %-38s  %10d" % (syscall_name(id), val))
rom round_rate() to determine_rate()Brian Masney1-4/+5 2025-10-01ARM: configs: u8500: Set NFC_SHDLC as built-inJihed Chaibi1-1/+1 2025-10-01smb: client: show lease state as R/H/W (or NONE) in open_filesBharath SM1-5/+28 2025-10-01mfd: simple-mfd-i2c: Add compatible string for LX2160ARDBIoana Ciornei1-0/+1 2025-10-01mfd: simple-mfd-i2c: Keep compatible strings in alphabetical orderIoana Ciornei1-3/+3 2025-10-01dt-bindings: mfd: twl: Add missing sub-nodes for TWL4030 & TWL603xJihed Chaibi4-128/+273 2025-10-01dt-bindings: watchdog: Add SMARC-sAM67 supportMichael Walle1-1/+6 2025-10-01dt-bindings: mfd: tps6594: Allow gpio-line-namesMichael Walle1-0/+1 2025-10-01mfd: intel-lpss: Add Intel Wildcat Lake LPSS PCI IDsIlpo Järvinen1-0/+13 2025-10-01mfd: 88pm886: Add GPADC cellDuje Mihanović1-0/+1 2025-10-01mfd: vexpress-sysreg: Use more common syntax for compound literalsBartosz Golaszewski1-1/+1 2025-10-01mfd: rz-mtu3: Fix MTU5 NFCR register offsetCosmin Tanislav1-1/+1 2025-10-01mfd: max77705: Setup the core driver as an interrupt controllerDzmitry Sankouski1-21/+14 2025-10-01mfd: cs42l43: Remove IRQ masking in suspendCharles Keepax1-26/+0 2025-10-01mfd: cs42l43: Move IRQ enable/disable to encompass force suspendCharles Keepax1-4/+4 2025-10-01mfd: ls2kbmc: Add Loongson-2K BMC reset function supportBinbin Zhou1-0/+339 2025-10-01mfd: ls2kbmc: Introduce Loongson-2K BMC core driverBinbin Zhou4-0/+210 2025-10-01mfd: bd71828, bd71815: Prepare for power-supply supportMatti Vaittinen2-9/+98 2025-10-01dt-bindings: mfd: aspeed: Add AST2700 SCU compatiblesRyan Chen1-0/+4 2025-10-01dt-bindings: mfd: Convert aspeed,ast2400-p2a-ctrl to DT schemaRob Herring (Arm)2-47/+32 2025-10-01dt-bindings: mfd: fsl,mc13xxx: Add buttons nodeAlexander Kurz1-0/+70 2025-10-01dt-bindings: mfd: fsl,mc13xxx: Convert txt to DT schemaAlexander Kurz2-156/+218 2025-10-01mfd: macsmc: Add "apple,t8103-smc" compatibleJanne Grunau1-0/+1 2025-10-01mfd: core: Increment of_node's refcount before linking it to the platform deviceBastien Curutchet1-0/+1 2025-10-01dt-bindings: mfd: syscon: Document the control-scb syscon on PolarFire SoCConor Dooley1-0/+2 2025-10-01mfd: simple-mfd-i2c: Add SpacemiT P1 supportAlex Elder2-0/+30