mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
selftests/bpf: Add XDP load-balancer benchmark driver
Wire up the userspace side of the XDP load-balancer benchmark. 24 scenarios cover the full code-path matrix: TCP/UDP, IPv4/IPv6, cross-AF encap, LRU hit/miss/diverse/cold, consistent-hash bypass, SYN/RST flag handling, and early exits (unknown VIP, non-IP, ICMP, fragments, IP options). Before benchmarking each scenario validates correctness: the output packet is compared byte-for-byte against a pre-built expected packet and BPF map counters are checked against the expected values. Usage: sudo ./bench -a -w3 -p1 xdp-lb --scenario tcp-v4-lru-hit sudo ./bench xdp-lb --list-scenarios Signed-off-by: Puranjay Mohan <puranjay@kernel.org> Link: https://lore.kernel.org/r/20260427232313.1582588-7-puranjay@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
4b4f222910
commit
a4b5ba8187
|
|
@ -907,6 +907,7 @@ $(OUTPUT)/bench_bpf_crypto.o: $(OUTPUT)/crypto_bench.skel.h
|
|||
$(OUTPUT)/bench_sockmap.o: $(OUTPUT)/bench_sockmap_prog.skel.h
|
||||
$(OUTPUT)/bench_lpm_trie_map.o: $(OUTPUT)/lpm_trie_bench.skel.h $(OUTPUT)/lpm_trie_map.skel.h
|
||||
$(OUTPUT)/bench_bpf_nop.o: $(OUTPUT)/bpf_nop_bench.skel.h bench_bpf_timing.h
|
||||
$(OUTPUT)/bench_xdp_lb.o: $(OUTPUT)/xdp_lb_bench.skel.h bench_bpf_timing.h
|
||||
$(OUTPUT)/bench_bpf_timing.o: bench_bpf_timing.h
|
||||
$(OUTPUT)/bench.o: bench.h testing_helpers.h $(BPFOBJ)
|
||||
$(OUTPUT)/bench: LDLIBS += -lm
|
||||
|
|
@ -932,6 +933,7 @@ $(OUTPUT)/bench: $(OUTPUT)/bench.o \
|
|||
$(OUTPUT)/bench_lpm_trie_map.o \
|
||||
$(OUTPUT)/bench_bpf_timing.o \
|
||||
$(OUTPUT)/bench_bpf_nop.o \
|
||||
$(OUTPUT)/bench_xdp_lb.o \
|
||||
$(OUTPUT)/usdt_1.o \
|
||||
$(OUTPUT)/usdt_2.o \
|
||||
#
|
||||
|
|
|
|||
|
|
@ -286,6 +286,7 @@ extern struct argp bench_trigger_batch_argp;
|
|||
extern struct argp bench_crypto_argp;
|
||||
extern struct argp bench_sockmap_argp;
|
||||
extern struct argp bench_lpm_trie_map_argp;
|
||||
extern struct argp bench_xdp_lb_argp;
|
||||
|
||||
static const struct argp_child bench_parsers[] = {
|
||||
{ &bench_ringbufs_argp, 0, "Ring buffers benchmark", 0 },
|
||||
|
|
@ -302,6 +303,7 @@ static const struct argp_child bench_parsers[] = {
|
|||
{ &bench_crypto_argp, 0, "bpf crypto benchmark", 0 },
|
||||
{ &bench_sockmap_argp, 0, "bpf sockmap benchmark", 0 },
|
||||
{ &bench_lpm_trie_map_argp, 0, "LPM trie map benchmark", 0 },
|
||||
{ &bench_xdp_lb_argp, 0, "XDP load-balancer benchmark", 0 },
|
||||
{},
|
||||
};
|
||||
|
||||
|
|
@ -576,6 +578,7 @@ extern const struct bench bench_lpm_trie_update;
|
|||
extern const struct bench bench_lpm_trie_delete;
|
||||
extern const struct bench bench_lpm_trie_free;
|
||||
extern const struct bench bench_bpf_nop;
|
||||
extern const struct bench bench_xdp_lb;
|
||||
|
||||
static const struct bench *benchs[] = {
|
||||
&bench_count_global,
|
||||
|
|
@ -655,6 +658,7 @@ static const struct bench *benchs[] = {
|
|||
&bench_lpm_trie_delete,
|
||||
&bench_lpm_trie_free,
|
||||
&bench_bpf_nop,
|
||||
&bench_xdp_lb,
|
||||
};
|
||||
|
||||
static void find_benchmark(void)
|
||||
|
|
|
|||
1113
tools/testing/selftests/bpf/benchs/bench_xdp_lb.c
Normal file
1113
tools/testing/selftests/bpf/benchs/bench_xdp_lb.c
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue
Block a user