mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-12-27 14:41:22 -05:00
The --max-summary option is to limit the number of output lines for
syscall summary stats. The max applies to each entries like thread and
cgroups. For total summary, it will just print up to the given number.
For example,
$ sudo perf trace -as --max-summary 3 sleep 0.1
ThreadPoolServi (1011651), 114 events, 14.8%
syscall calls errors total min avg max stddev
(msec) (msec) (msec) (msec) (%)
--------------- -------- ------ -------- --------- --------- --------- ------
epoll_wait 38 0 95.589 0.000 2.515 11.153 28.98%
futex 9 0 0.040 0.002 0.004 0.014 28.63%
read 10 0 0.037 0.003 0.004 0.005 4.67%
sleep (1050529), 250 events, 32.4%
syscall calls errors total min avg max stddev
(msec) (msec) (msec) (msec) (%)
--------------- -------- ------ -------- --------- --------- --------- ------
clock_nanosleep 1 0 100.156 100.156 100.156 100.156 0.00%
execve 4 3 1.020 0.005 0.255 0.989 95.93%
openat 36 17 0.416 0.003 0.012 0.029 10.58%
...
And this is for per-cgroup summary using BPF.
$ sudo perf trace -as --max-summary 3 --summary-mode=cgroup --bpf-summary sleep 0.1
cgroup /user.slice/user-657345.slice/user@657345.service/session.slice/org.gnome.Shell@x11.service, 12 events
syscall calls errors total min avg max stddev
(msec) (msec) (msec) (msec) (%)
--------------- -------- ------ -------- --------- --------- --------- ------
recvmsg 8 7 0.016 0.001 0.002 0.006 39.73%
ppoll 1 0 0.014 0.014 0.014 0.014 0.00%
write 2 0 0.010 0.002 0.005 0.008 61.02%
cgroup /user.slice/user-657345.slice/session-4.scope, 73 events
syscall calls errors total min avg max stddev
(msec) (msec) (msec) (msec) (%)
--------------- -------- ------ -------- --------- --------- --------- ------
epoll_wait 8 0 13.461 0.010 1.683 12.235 89.66%
ioctl 20 0 0.204 0.001 0.010 0.113 54.01%
writev 11 0 0.164 0.004 0.015 0.042 20.34%
Reviewed-by: Howard Chu <howardchu95@gmail.com>
Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Tested-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Adrian Hunter <adrian.hunter@intel.com>
Cc: Ian Rogers <irogers@google.com>
Cc: Ingo Molnar <mingo@kernel.org>
Cc: Jiri Olsa <jolsa@kernel.org>
Cc: Kan Liang <kan.liang@linux.intel.com>
Cc: Peter Zijlstra <peterz@infradead.org>
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
39 lines
936 B
C
39 lines
936 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef UTIL_TRACE_H
|
|
#define UTIL_TRACE_H
|
|
|
|
#include <stdio.h> /* for FILE */
|
|
|
|
enum trace_summary_mode {
|
|
SUMMARY__NONE = 0,
|
|
SUMMARY__BY_TOTAL,
|
|
SUMMARY__BY_THREAD,
|
|
SUMMARY__BY_CGROUP,
|
|
};
|
|
|
|
#ifdef HAVE_BPF_SKEL
|
|
|
|
int trace_prepare_bpf_summary(enum trace_summary_mode mode);
|
|
void trace_start_bpf_summary(void);
|
|
void trace_end_bpf_summary(void);
|
|
int trace_print_bpf_summary(FILE *fp, int max_summary);
|
|
void trace_cleanup_bpf_summary(void);
|
|
|
|
#else /* !HAVE_BPF_SKEL */
|
|
|
|
static inline int trace_prepare_bpf_summary(enum trace_summary_mode mode __maybe_unused)
|
|
{
|
|
return -1;
|
|
}
|
|
static inline void trace_start_bpf_summary(void) {}
|
|
static inline void trace_end_bpf_summary(void) {}
|
|
static inline int trace_print_bpf_summary(FILE *fp __maybe_unused, int max_summary __maybe_unused)
|
|
{
|
|
return 0;
|
|
}
|
|
static inline void trace_cleanup_bpf_summary(void) {}
|
|
|
|
#endif /* HAVE_BPF_SKEL */
|
|
|
|
#endif /* UTIL_TRACE_H */
|