2023-01-04 07:38:31

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH 0/4] perf bpf_counter: A set of random fixes (v1)

Hello,

This is a collection of small fixes for perf stat bpf counters (bperf).

The bperf framework maintains perf_attr_map in the BPF fs to share the
same event as much as possible. But the size was limited to 16 and
perf stat with -ddd option would create more than 16 events and fails.

Also cgroup events with --for-each-cgroup had some other problems when
dealing with unsupported events and duplicate cgroups.

The code is available at 'perf/stat-bpf-fix-v1' branch in

git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git

Thanks,
Namhyung

Namhyung Kim (4):
perf bpf_counter: Add more error messages for bperf
perf bpf_counter: Increase perf_attr_map entries to 32
perf bpf_counter: Handle unsupported cgroup events
perf stat: Do not use the same cgroup more than once

tools/perf/util/bpf_counter.c | 11 ++++++++---
tools/perf/util/bpf_counter_cgroup.c | 14 +++-----------
tools/perf/util/cgroup.c | 23 ++++++++++++++++++-----
3 files changed, 29 insertions(+), 19 deletions(-)


base-commit: d8d85ce86dc82de4f88b821a78f533b9d5b22a45
--
2.39.0.314.g84b9a713c41-goog


2023-01-04 07:41:58

by Namhyung Kim

[permalink] [raw]
Subject: [PATCH 2/4] perf bpf_counter: Increase perf_attr_map entries to 32

The current size 16 cannot hold all events when user gave -dd or -ddd.
As it's a part of perf stat, let's increase the size to 32.

# unlink previous map to change the size
$ sudo unlink /sys/fs/bpf/perf_attr_map

$ sudo ./perf stat -a --bpf-counters -ddd sleep 1

Performance counter stats for 'system wide':

35,927.41 msec cpu-clock # 35.802 CPUs utilized
12,629 context-switches # 351.514 /sec
209 cpu-migrations # 5.817 /sec
826 page-faults # 22.991 /sec
2,155,729,621 cycles # 0.060 GHz (30.43%)
1,053,849,500 instructions # 0.49 insn per cycle (38.18%)
232,711,500 branches # 6.477 M/sec (38.44%)
10,693,352 branch-misses # 4.60% of all branches (31.27%)
267,561,655 L1-dcache-loads # 7.447 M/sec (30.58%)
27,290,728 L1-dcache-load-misses # 10.20% of all L1-dcache accesses (30.48%)
12,651,208 LLC-loads # 352.133 K/sec (30.78%)
1,274,018 LLC-load-misses # 10.07% of all LL-cache accesses (38.70%)
<not supported> L1-icache-loads
75,916,358 L1-icache-load-misses # 0.00% of all L1-icache accesses (38.11%)
273,330,559 dTLB-loads # 7.608 M/sec (30.54%)
2,864,458 dTLB-load-misses # 1.05% of all dTLB cache accesses (38.77%)
361,507 iTLB-loads # 10.062 K/sec (30.59%)
848,031 iTLB-load-misses # 234.58% of all iTLB cache accesses (31.30%)
<not supported> L1-dcache-prefetches
<not supported> L1-dcache-prefetch-misses

Signed-off-by: Namhyung Kim <[email protected]>
---
tools/perf/util/bpf_counter.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/tools/perf/util/bpf_counter.c b/tools/perf/util/bpf_counter.c
index 7f5cc1aa4903..de6331f5263c 100644
--- a/tools/perf/util/bpf_counter.c
+++ b/tools/perf/util/bpf_counter.c
@@ -28,7 +28,7 @@
#include "bpf_skel/bperf_leader.skel.h"
#include "bpf_skel/bperf_follower.skel.h"

-#define ATTR_MAP_SIZE 16
+#define ATTR_MAP_SIZE 32

static inline void *u64_to_ptr(__u64 ptr)
{
--
2.39.0.314.g84b9a713c41-goog

2023-01-04 14:39:06

by Arnaldo Carvalho de Melo

[permalink] [raw]
Subject: Re: [PATCH 0/4] perf bpf_counter: A set of random fixes (v1)

Em Tue, Jan 03, 2023 at 10:43:58PM -0800, Namhyung Kim escreveu:
> Hello,
>
> This is a collection of small fixes for perf stat bpf counters (bperf).
>
> The bperf framework maintains perf_attr_map in the BPF fs to share the
> same event as much as possible. But the size was limited to 16 and
> perf stat with -ddd option would create more than 16 events and fails.
>
> Also cgroup events with --for-each-cgroup had some other problems when
> dealing with unsupported events and duplicate cgroups.
>
> The code is available at 'perf/stat-bpf-fix-v1' branch in
>
> git://git.kernel.org/pub/scm/linux/kernel/git/namhyung/linux-perf.git

The first two are improvements, not strict fixes, so I'm leaving them
for the next merge window.

- Arnaldo

> Thanks,
> Namhyung
>
> Namhyung Kim (4):
> perf bpf_counter: Add more error messages for bperf
> perf bpf_counter: Increase perf_attr_map entries to 32
> perf bpf_counter: Handle unsupported cgroup events
> perf stat: Do not use the same cgroup more than once
>
> tools/perf/util/bpf_counter.c | 11 ++++++++---
> tools/perf/util/bpf_counter_cgroup.c | 14 +++-----------
> tools/perf/util/cgroup.c | 23 ++++++++++++++++++-----
> 3 files changed, 29 insertions(+), 19 deletions(-)
>
>
> base-commit: d8d85ce86dc82de4f88b821a78f533b9d5b22a45
> --
> 2.39.0.314.g84b9a713c41-goog

--

- Arnaldo