lkml.org 
[lkml]   [2020]   [Jan]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    Subject[PATCH v3 bpf-next 0/3] Add bpf_perf_prog_read_branches() helper
    Date
    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

    \
     
     \ /
      Last update: 2020-01-23 22:24    [W:3.234 / U:0.120 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site