History

perf scripts: Fallback to syscalls:* when raw_syscalls:* is not available

Older kernels (e.g., RHEL6) do system call tracing via the syscalls:sys_{enter,exit} tracepoints rather than using raw_syscalls:*. Update perf python and perl scripts to fallback to syscalls:* when raw_syscalls:* isn't available.

Daniel Bristot de Oliveira committed 12 years ago

Commit 07100871 parent 1c92f8810 files · +35 −5Browse files

Showing the changes to tools/perf/scripts/python (8 of 10 files). Show all

Unified · Split

8 files
  1. tools/perf/scripts/python/bin/failed-syscalls-by-pid-record +2 −1
  2. tools/perf/scripts/python/bin/sctop-record +2 −1
  3. tools/perf/scripts/python/bin/syscall-counts-by-pid-record +2 −1
  4. tools/perf/scripts/python/bin/syscall-counts-record +2 −1
  5. tools/perf/scripts/python/failed-syscalls-by-pid.py +5 −0
  6. tools/perf/scripts/python/sctop.py +5 −0
  7. tools/perf/scripts/python/syscall-counts-by-pid.py +5 −0
  8. tools/perf/scripts/python/syscall-counts.py +5 −0
tools/perf/scripts/python/bin/failed-syscalls-by-pid-record+2−1
@@ -1,2 +1,3 @@
11 #!/bin/bash
2−perf record -e raw_syscalls:sys_exit $@
2+(perf record -e raw_syscalls:sys_exit $@ || \
3+ perf record -e syscalls:sys_exit $@) 2> /dev/null
tools/perf/scripts/python/bin/sctop-record+2−1
@@ -1,2 +1,3 @@
11 #!/bin/bash
2−perf record -e raw_syscalls:sys_enter $@
2+(perf record -e raw_syscalls:sys_enter $@ || \
3+ perf record -e syscalls:sys_enter $@) 2> /dev/null
tools/perf/scripts/python/bin/syscall-counts-by-pid-record+2−1
@@ -1,2 +1,3 @@
11 #!/bin/bash
2−perf record -e raw_syscalls:sys_enter $@
2+(perf record -e raw_syscalls:sys_enter $@ || \
3+ perf record -e syscalls:sys_enter $@) 2> /dev/null
tools/perf/scripts/python/bin/syscall-counts-record+2−1
@@ -1,2 +1,3 @@
11 #!/bin/bash
2−perf record -e raw_syscalls:sys_enter $@
2+(perf record -e raw_syscalls:sys_enter $@ || \
3+ perf record -e syscalls:sys_enter $@) 2> /dev/null
tools/perf/scripts/python/failed-syscalls-by-pid.py+5−0
@@ -50,6 +50,11 @@ def raw_syscalls__sys_exit(event_name, context, common_cpu, · 49 unmodified lines
5050 except TypeError:
5151 syscalls[common_comm][common_pid][id][ret] = 1
5252
53+def syscalls__sys_exit(event_name, context, common_cpu,
54+ common_secs, common_nsecs, common_pid, common_comm,
55+ id, ret):
56+ raw_syscalls__sys_exit(**locals())
57+
5358 def print_error_totals():
5459 if for_comm is not None:
5560 print "\nsyscall errors for %s:\n\n" % (for_comm),
tools/perf/scripts/python/sctop.py+5−0
@@ -53,6 +53,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 52 unmodified lines
5353 except TypeError:
5454 syscalls[id] = 1
5555
56+def syscalls__sys_enter(event_name, context, common_cpu,
57+ common_secs, common_nsecs, common_pid, common_comm,
58+ id, args):
59+ raw_syscalls__sys_enter(**locals())
60+
5661 def print_syscall_totals(interval):
5762 while 1:
5863 clear_term()
tools/perf/scripts/python/syscall-counts-by-pid.py+5−0
@@ -48,6 +48,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 47 unmodified lines
4848 except TypeError:
4949 syscalls[common_comm][common_pid][id] = 1
5050
51+def syscalls__sys_enter(event_name, context, common_cpu,
52+ common_secs, common_nsecs, common_pid, common_comm,
53+ id, args):
54+ raw_syscalls__sys_enter(**locals())
55+
5156 def print_syscall_totals():
5257 if for_comm is not None:
5358 print "\nsyscall events for %s:\n\n" % (for_comm),
tools/perf/scripts/python/syscall-counts.py+5−0
@@ -44,6 +44,11 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, · 43 unmodified lines
4444 except TypeError:
4545 syscalls[id] = 1
4646
47+def syscalls__sys_enter(event_name, context, common_cpu,
48+ common_secs, common_nsecs, common_pid, common_comm,
49+ id, args):
50+ raw_syscalls__sys_enter(**locals())
51+
4752 def print_syscall_totals():
4853 if for_comm is not None:
4954 print "\nsyscall events for %s:\n\n" % (for_comm),