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 @@
1#!/bin/bash1#!/bin/bash
2perf 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 @@
1#!/bin/bash1#!/bin/bash
2perf 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 @@
1#!/bin/bash1#!/bin/bash
2perf 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 @@
1#!/bin/bash1#!/bin/bash
2perf 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
50 except TypeError:50 except TypeError:
51 syscalls[common_comm][common_pid][id][ret] = 151 syscalls[common_comm][common_pid][id][ret] = 1
52 52
53def 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
53def print_error_totals():58def print_error_totals():
54 if for_comm is not None:59 if for_comm is not None:
55 print "\nsyscall errors for %s:\n\n" % (for_comm),60 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
53 except TypeError:53 except TypeError:
54 syscalls[id] = 154 syscalls[id] = 1
55 55
56def 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
56def print_syscall_totals(interval):61def print_syscall_totals(interval):
57 while 1:62 while 1:
58 clear_term()63 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
48 except TypeError:48 except TypeError:
49 syscalls[common_comm][common_pid][id] = 149 syscalls[common_comm][common_pid][id] = 1
50 50
51def 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
51def print_syscall_totals():56def print_syscall_totals():
52 if for_comm is not None:57 if for_comm is not None:
53 print "\nsyscall events for %s:\n\n" % (for_comm),58 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
44 except TypeError:44 except TypeError:
45 syscalls[id] = 145 syscalls[id] = 1
46 46
47def 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
47def print_syscall_totals():52def print_syscall_totals():
48 if for_comm is not None:53 if for_comm is not None:
49 print "\nsyscall events for %s:\n\n" % (for_comm),54 print "\nsyscall events for %s:\n\n" % (for_comm),