summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/syscall-counts-by-pid.py
blob: f254e40c6f0fda463fe296d536f6ebf4921621ab (plain)
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))
href='/distro/kernel/commit/drivers/counter?id=5679d5f76ca781c46212db3e274e610aeea62af9'>counter: stm32-timer-cnt: adopt signal definitionsFabrice Gasnier 2024-04-02counter: stm32-timer-cnt: rename counterFabrice Gasnier 2024-04-02counter: stm32-timer-cnt: rename quadrature signalFabrice Gasnier 2024-04-02counter: constify the struct device_type usageRicardo B. Marliere 2024-04-02counter: make counter_bus_type constRicardo B. Marliere 2024-02-16counter: fix privdata alignmentNuno Sa 2023-10-02Merge tag 'counter-fixes-for-6.6a' of git://git.kernel.org/pub/scm/linux/kern...Greg Kroah-Hartman 2023-09-05counter: microchip-tcb-capture: Fix the use of internal GCLK logicDharma Balasubiramani 2023-09-04Merge tag 'mfd-next-6.6' of git://git.kernel.org/pub/scm/linux/kernel/git/lee...Linus Torvalds 2023-09-04counter: chrdev: fix getting array extensionsFabrice Gasnier 2023-08-18mfd: rz-mtu3: Link time dependenciesArnd Bergmann 2023-08-16counter: rz-mtu3-cnt: Reorder locking sequence for consistencyBiju Das 2023-08-16counter: Explicitly include correct DT includesRob Herring 2023-08-04Merge tag 'counter-fixes-for-6.5a' of git://git.kernel.org/pub/scm/linux/kern...Greg Kroah-Hartman 2023-06-21counter: Fix menuconfig "Counter support" submenu entries disappearanceWilliam Breathitt Gray 2023-06-15Merge tag 'counter-updates-for-6.5a' of git://git.kernel.org/pub/scm/linux/ke...Greg Kroah-Hartman 2023-06-08counter: i8254: Introduce the Intel 8254 interface library moduleWilliam Breathitt Gray 2023-05-31counter: add HAS_IOPORT_MAP dependencyNiklas Schnelle 2023-05-18counter: 104-quad-8: Migrate to the regmap APIWilliam Breathitt Gray 2023-05-18counter: 104-quad-8: Utilize helper functions to handle PR, FLAG and PSCWilliam Breathitt Gray 2023-05-18counter: 104-quad-8: Refactor to buffer states for CMR, IOR, and IDRWilliam Breathitt Gray 2023-05-18counter: 104-quad-8: Utilize bitfield access macrosWilliam Breathitt Gray 2023-05-09counter: stm32-timer-cnt: Reset TIM_TISEL to its default value in probeUwe Kleine-König 2023-05-09counter: 104-quad-8: Remove reference in Kconfig to 25-bit counter valueWilliam Breathitt Gray 2023-05-02Merge tag 'mfd-next-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee...Linus Torvalds 2023-04-26counter: rz-mtu3-cnt: Unlock on error in rz_mtu3_count_ceiling_write()Dan Carpenter 2023-04-26counter: Add Renesas RZ/G2L MTU3a counter driverBiju Das 2023-03-18counter: 104-quad-8: Fix Synapse action reported for Index signalsWilliam Breathitt Gray 2023-03-18counter: 104-quad-8: Fix race condition between FLAG and CNTR readsWilliam Breathitt Gray