All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v11 perf, bpf-next 0/9] reveal invisible bpf programs
@ 2019-01-17 16:15 Song Liu
  2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 1/9] perf, bpf: Introduce PERF_RECORD_KSYMBOL Song Liu
                   ` (8 more replies)
  0 siblings, 9 replies; 33+ messages in thread
From: Song Liu @ 2019-01-17 16:15 UTC (permalink / raw)
  To: linux-kernel, netdev; +Cc: Song Liu, peterz, acme, ast, daniel, kernel-team

This set catches symbol for all bpf programs loaded/unloaded
before/during/after perf-record run PERF_RECORD_KSYMBOL and
PERF_RECORD_BPF_EVENT.

PERF_RECORD_KSYMBOL and PERF_RECORD_BPF_EVENT includes key information
of a bpf program load and unload. They are sent through perf ringbuffer,
and stored in perf.data. PERF_RECORD_KSYMBOL includes basic information
for simple profiling. It is ON by default. PERF_RECORD_BPF_EVENT is
used to gather more information of the bpf program. It is necessary for
perf-annotate of bpf programs.

Before this patch, perf-report will not be able to recover symbols of
bpf programs once the programs are unloaded.

This is to follow up Alexei's early effort [2] to show bpf programs via
mmap events.

Thanks,
Song

Changes v10 -> v11:
1. Removed perf_ksymbol_get_name_f;
2. Added BUILD_BUG_ON(BPF_TAG_SIZE % sizeof(u64)) to perf_event_bpf_event.

Changes v9 -> v10:
1. Added pr_debug() to show issue while synthesize BPF events;
2. Fixed code style to match existing code.

Changes v8 -> PATCH v9:
1. Per suggestion by Arnaldo, recorded checks in perf_missing_features.

Changes v7 -> PATCH v8:

1. Fixed perf dump_stack to use stdout instead of stderr;
2. Added module name [bpf] to /proc/kallsyms (9/9);
3. Do not show warning "Couldn't synthesize bpf events." when the kernel
   does not support proper sys_bpf call;
4. Added Arnaldo's patch that synthesizes BPF events in perf-top.

Changes v6 -> PATCH v7:
1. Split "[3/7] introduce PERF_RECORD_BPF_EVENT" into two commits:
     [3/8] introduce PERF_RECORD_BPF_EVENT
     [5/8] emit PERF_RECORD_KSYMBOL for BPF program load/unload

Changes v5 -> PATCH v6:
1. Reduce len in PERF_RECORD_KSYMBOL from u64 to u32. Use the 32 free bits
   for ksym_type (u16) and flags (u16).

Changes v4 -> PATCH v5:
1. Fixed build error reported by kbuild test bot.

Changes v3 -> PATCH v4:
1. Split information about bpf program  into PERF_RECORD_KSYMBOL (with
   name, addr, len); and PERF_RECORD_BPF_EVENT PERF_RECORD_BPF_EVENT
   (with id, tag);
2. Split the implementation in kernel and user space.

Changes v2 -> PATCH v3:
1. Rebase on bpf-next tree, and on top of BPF sub program tag patches [1]
   for latest information in bpf_prog_info.
2. Complete handling and synthesizing PERF_RECORD_BPF_EVENT in perf.

Changes v1 -> PATCH v2:
1. Only 3 of the 5 patches in v1, to focus on ABI first;
2. Generate PERF_RECORD_BPF_EVENT per bpf sub program instead of per prog;
3. Modify PERF_RECORD_BPF_EVENT with more details (addr, len, name),
   so that it can be used for basic profiling without calling sys_bpf.

Changes RFC -> PATCH v1:
1. In perf-record, poll vip events in a separate thread;
2. Add tag to bpf prog name;
3. Small refactorings.

[1] https://patchwork.ozlabs.org/project/netdev/list/?series=81037
[2] https://www.spinics.net/lists/netdev/msg524232.html

Arnaldo Carvalho de Melo (1):
  perf top: Synthesize BPF events for pre-existing loaded BPF programs

Song Liu (8):
  perf, bpf: Introduce PERF_RECORD_KSYMBOL
  sync tools/include/uapi/linux/perf_event.h
  perf, bpf: introduce PERF_RECORD_BPF_EVENT
  sync tools/include/uapi/linux/perf_event.h
  perf util: handle PERF_RECORD_KSYMBOL
  perf util: handle PERF_RECORD_BPF_EVENT
  perf tools: synthesize PERF_RECORD_* for loaded BPF programs
  bpf: add module name [bpf] to ksymbols for bpf programs

 include/linux/filter.h                |   7 +
 include/linux/perf_event.h            |  14 ++
 include/uapi/linux/perf_event.h       |  53 +++++-
 kernel/bpf/core.c                     |   2 +-
 kernel/bpf/syscall.c                  |   2 +
 kernel/events/core.c                  | 213 ++++++++++++++++++++-
 kernel/kallsyms.c                     |   2 +-
 tools/include/uapi/linux/perf_event.h |  53 +++++-
 tools/perf/builtin-record.c           |   7 +
 tools/perf/builtin-top.c              |   7 +
 tools/perf/perf.h                     |   1 +
 tools/perf/util/Build                 |   2 +
 tools/perf/util/bpf-event.c           | 256 ++++++++++++++++++++++++++
 tools/perf/util/bpf-event.h           |  16 ++
 tools/perf/util/event.c               |  41 +++++
 tools/perf/util/event.h               |  36 ++++
 tools/perf/util/evsel.c               |  19 +-
 tools/perf/util/evsel.h               |   2 +
 tools/perf/util/machine.c             |  58 ++++++
 tools/perf/util/machine.h             |   3 +
 tools/perf/util/session.c             |   8 +
 tools/perf/util/tool.h                |   5 +-
 22 files changed, 800 insertions(+), 7 deletions(-)
 create mode 100644 tools/perf/util/bpf-event.c
 create mode 100644 tools/perf/util/bpf-event.h

--
2.17.1

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

end of thread, other threads:[~2019-01-24  9:49 UTC | newest]

Thread overview: 33+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-17 16:15 [PATCH v11 perf, bpf-next 0/9] reveal invisible bpf programs Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 1/9] perf, bpf: Introduce PERF_RECORD_KSYMBOL Song Liu
2019-01-22 10:18   ` [tip:perf/core] " tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 2/9] sync tools/include/uapi/linux/perf_event.h Song Liu
2019-01-22 10:18   ` [tip:perf/core] tools headers uapi: Sync tools/include/uapi/linux/perf_event.h tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 3/9] perf, bpf: introduce PERF_RECORD_BPF_EVENT Song Liu
2019-01-22 10:19   ` [tip:perf/core] perf, bpf: Introduce PERF_RECORD_BPF_EVENT tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 4/9] sync tools/include/uapi/linux/perf_event.h Song Liu
2019-01-22 10:20   ` [tip:perf/core] tools headers uapi: Sync tools/include/uapi/linux/perf_event.h tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 5/9] perf util: handle PERF_RECORD_KSYMBOL Song Liu
2019-01-18 14:45   ` Arnaldo Carvalho de Melo
2019-01-22 10:20   ` [tip:perf/core] perf tools: Handle PERF_RECORD_KSYMBOL tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 6/9] perf util: handle PERF_RECORD_BPF_EVENT Song Liu
2019-01-18 14:46   ` Arnaldo Carvalho de Melo
2019-01-22 10:21   ` [tip:perf/core] perf tools: Handle PERF_RECORD_BPF_EVENT tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 7/9] perf tools: synthesize PERF_RECORD_* for loaded BPF programs Song Liu
2019-01-18 14:46   ` Arnaldo Carvalho de Melo
2019-01-22 14:13     ` Arnaldo Carvalho de Melo
2019-01-22 14:31       ` Arnaldo Carvalho de Melo
2019-01-22 14:48         ` Arnaldo Carvalho de Melo
2019-01-22 14:51         ` Jiri Olsa
2019-01-22 14:58           ` Arnaldo Carvalho de Melo
2019-01-22 15:21             ` Jiri Olsa
2019-01-22 18:38               ` Song Liu
2019-01-22 19:15                 ` Jiri Olsa
2019-01-22 19:24                   ` Song Liu
2019-01-22 19:44                     ` Jiri Olsa
2019-01-24  9:49                     ` Arnaldo Carvalho de Melo
2019-01-22 10:22   ` [tip:perf/core] perf tools: Synthesize " tip-bot for Song Liu
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 8/9] perf top: Synthesize BPF events for pre-existing " Song Liu
2019-01-22 10:22   ` [tip:perf/core] " tip-bot for Arnaldo Carvalho de Melo
2019-01-17 16:15 ` [PATCH v11 perf, bpf-next 9/9] bpf: add module name [bpf] to ksymbols for bpf programs Song Liu
2019-01-22 10:23   ` [tip:perf/core] bpf: Add " tip-bot for Song Liu

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.