From: Blake Jones <blakejones@google.com>
To: Alexei Starovoitov <ast@kernel.org>,
Daniel Borkmann <daniel@iogearbox.net>,
Andrii Nakryiko <andrii@kernel.org>,
Martin KaFai Lau <martin.lau@linux.dev>,
Eduard Zingerman <eddyz87@gmail.com>, Song Liu <song@kernel.org>,
Yonghong Song <yonghong.song@linux.dev>,
John Fastabend <john.fastabend@gmail.com>,
KP Singh <kpsingh@kernel.org>,
Stanislav Fomichev <sdf@fomichev.me>, Hao Luo <haoluo@google.com>,
Jiri Olsa <jolsa@kernel.org>,
Peter Zijlstra <peterz@infradead.org>,
Ingo Molnar <mingo@redhat.com>,
Arnaldo Carvalho de Melo <acme@kernel.org>,
Namhyung Kim <namhyung@kernel.org>,
Mark Rutland <mark.rutland@arm.com>,
Alexander Shishkin <alexander.shishkin@linux.intel.com>,
Ian Rogers <irogers@google.com>,
Adrian Hunter <adrian.hunter@intel.com>,
Kan Liang <kan.liang@linux.intel.com>
Cc: Chun-Tse Shao <ctshao@google.com>,
Zhongqiu Han <quic_zhonhan@quicinc.com>,
James Clark <james.clark@linaro.org>,
Charlie Jenkins <charlie@rivosinc.com>,
Andi Kleen <ak@linux.intel.com>,
Dmitry Vyukov <dvyukov@google.com>, Leo Yan <leo.yan@arm.com>,
Yujie Liu <yujie.liu@intel.com>,
Graham Woodward <graham.woodward@arm.com>,
Yicong Yang <yangyicong@hisilicon.com>,
Ben Gainey <ben.gainey@arm.com>,
linux-kernel@vger.kernel.org, bpf@vger.kernel.org,
linux-perf-users@vger.kernel.org,
Blake Jones <blakejones@google.com>
Subject: [PATCH 0/3] perf: generate events for BPF metadata
Date: Wed, 21 May 2025 15:27:22 -0700 [thread overview]
Message-ID: <20250521222725.3895192-1-blakejones@google.com> (raw)
Commit ffa915f46193 ("Merge branch 'bpf_metadata'"), from September 2020,
added support to the kernel, libbpf, and bpftool to treat read-only BPF
variables that have names starting with 'bpf_metadata_' specially. This
patch series updates perf to handle these variables similarly, allowing a
perf.data file to capture relevant information about BPF programs on the
system being profiled.
When it encounters a BPF program, it reads the program's maps to find an
'.rodata' map with 'bpf_metadata_' variables. If it finds one, it extracts
their values as strings, and creates a new PERF_RECORD_BPF_METADATA
synthetic event using that data. It does this both for BPF programs that
were loaded when a 'perf record' starts, as well as for programs that are
loaded while the profile is running. For the latter case, it stores the
metadata for the duration of the profile, and then dumps it at the end of
the profile, where it's in a better context to do so.
The PERF_RECORD_BPF_METADATA event holds an array of key-value pairs, where
the key is the variable name (minus the "bpf_metadata_" prefix) and the
value is the variable's value, formatted as a string. The event also
includes the BPF program's name, so it can be correlated with
PERF_RECORD_KSYMBOL events.
Blake Jones (3):
perf: add support for printing BTF character arrays as strings
perf: collect BPF metadata from existing BPF programs
perf: collect BPF metadata from new programs, and display the new
event
tools/lib/bpf/btf.h | 3 +-
tools/lib/bpf/btf_dump.c | 51 ++-
tools/lib/perf/include/perf/event.h | 18 +
tools/perf/builtin-inject.c | 1 +
tools/perf/builtin-record.c | 8 +
tools/perf/builtin-script.c | 15 +-
tools/perf/tests/shell/test_bpf_metadata.sh | 67 ++++
tools/perf/util/bpf-event.c | 356 +++++++++++++++++++
tools/perf/util/bpf-event.h | 14 +
tools/perf/util/bpf_skel/sample_filter.bpf.c | 4 +
tools/perf/util/env.c | 19 +-
tools/perf/util/env.h | 4 +
tools/perf/util/event.c | 21 ++
tools/perf/util/event.h | 1 +
tools/perf/util/header.c | 1 +
tools/perf/util/session.c | 4 +
tools/perf/util/synthetic-events.h | 2 +
tools/perf/util/tool.c | 14 +
tools/perf/util/tool.h | 3 +-
19 files changed, 600 insertions(+), 6 deletions(-)
create mode 100644 tools/perf/tests/shell/test_bpf_metadata.sh
--
2.49.0.1143.g0be31eac6b-goog
next reply other threads:[~2025-05-21 22:27 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-21 22:27 Blake Jones [this message]
2025-05-21 22:27 ` [PATCH 1/3] perf: add support for printing BTF character arrays as strings Blake Jones
2025-05-22 17:42 ` Arnaldo Carvalho de Melo
2025-05-22 18:19 ` Blake Jones
2025-05-29 0:58 ` Blake Jones
2025-05-30 17:40 ` Namhyung Kim
2025-05-31 7:26 ` Blake Jones
2025-06-03 18:23 ` Blake Jones
2025-06-03 18:43 ` Alexei Starovoitov
2025-06-03 19:47 ` Namhyung Kim
2025-05-21 22:27 ` [PATCH 2/3] perf: collect BPF metadata from existing BPF programs Blake Jones
2025-05-29 17:47 ` Ian Rogers
2025-05-29 23:21 ` Blake Jones
2025-05-29 23:23 ` Ian Rogers
2025-06-03 20:15 ` Namhyung Kim
2025-06-03 21:27 ` Blake Jones
2025-06-03 21:44 ` Namhyung Kim
2025-06-03 21:54 ` Blake Jones
2025-06-03 22:09 ` Namhyung Kim
2025-06-03 22:29 ` Blake Jones
2025-06-04 21:40 ` Namhyung Kim
2025-06-04 22:12 ` Arnaldo Carvalho de Melo
2025-06-04 23:04 ` Blake Jones
2025-05-21 22:27 ` [PATCH 3/3] perf: collect BPF metadata from new programs, and display the new event Blake Jones
2025-05-29 18:12 ` Ian Rogers
2025-05-29 23:09 ` Blake Jones
2025-05-29 23:27 ` Ian Rogers
2025-05-29 23:49 ` Blake Jones
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20250521222725.3895192-1-blakejones@google.com \
--to=blakejones@google.com \
--cc=acme@kernel.org \
--cc=adrian.hunter@intel.com \
--cc=ak@linux.intel.com \
--cc=alexander.shishkin@linux.intel.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=ben.gainey@arm.com \
--cc=bpf@vger.kernel.org \
--cc=charlie@rivosinc.com \
--cc=ctshao@google.com \
--cc=daniel@iogearbox.net \
--cc=dvyukov@google.com \
--cc=eddyz87@gmail.com \
--cc=graham.woodward@arm.com \
--cc=haoluo@google.com \
--cc=irogers@google.com \
--cc=james.clark@linaro.org \
--cc=john.fastabend@gmail.com \
--cc=jolsa@kernel.org \
--cc=kan.liang@linux.intel.com \
--cc=kpsingh@kernel.org \
--cc=leo.yan@arm.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-perf-users@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=martin.lau@linux.dev \
--cc=mingo@redhat.com \
--cc=namhyung@kernel.org \
--cc=peterz@infradead.org \
--cc=quic_zhonhan@quicinc.com \
--cc=sdf@fomichev.me \
--cc=song@kernel.org \
--cc=yangyicong@hisilicon.com \
--cc=yonghong.song@linux.dev \
--cc=yujie.liu@intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®