Skip to content

Commit 379b97b

Browse files
olsajirianakryiko
authored andcommitted
selftests/bpf: Add kprobe multi triggering benchmarks
Adding kprobe multi triggering benchmarks. It's useful now to bench new fprobe implementation and might be useful later as well. Signed-off-by: Jiri Olsa <[email protected]> Signed-off-by: Andrii Nakryiko <[email protected]> Link: https://lore.kernel.org/bpf/[email protected]
1 parent 08701e3 commit 379b97b

File tree

3 files changed

+50
-0
lines changed

3 files changed

+50
-0
lines changed

tools/testing/selftests/bpf/bench.c

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -496,6 +496,8 @@ extern const struct bench bench_trig_tp;
496496
extern const struct bench bench_trig_rawtp;
497497
extern const struct bench bench_trig_kprobe;
498498
extern const struct bench bench_trig_kretprobe;
499+
extern const struct bench bench_trig_kprobe_multi;
500+
extern const struct bench bench_trig_kretprobe_multi;
499501
extern const struct bench bench_trig_fentry;
500502
extern const struct bench bench_trig_fexit;
501503
extern const struct bench bench_trig_fentry_sleep;
@@ -542,6 +544,8 @@ static const struct bench *benchs[] = {
542544
&bench_trig_rawtp,
543545
&bench_trig_kprobe,
544546
&bench_trig_kretprobe,
547+
&bench_trig_kprobe_multi,
548+
&bench_trig_kretprobe_multi,
545549
&bench_trig_fentry,
546550
&bench_trig_fexit,
547551
&bench_trig_fentry_sleep,

tools/testing/selftests/bpf/benchs/bench_trigger.c

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,18 @@ static void trigger_kretprobe_setup(void)
9191
attach_bpf(ctx.skel->progs.bench_trigger_kretprobe);
9292
}
9393

94+
static void trigger_kprobe_multi_setup(void)
95+
{
96+
setup_ctx();
97+
attach_bpf(ctx.skel->progs.bench_trigger_kprobe_multi);
98+
}
99+
100+
static void trigger_kretprobe_multi_setup(void)
101+
{
102+
setup_ctx();
103+
attach_bpf(ctx.skel->progs.bench_trigger_kretprobe_multi);
104+
}
105+
94106
static void trigger_fentry_setup(void)
95107
{
96108
setup_ctx();
@@ -283,6 +295,26 @@ const struct bench bench_trig_kretprobe = {
283295
.report_final = hits_drops_report_final,
284296
};
285297

298+
const struct bench bench_trig_kprobe_multi = {
299+
.name = "trig-kprobe-multi",
300+
.validate = trigger_validate,
301+
.setup = trigger_kprobe_multi_setup,
302+
.producer_thread = trigger_producer,
303+
.measure = trigger_measure,
304+
.report_progress = hits_drops_report_progress,
305+
.report_final = hits_drops_report_final,
306+
};
307+
308+
const struct bench bench_trig_kretprobe_multi = {
309+
.name = "trig-kretprobe-multi",
310+
.validate = trigger_validate,
311+
.setup = trigger_kretprobe_multi_setup,
312+
.producer_thread = trigger_producer,
313+
.measure = trigger_measure,
314+
.report_progress = hits_drops_report_progress,
315+
.report_final = hits_drops_report_final,
316+
};
317+
286318
const struct bench bench_trig_fentry = {
287319
.name = "trig-fentry",
288320
.validate = trigger_validate,

tools/testing/selftests/bpf/progs/trigger_bench.c

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,20 @@ int bench_trigger_kretprobe(void *ctx)
4040
return 0;
4141
}
4242

43+
SEC("kprobe.multi/" SYS_PREFIX "sys_getpgid")
44+
int bench_trigger_kprobe_multi(void *ctx)
45+
{
46+
__sync_add_and_fetch(&hits, 1);
47+
return 0;
48+
}
49+
50+
SEC("kretprobe.multi/" SYS_PREFIX "sys_getpgid")
51+
int bench_trigger_kretprobe_multi(void *ctx)
52+
{
53+
__sync_add_and_fetch(&hits, 1);
54+
return 0;
55+
}
56+
4357
SEC("fentry/" SYS_PREFIX "sys_getpgid")
4458
int bench_trigger_fentry(void *ctx)
4559
{

0 commit comments

Comments
 (0)