linux/tools/perf/util/bpf_skel
Namhyung Kim b44d665368 perf lock contention: Account contending locks too
Currently it accounts the contention using delta between timestamps in
lock:contention_begin and lock:contention_end tracepoints.  But it means
the lock should see the both events during the monitoring period.

Actually there are 4 cases that happen with the monitoring:

                monitoring period
            /                       \
            |                       |
 1:  B------+-----------------------+--------E
 2:    B----+-------------E         |
 3:         |           B-----------+----E
 4:         |     B-------------E   |
            |                       |
            t0                      t1

where B and E mean contention BEGIN and END, respectively.  So it only
accounts the case 4 for now.  It seems there's no way to handle the case
1.  The case 2 might be handled if it saved the timestamp (t0), but it
lacks the information from the B notably the flags which shows the lock
types.  Also it could be a nested lock which it currently ignores.  So
I think we should ignore the case 2.

However we can handle the case 3 if we save the timestamp (t1) at the
end of the period.  And then it can iterate the map entries in the
userspace and update the lock stat accordinly.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
Reviewed-by: Ian Rogers <irogers@google.com>
Reviwed-by: Arnaldo Carvalho de Melo <acme@redhat.com>
Cc: Song Liu <song@kernel.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20240228053335.312776-1-namhyung@kernel.org
2024-02-29 13:53:56 -08:00
..
vmlinux perf augmented_raw_syscalls.bpf: Move 'struct timespec64' to vmlinux.h 2024-02-16 15:19:57 -08:00
.gitignore perf build: Add ability to build with a generated vmlinux.h 2023-06-23 21:35:45 -07:00
augmented_raw_syscalls.bpf.c perf augmented_raw_syscalls.bpf: Move 'struct timespec64' to vmlinux.h 2024-02-16 15:19:57 -08:00
bench_uprobe.bpf.c perf bench uprobe trace_printk: Add entry attaching an BPF program that does a trace_printk 2023-07-20 11:33:24 -03:00
bperf_cgroup.bpf.c perf stat: Support old kernels for bperf cgroup counting 2022-10-14 10:29:05 -03:00
bperf_follower.bpf.c perf bpf_skel: Do not use typedef to avoid error on old clang 2021-12-06 21:57:53 -03:00
bperf_leader.bpf.c perf bpf_skel: Do not use typedef to avoid error on old clang 2021-12-06 21:57:53 -03:00
bperf_u.h perf stat: Introduce 'bperf' to share hardware PMCs with BPF 2021-03-23 17:46:44 -03:00
bpf_prog_profiler.bpf.c perf bpf: Fix building perf with BUILD_BPF_SKEL=1 by default in more distros 2021-12-06 21:57:53 -03:00
func_latency.bpf.c perf ftrace latency: Add -n/--use-nsec option 2022-03-22 17:43:46 -03:00
kwork_top.bpf.c perf kwork top: Add BPF-based statistics on softirq event support 2023-09-12 17:31:59 -03:00
kwork_trace.bpf.c perf kwork: Add workqueue trace BPF support 2022-07-26 16:31:54 -03:00
lock_contention.bpf.c perf lock contention: Account contending locks too 2024-02-29 13:53:56 -08:00
lock_data.h perf lock contention: Account contending locks too 2024-02-29 13:53:56 -08:00
off_cpu.bpf.c perf test: Fix offcpu test prev_state check 2023-02-19 07:58:23 -03:00
sample_filter.bpf.c perf bpf filter: Fix a broken perf sample data naming for BPF CO-RE 2023-05-26 15:21:08 -03:00
sample-filter.h perf bpf filter: Add logical OR operator 2023-03-15 11:08:36 -03:00