bpf.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v3 bpf-next 0/3] Add bpf_perf_prog_read_branches() helper
@ 2020-01-23 21:23 Daniel Xu
  2020-01-23 21:23 ` [PATCH v3 bpf-next 1/3] bpf: " Daniel Xu
                   ` (2 more replies)
  0 siblings, 3 replies; 11+ messages in thread
From: Daniel Xu @ 2020-01-23 21:23 UTC (permalink / raw)
  To: bpf, ast, daniel, songliubraving, yhs, andriin
  Cc: Daniel Xu, linux-kernel, kernel-team, peterz, mingo, acme

Branch records are a CPU feature that can be configured to record
certain branches that are taken during code execution. This data is
particularly interesting for profile guided optimizations. perf has had
branch record support for a while but the data collection can be a bit
coarse grained.

We (Facebook) have seen in experiments that associating metadata with
branch records can improve results (after postprocessing). We generally
use bpf_probe_read_*() to get metadata out of userspace. That's why bpf
support for branch records is useful.

Aside from this particular use case, having branch data available to bpf
progs can be useful to get stack traces out of userspace applications
that omit frame pointers.

Changes in v3:
- Document filling unused buffer with zero
- Formatting fixes
- Rebase

Changes in v2:
- Change to a bpf helper instead of context access
- Avoid mentioning Intel specific things

Daniel Xu (3):
  bpf: Add bpf_perf_prog_read_branches() helper
  tools/bpf: Sync uapi header bpf.h
  selftests/bpf: add bpf_perf_prog_read_branches() selftest

 include/uapi/linux/bpf.h                      |  15 ++-
 kernel/trace/bpf_trace.c                      |  31 +++++
 tools/include/uapi/linux/bpf.h                |  15 ++-
 .../selftests/bpf/prog_tests/perf_branches.c  | 106 ++++++++++++++++++
 .../selftests/bpf/progs/test_perf_branches.c  |  39 +++++++
 5 files changed, 204 insertions(+), 2 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/perf_branches.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_perf_branches.c

-- 
2.21.1


^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2020-01-24 20:28 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-23 21:23 [PATCH v3 bpf-next 0/3] Add bpf_perf_prog_read_branches() helper Daniel Xu
2020-01-23 21:23 ` [PATCH v3 bpf-next 1/3] bpf: " Daniel Xu
2020-01-23 23:48   ` Yonghong Song
2020-01-24  0:49   ` John Fastabend
2020-01-24  2:02     ` Daniel Xu
2020-01-24  8:25       ` Martin Lau
2020-01-24 20:28         ` Daniel Xu
2020-01-23 21:23 ` [PATCH v3 bpf-next 2/3] tools/bpf: Sync uapi header bpf.h Daniel Xu
2020-01-23 21:23 ` [PATCH v3 bpf-next 3/3] selftests/bpf: add bpf_perf_prog_read_branches() selftest Daniel Xu
2020-01-23 23:20   ` Martin Lau
2020-01-24  2:55     ` Daniel Xu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).