[PATCHv4,0/3] bpf: trampoline fixes
mbox series

Message ID 20200123161508.915203-1-jolsa@kernel.org
Headers show
Series
  • bpf: trampoline fixes
Related show

Message

Jiri Olsa Jan. 23, 2020, 4:15 p.m. UTC
hi,
sending 2 fixes to fix kernel support for loading
trampoline programs in bcc/bpftrace and allow to
unwind through trampoline/dispatcher.

Original rfc post [1].

Speedup output of perf bench while running klockstat.py
on kprobes vs trampolines:

    Without:
            $ perf bench sched messaging -l 50000
            ...
                 Total time: 18.571 [sec]

    With current kprobe tracing:
            $ perf bench sched messaging -l 50000
            ...
                 Total time: 183.395 [sec]

    With kfunc tracing:
            $ perf bench sched messaging -l 50000
            ...
                 Total time: 39.773 [sec]

v4 changes:
  - rebased on latest bpf-next/master
  - removed image tree mutex and use trampoline_mutex instead
  - checking directly for string pointer in patch 1 [Alexei]
  - skipped helpers patches, as they are no longer needed [Alexei]

v3 changes:
  - added ack from John Fastabend for patch 1
  - move out is_bpf_image_address from is_bpf_text_address call [David]

v2 changes:
  - make the unwind work for dispatcher as well
  - added test for allowed trampolines count
  - used raw tp pt_regs nest-arrays for trampoline helpers

thanks,
jirka


[1] https://lore.kernel.org/netdev/20191229143740.29143-1-jolsa@kernel.org/
---
Jiri Olsa (3):
      bpf: Allow BTF ctx access for string pointers
      bpf: Allow to resolve bpf trampoline and dispatcher in unwind
      selftest/bpf: Add test for allowed trampolines count

 include/linux/bpf.h                                       |  12 +++++++++++-
 kernel/bpf/btf.c                                          |  16 ++++++++++++++++
 kernel/bpf/dispatcher.c                                   |   4 ++--
 kernel/bpf/trampoline.c                                   |  82 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------
 kernel/extable.c                                          |   7 +++++--
 tools/testing/selftests/bpf/prog_tests/trampoline_count.c | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 tools/testing/selftests/bpf/progs/test_trampoline_count.c |  21 +++++++++++++++++++++
 7 files changed, 242 insertions(+), 12 deletions(-)
 create mode 100644 tools/testing/selftests/bpf/prog_tests/trampoline_count.c
 create mode 100644 tools/testing/selftests/bpf/progs/test_trampoline_count.c

Comments

Alexei Starovoitov Jan. 25, 2020, 3:23 p.m. UTC | #1
On Thu, Jan 23, 2020 at 8:15 AM Jiri Olsa <jolsa@kernel.org> wrote:
>
> hi,
> sending 2 fixes to fix kernel support for loading
> trampoline programs in bcc/bpftrace and allow to
> unwind through trampoline/dispatcher.
>
> Original rfc post [1].
>
> Speedup output of perf bench while running klockstat.py
> on kprobes vs trampolines:
>
>     Without:
>             $ perf bench sched messaging -l 50000
>             ...
>                  Total time: 18.571 [sec]
>
>     With current kprobe tracing:
>             $ perf bench sched messaging -l 50000
>             ...
>                  Total time: 183.395 [sec]
>
>     With kfunc tracing:
>             $ perf bench sched messaging -l 50000
>             ...
>                  Total time: 39.773 [sec]
>
> v4 changes:
>   - rebased on latest bpf-next/master
>   - removed image tree mutex and use trampoline_mutex instead
>   - checking directly for string pointer in patch 1 [Alexei]
>   - skipped helpers patches, as they are no longer needed [Alexei]

Applied. Thanks
Arnaldo Carvalho de Melo Jan. 25, 2020, 3:35 p.m. UTC | #2
Em Sat, Jan 25, 2020 at 07:23:21AM -0800, Alexei Starovoitov escreveu:
> On Thu, Jan 23, 2020 at 8:15 AM Jiri Olsa <jolsa@kernel.org> wrote:
> > v4 changes:
> >   - rebased on latest bpf-next/master
> >   - removed image tree mutex and use trampoline_mutex instead
> >   - checking directly for string pointer in patch 1 [Alexei]
> >   - skipped helpers patches, as they are no longer needed [Alexei]
> 
> Applied. Thanks

While watching Jiri's talk about bpftrace, cool.

- Arnaldo