Skip to content

Commit 1006571

Browse files
anakryikoborkmann
authored andcommitted
selftests/bpf: Add fexit and kretprobe triggering benchmarks
We already have kprobe and fentry benchmarks. Let's add kretprobe and fexit ones for completeness. Signed-off-by: Andrii Nakryiko <andrii@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Jiri Olsa <jolsa@kernel.org> Link: https://lore.kernel.org/bpf/20240309005124.3004446-1-andrii@kernel.org
1 parent afe0cbf commit 1006571

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
@@ -495,7 +495,9 @@ extern const struct bench bench_trig_base;
495495
extern const struct bench bench_trig_tp;
496496
extern const struct bench bench_trig_rawtp;
497497
extern const struct bench bench_trig_kprobe;
498+
extern const struct bench bench_trig_kretprobe;
498499
extern const struct bench bench_trig_fentry;
500+
extern const struct bench bench_trig_fexit;
499501
extern const struct bench bench_trig_fentry_sleep;
500502
extern const struct bench bench_trig_fmodret;
501503
extern const struct bench bench_trig_uprobe_base;
@@ -539,7 +541,9 @@ static const struct bench *benchs[] = {
539541
&bench_trig_tp,
540542
&bench_trig_rawtp,
541543
&bench_trig_kprobe,
544+
&bench_trig_kretprobe,
542545
&bench_trig_fentry,
546+
&bench_trig_fexit,
543547
&bench_trig_fentry_sleep,
544548
&bench_trig_fmodret,
545549
&bench_trig_uprobe_base,

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

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,12 +85,24 @@ static void trigger_kprobe_setup(void)
8585
attach_bpf(ctx.skel->progs.bench_trigger_kprobe);
8686
}
8787

88+
static void trigger_kretprobe_setup(void)
89+
{
90+
setup_ctx();
91+
attach_bpf(ctx.skel->progs.bench_trigger_kretprobe);
92+
}
93+
8894
static void trigger_fentry_setup(void)
8995
{
9096
setup_ctx();
9197
attach_bpf(ctx.skel->progs.bench_trigger_fentry);
9298
}
9399

100+
static void trigger_fexit_setup(void)
101+
{
102+
setup_ctx();
103+
attach_bpf(ctx.skel->progs.bench_trigger_fexit);
104+
}
105+
94106
static void trigger_fentry_sleep_setup(void)
95107
{
96108
setup_ctx();
@@ -261,6 +273,16 @@ const struct bench bench_trig_kprobe = {
261273
.report_final = hits_drops_report_final,
262274
};
263275

276+
const struct bench bench_trig_kretprobe = {
277+
.name = "trig-kretprobe",
278+
.validate = trigger_validate,
279+
.setup = trigger_kretprobe_setup,
280+
.producer_thread = trigger_producer,
281+
.measure = trigger_measure,
282+
.report_progress = hits_drops_report_progress,
283+
.report_final = hits_drops_report_final,
284+
};
285+
264286
const struct bench bench_trig_fentry = {
265287
.name = "trig-fentry",
266288
.validate = trigger_validate,
@@ -271,6 +293,16 @@ const struct bench bench_trig_fentry = {
271293
.report_final = hits_drops_report_final,
272294
};
273295

296+
const struct bench bench_trig_fexit = {
297+
.name = "trig-fexit",
298+
.validate = trigger_validate,
299+
.setup = trigger_fexit_setup,
300+
.producer_thread = trigger_producer,
301+
.measure = trigger_measure,
302+
.report_progress = hits_drops_report_progress,
303+
.report_final = hits_drops_report_final,
304+
};
305+
274306
const struct bench bench_trig_fentry_sleep = {
275307
.name = "trig-fentry-sleep",
276308
.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
@@ -33,13 +33,27 @@ int bench_trigger_kprobe(void *ctx)
3333
return 0;
3434
}
3535

36+
SEC("kretprobe/" SYS_PREFIX "sys_getpgid")
37+
int bench_trigger_kretprobe(void *ctx)
38+
{
39+
__sync_add_and_fetch(&hits, 1);
40+
return 0;
41+
}
42+
3643
SEC("fentry/" SYS_PREFIX "sys_getpgid")
3744
int bench_trigger_fentry(void *ctx)
3845
{
3946
__sync_add_and_fetch(&hits, 1);
4047
return 0;
4148
}
4249

50+
SEC("fexit/" SYS_PREFIX "sys_getpgid")
51+
int bench_trigger_fexit(void *ctx)
52+
{
53+
__sync_add_and_fetch(&hits, 1);
54+
return 0;
55+
}
56+
4357
SEC("fentry.s/" SYS_PREFIX "sys_getpgid")
4458
int bench_trigger_fentry_sleep(void *ctx)
4559
{

0 commit comments

Comments
 (0)