From: Stanislav Fomichev <sdf@fomichev.me>
To: Yonghong Song <yhs@fb.com>
Cc: bpf@vger.kernel.org, netdev@vger.kernel.org,
Alexei Starovoitov <ast@fb.com>,
Daniel Borkmann <daniel@iogearbox.net>,
kernel-team@fb.com, Peter Zijlstra <peterz@infradead.org>
Subject: Re: [PATCH bpf-next v2 0/3] bpf: implement bpf_send_signal() helper
Date: Wed, 22 May 2019 09:38:54 -0700 [thread overview]
Message-ID: <20190522163854.GJ10244@mini-arch> (raw)
In-Reply-To: <20190522053900.1663459-1-yhs@fb.com>
On 05/21, Yonghong Song wrote:
> This patch tries to solve the following specific use case.
>
> Currently, bpf program can already collect stack traces
> through kernel function get_perf_callchain()
> when certain events happens (e.g., cache miss counter or
> cpu clock counter overflows). But such stack traces are
> not enough for jitted programs, e.g., hhvm (jited php).
> To get real stack trace, jit engine internal data structures
> need to be traversed in order to get the real user functions.
>
> bpf program itself may not be the best place to traverse
> the jit engine as the traversing logic could be complex and
> it is not a stable interface either.
>
> Instead, hhvm implements a signal handler,
> e.g. for SIGALARM, and a set of program locations which
> it can dump stack traces. When it receives a signal, it will
> dump the stack in next such program location.
>
[..]
> This patch implements bpf_send_signal() helper to send
> a signal to hhvm in real time, resulting in intended stack traces.
Series looks good. One minor nit/question: maybe rename bpf_send_signal
to something like bpf_send_signal_to_current/bpf_current_send_signal/etc?
bpf_send_signal is too generic now that you send the signal
to the current process..
> Patch #1 implemented the bpf_send_helper() in the kernel,
> Patch #2 synced uapi header bpf.h to tools directory.
> Patch #3 added a self test which covers tracepoint
> and perf_event bpf programs.
>
> Changelogs:
> RFC v1 => v2:
> . previous version allows to send signal to an arbitrary
> pid. This version just sends the signal to current
> task to avoid unstable pid and potential races between
> sending signals and task state changes for the pid.
>
> Yonghong Song (3):
> bpf: implement bpf_send_signal() helper
> tools/bpf: sync bpf uapi header bpf.h to tools directory
> tools/bpf: add a selftest for bpf_send_signal() helper
>
> include/uapi/linux/bpf.h | 17 +-
> kernel/trace/bpf_trace.c | 67 ++++++
> tools/include/uapi/linux/bpf.h | 17 +-
> tools/testing/selftests/bpf/Makefile | 3 +-
> tools/testing/selftests/bpf/bpf_helpers.h | 1 +
> .../bpf/progs/test_send_signal_kern.c | 51 +++++
> .../selftests/bpf/test_send_signal_user.c | 212 ++++++++++++++++++
> 7 files changed, 365 insertions(+), 3 deletions(-)
> create mode 100644 tools/testing/selftests/bpf/progs/test_send_signal_kern.c
> create mode 100644 tools/testing/selftests/bpf/test_send_signal_user.c
>
> --
> 2.17.1
>
next prev parent reply other threads:[~2019-05-22 16:38 UTC|newest]
Thread overview: 19+ messages / expand[flat|nested] mbox.gz Atom feed top
2019-05-22 5:39 [PATCH bpf-next v2 0/3] bpf: implement bpf_send_signal() helper Yonghong Song
2019-05-22 5:39 ` [PATCH bpf-next v2 1/3] " Yonghong Song
2019-05-23 15:41 ` Daniel Borkmann
2019-05-23 15:58 ` Yonghong Song
2019-05-23 16:28 ` Daniel Borkmann
2019-05-23 21:07 ` Yonghong Song
2019-05-23 21:30 ` Yonghong Song
2019-05-23 23:08 ` Daniel Borkmann
2019-05-23 23:54 ` Yonghong Song
2019-05-24 21:32 ` Daniel Borkmann
2019-05-22 5:39 ` [PATCH bpf-next v2 2/3] tools/bpf: sync bpf uapi header bpf.h to tools directory Yonghong Song
2019-05-22 5:39 ` [PATCH bpf-next v2 3/3] tools/bpf: add a selftest for bpf_send_signal() helper Yonghong Song
2019-05-22 18:48 ` Andrii Nakryiko
2019-05-22 19:38 ` Yonghong Song
2019-05-22 19:10 ` Stanislav Fomichev
2019-05-22 19:44 ` Yonghong Song
2019-05-22 16:38 ` Stanislav Fomichev [this message]
2019-05-22 16:43 ` [PATCH bpf-next v2 0/3] bpf: implement " Alexei Starovoitov
2019-05-22 17:11 ` Stanislav Fomichev
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=20190522163854.GJ10244@mini-arch \
--to=sdf@fomichev.me \
--cc=ast@fb.com \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@fb.com \
--cc=netdev@vger.kernel.org \
--cc=peterz@infradead.org \
--cc=yhs@fb.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 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.