perf lock contention: Simplify spinlock check
authorNamhyung Kim <namhyung@kernel.org>
Fri, 30 Aug 2024 06:51:49 +0000 (23:51 -0700)
committerArnaldo Carvalho de Melo <acme@redhat.com>
Fri, 30 Aug 2024 12:57:47 +0000 (09:57 -0300)
The LCB_F_SPIN bit is used for spinlock, rwlock and optimistic spinning
in mutex.  In get_tstamp_elem() it needs to check spinlock and rwlock
only.  As mutex sets the LCB_F_MUTEX, it can check those two bits and
reduce the number of operations.

Signed-off-by: Namhyung Kim <namhyung@kernel.org>
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>
Cc: Song Liu <song@kernel.org>
Cc: bpf@vger.kernel.org
Link: https://lore.kernel.org/r/20240830065150.1758962-2-namhyung@kernel.org
Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
tools/perf/util/bpf_skel/lock_contention.bpf.c

index e8a6f64630192b87502d9247cb08c4bafd007ceb..4b7237e178bd2bc47077b3a2b72eeb9a941229d2 100644 (file)
@@ -323,8 +323,7 @@ static inline struct tstamp_data *get_tstamp_elem(__u32 flags)
        struct tstamp_data *pelem;
 
        /* Use per-cpu array map for spinlock and rwlock */
-       if (flags == (LCB_F_SPIN | LCB_F_READ) || flags == LCB_F_SPIN ||
-           flags == (LCB_F_SPIN | LCB_F_WRITE)) {
+       if ((flags & (LCB_F_SPIN | LCB_F_MUTEX)) == LCB_F_SPIN) {
                __u32 idx = 0;
 
                pelem = bpf_map_lookup_elem(&tstamp_cpu, &idx);