Commit 6db2d81a authored by Alexei Starovoitov's avatar Alexei Starovoitov Committed by Daniel Borkmann

selftests/bpf: Add a test for a large global function

test results:
pyperf50 with always_inlined the same function five times: processed 46378 insns
pyperf50 with global function: processed 6102 insns
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
Acked-by: default avatarSong Liu <songliubraving@fb.com>
Link: https://lore.kernel.org/bpf/20200110064124.1760511-5-ast@kernel.org
parent 7608e4db
...@@ -48,6 +48,8 @@ void test_bpf_verif_scale(void) ...@@ -48,6 +48,8 @@ void test_bpf_verif_scale(void)
{ "test_verif_scale2.o", BPF_PROG_TYPE_SCHED_CLS }, { "test_verif_scale2.o", BPF_PROG_TYPE_SCHED_CLS },
{ "test_verif_scale3.o", BPF_PROG_TYPE_SCHED_CLS }, { "test_verif_scale3.o", BPF_PROG_TYPE_SCHED_CLS },
{ "pyperf_global.o", BPF_PROG_TYPE_RAW_TRACEPOINT },
/* full unroll by llvm */ /* full unroll by llvm */
{ "pyperf50.o", BPF_PROG_TYPE_RAW_TRACEPOINT }, { "pyperf50.o", BPF_PROG_TYPE_RAW_TRACEPOINT },
{ "pyperf100.o", BPF_PROG_TYPE_RAW_TRACEPOINT }, { "pyperf100.o", BPF_PROG_TYPE_RAW_TRACEPOINT },
......
...@@ -154,7 +154,12 @@ struct { ...@@ -154,7 +154,12 @@ struct {
__uint(value_size, sizeof(long long) * 127); __uint(value_size, sizeof(long long) * 127);
} stackmap SEC(".maps"); } stackmap SEC(".maps");
static __always_inline int __on_event(struct pt_regs *ctx) #ifdef GLOBAL_FUNC
__attribute__((noinline))
#else
static __always_inline
#endif
int __on_event(struct bpf_raw_tracepoint_args *ctx)
{ {
uint64_t pid_tgid = bpf_get_current_pid_tgid(); uint64_t pid_tgid = bpf_get_current_pid_tgid();
pid_t pid = (pid_t)(pid_tgid >> 32); pid_t pid = (pid_t)(pid_tgid >> 32);
...@@ -254,7 +259,7 @@ static __always_inline int __on_event(struct pt_regs *ctx) ...@@ -254,7 +259,7 @@ static __always_inline int __on_event(struct pt_regs *ctx)
} }
SEC("raw_tracepoint/kfree_skb") SEC("raw_tracepoint/kfree_skb")
int on_event(struct pt_regs* ctx) int on_event(struct bpf_raw_tracepoint_args* ctx)
{ {
int i, ret = 0; int i, ret = 0;
ret |= __on_event(ctx); ret |= __on_event(ctx);
......
// SPDX-License-Identifier: GPL-2.0
/* Copyright (c) 2020 Facebook */
#define STACK_MAX_LEN 50
#define GLOBAL_FUNC
#include "pyperf.h"
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment