From: Jiri Olsa <olsajiri@gmail.com>
To: Andrii Nakryiko <andrii@kernel.org>
Cc: bpf@vger.kernel.org, ast@kernel.org, daniel@iogearbox.net,
martin.lau@kernel.org, kernel-team@meta.com
Subject: Re: [PATCH bpf-next] selftests/bpf: add fexit and kretprobe triggering benchmarks
Date: Mon, 11 Mar 2024 09:17:15 +0100 [thread overview]
Message-ID: <Ze6-CzsPJ6w3Modl@krava> (raw)
In-Reply-To: <20240309005124.3004446-1-andrii@kernel.org>
On Fri, Mar 08, 2024 at 04:51:24PM -0800, Andrii Nakryiko wrote:
> We already have kprobe and fentry benchmarks. Let's add kretprobe and
> fexit ones for completeness.
>
> Signed-off-by: Andrii Nakryiko <andrii@kernel.org>
Acked-by: Jiri Olsa <jolsa@kernel.org>
jirka
> ---
> tools/testing/selftests/bpf/bench.c | 4 +++
> .../selftests/bpf/benchs/bench_trigger.c | 32 +++++++++++++++++++
> .../selftests/bpf/progs/trigger_bench.c | 14 ++++++++
> 3 files changed, 50 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/bench.c b/tools/testing/selftests/bpf/bench.c
> index 60df99b6ac72..8e02645afe31 100644
> --- a/tools/testing/selftests/bpf/bench.c
> +++ b/tools/testing/selftests/bpf/bench.c
> @@ -495,7 +495,9 @@ extern const struct bench bench_trig_base;
> extern const struct bench bench_trig_tp;
> extern const struct bench bench_trig_rawtp;
> extern const struct bench bench_trig_kprobe;
> +extern const struct bench bench_trig_kretprobe;
> extern const struct bench bench_trig_fentry;
> +extern const struct bench bench_trig_fexit;
> extern const struct bench bench_trig_fentry_sleep;
> extern const struct bench bench_trig_fmodret;
> extern const struct bench bench_trig_uprobe_base;
> @@ -539,7 +541,9 @@ static const struct bench *benchs[] = {
> &bench_trig_tp,
> &bench_trig_rawtp,
> &bench_trig_kprobe,
> + &bench_trig_kretprobe,
> &bench_trig_fentry,
> + &bench_trig_fexit,
> &bench_trig_fentry_sleep,
> &bench_trig_fmodret,
> &bench_trig_uprobe_base,
> diff --git a/tools/testing/selftests/bpf/benchs/bench_trigger.c b/tools/testing/selftests/bpf/benchs/bench_trigger.c
> index 064a1ef7a6fb..3f24be9cfcb9 100644
> --- a/tools/testing/selftests/bpf/benchs/bench_trigger.c
> +++ b/tools/testing/selftests/bpf/benchs/bench_trigger.c
> @@ -85,12 +85,24 @@ static void trigger_kprobe_setup(void)
> attach_bpf(ctx.skel->progs.bench_trigger_kprobe);
> }
>
> +static void trigger_kretprobe_setup(void)
> +{
> + setup_ctx();
> + attach_bpf(ctx.skel->progs.bench_trigger_kretprobe);
> +}
> +
> static void trigger_fentry_setup(void)
> {
> setup_ctx();
> attach_bpf(ctx.skel->progs.bench_trigger_fentry);
> }
>
> +static void trigger_fexit_setup(void)
> +{
> + setup_ctx();
> + attach_bpf(ctx.skel->progs.bench_trigger_fexit);
> +}
> +
> static void trigger_fentry_sleep_setup(void)
> {
> setup_ctx();
> @@ -261,6 +273,16 @@ const struct bench bench_trig_kprobe = {
> .report_final = hits_drops_report_final,
> };
>
> +const struct bench bench_trig_kretprobe = {
> + .name = "trig-kretprobe",
> + .validate = trigger_validate,
> + .setup = trigger_kretprobe_setup,
> + .producer_thread = trigger_producer,
> + .measure = trigger_measure,
> + .report_progress = hits_drops_report_progress,
> + .report_final = hits_drops_report_final,
> +};
> +
> const struct bench bench_trig_fentry = {
> .name = "trig-fentry",
> .validate = trigger_validate,
> @@ -271,6 +293,16 @@ const struct bench bench_trig_fentry = {
> .report_final = hits_drops_report_final,
> };
>
> +const struct bench bench_trig_fexit = {
> + .name = "trig-fexit",
> + .validate = trigger_validate,
> + .setup = trigger_fexit_setup,
> + .producer_thread = trigger_producer,
> + .measure = trigger_measure,
> + .report_progress = hits_drops_report_progress,
> + .report_final = hits_drops_report_final,
> +};
> +
> const struct bench bench_trig_fentry_sleep = {
> .name = "trig-fentry-sleep",
> .validate = trigger_validate,
> diff --git a/tools/testing/selftests/bpf/progs/trigger_bench.c b/tools/testing/selftests/bpf/progs/trigger_bench.c
> index 694e7cec1823..eb94f9c0186f 100644
> --- a/tools/testing/selftests/bpf/progs/trigger_bench.c
> +++ b/tools/testing/selftests/bpf/progs/trigger_bench.c
> @@ -33,6 +33,13 @@ int bench_trigger_kprobe(void *ctx)
> return 0;
> }
>
> +SEC("kretprobe/" SYS_PREFIX "sys_getpgid")
> +int bench_trigger_kretprobe(void *ctx)
> +{
> + __sync_add_and_fetch(&hits, 1);
> + return 0;
> +}
> +
> SEC("fentry/" SYS_PREFIX "sys_getpgid")
> int bench_trigger_fentry(void *ctx)
> {
> @@ -40,6 +47,13 @@ int bench_trigger_fentry(void *ctx)
> return 0;
> }
>
> +SEC("fexit/" SYS_PREFIX "sys_getpgid")
> +int bench_trigger_fexit(void *ctx)
> +{
> + __sync_add_and_fetch(&hits, 1);
> + return 0;
> +}
> +
> SEC("fentry.s/" SYS_PREFIX "sys_getpgid")
> int bench_trigger_fentry_sleep(void *ctx)
> {
> --
> 2.43.0
>
>
next prev parent reply other threads:[~2024-03-11 8:17 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-03-09 0:51 [PATCH bpf-next] selftests/bpf: add fexit and kretprobe triggering benchmarks Andrii Nakryiko
2024-03-11 8:17 ` Jiri Olsa [this message]
2024-03-11 19:39 ` patchwork-bot+netdevbpf
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=Ze6-CzsPJ6w3Modl@krava \
--to=olsajiri@gmail.com \
--cc=andrii@kernel.org \
--cc=ast@kernel.org \
--cc=bpf@vger.kernel.org \
--cc=daniel@iogearbox.net \
--cc=kernel-team@meta.com \
--cc=martin.lau@kernel.org \
/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.