diff options
| author | Ingo Molnar <mingo@kernel.org> | 2019-03-09 11:00:17 -0500 |
|---|---|---|
| committer | Ingo Molnar <mingo@kernel.org> | 2019-03-09 11:00:17 -0500 |
| commit | b339da480315505aa28a723a983217ebcff95c86 (patch) | |
| tree | 4194e7a3b4aa986335eeaf697652a4ac163c45ef /tools/perf/scripts/python/syscall-counts.py | |
| parent | 43aa378b41700650e4ddbd068650f9fe4ab496df (diff) | |
| parent | b8f7d86b5849ea7bb84bddc0345a3799049764d4 (diff) | |
Merge tag 'perf-core-for-mingo-5.1-20190307' of git://git.kernel.org/pub/scm/linux/kernel/git/acme/linux into perf/urgent
Pull perf/core changes from Arnaldo Carvalho de Melo:
perf bpf:
Arnaldo Carvalho de Melo:
- Automatically add BTF ELF markers to 'perf trace' BPF programs, so that
tools such as 'bpftool map dump' can pretty print map keys and values.
perf c2c:
Jiri Olsa:
- Fix report for empty NUMA node.
perf diff:
Jin Yao:
- Support --time, --cpu, --pid and --tid filter options.
perf probe:
Arnaldo Carvalho de Melo:
- Clarify error message about not finding kernel modules debuginfo.
perf record:
Jiri Olsa:
- Fixup probing for max attr.precise_ip.
perf trace:
Arnaldo Carvalho de Melo:
- Add missing %s lost in the 'msg_flags' recvmmsg arg when adding prefix suppression logic.
perf annotate:
Arnaldo Carvalho de Melo:
- Calculate the max instruction name, align column to that, removing the
hardcoded max 6 chars and cope with instructions with names longer than that,
such as vpmovmskb, vpcmpeqb, etc.
kernel:
Song Liu:
- Consider events with attr.bpf_event set as side-band.
Gustavo A. R. Silva:
- Mark expected switch fall-through in perf_event_parse_addr_filter().
Libraries:
Jiri Olsa:
- Fix leaks and double frees on error paths.
libtraceevent:
Tony Jones:
- Fix buffer overflow in arg_eval().
python scripting:
Tony Jones:
- More python3 fixes.
Trivial:
Yang Wei:
- Remove needless extra semicolon in clang C++ glue code.
Intel PT/BTS:
Adrian Hunter:
- Improve auxtrace address filter error message when there is no DSO.
- Fix divide by zero when TSC is not available.
- Further improvements to the export to sqlite/posgresql python scripts
and to the GUI sqlviewer, exporting 'parent_id' so that we have enable
the creation of call trees.
Andi Kleen:
- Generalize function to copy from thread addr space from intel-bts code.
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Diffstat (limited to 'tools/perf/scripts/python/syscall-counts.py')
| -rw-r--r-- | tools/perf/scripts/python/syscall-counts.py | 31 |
1 files changed, 15 insertions, 16 deletions
diff --git a/tools/perf/scripts/python/syscall-counts.py b/tools/perf/scripts/python/syscall-counts.py index 0ebd89cfd42c..8adb95ff1664 100644 --- a/tools/perf/scripts/python/syscall-counts.py +++ b/tools/perf/scripts/python/syscall-counts.py | |||
| @@ -36,8 +36,8 @@ def trace_end(): | |||
| 36 | print_syscall_totals() | 36 | print_syscall_totals() |
| 37 | 37 | ||
| 38 | def raw_syscalls__sys_enter(event_name, context, common_cpu, | 38 | def raw_syscalls__sys_enter(event_name, context, common_cpu, |
| 39 | common_secs, common_nsecs, common_pid, common_comm, | 39 | common_secs, common_nsecs, common_pid, common_comm, |
| 40 | common_callchain, id, args): | 40 | common_callchain, id, args): |
| 41 | if for_comm is not None: | 41 | if for_comm is not None: |
| 42 | if common_comm != for_comm: | 42 | if common_comm != for_comm: |
| 43 | return | 43 | return |
| @@ -47,20 +47,19 @@ def raw_syscalls__sys_enter(event_name, context, common_cpu, | |||
| 47 | syscalls[id] = 1 | 47 | syscalls[id] = 1 |
| 48 | 48 | ||
| 49 | def syscalls__sys_enter(event_name, context, common_cpu, | 49 | def syscalls__sys_enter(event_name, context, common_cpu, |
| 50 | common_secs, common_nsecs, common_pid, common_comm, | 50 | common_secs, common_nsecs, common_pid, common_comm, id, args): |
| 51 | id, args): | ||
| 52 | raw_syscalls__sys_enter(**locals()) | 51 | raw_syscalls__sys_enter(**locals()) |
| 53 | 52 | ||
| 54 | def print_syscall_totals(): | 53 | def print_syscall_totals(): |
| 55 | if for_comm is not None: | 54 | if for_comm is not None: |
| 56 | print("\nsyscall events for %s:\n" % (for_comm)) | 55 | print("\nsyscall events for %s:\n" % (for_comm)) |
| 57 | else: | 56 | else: |
| 58 | print("\nsyscall events:\n") | 57 | print("\nsyscall events:\n") |
| 59 | 58 | ||
| 60 | print("%-40s %10s" % ("event", "count")) | 59 | print("%-40s %10s" % ("event", "count")) |
| 61 | print("%-40s %10s" % ("----------------------------------------", | 60 | print("%-40s %10s" % ("----------------------------------------", |
| 62 | "-----------")) | 61 | "-----------")) |
| 63 | 62 | ||
| 64 | for id, val in sorted(syscalls.items(), key = lambda kv: (kv[1], kv[0]), \ | 63 | for id, val in sorted(syscalls.items(), |
| 65 | reverse = True): | 64 | key = lambda kv: (kv[1], kv[0]), reverse = True): |
| 66 | print("%-40s %10d" % (syscall_name(id), val)) | 65 | print("%-40s %10d" % (syscall_name(id), val)) |
