xref: /linux/tools/testing/selftests/bpf/benchs/run_bench_xdp_lb.sh (revision 51312b6360a92e7bccd7b05b028ba2066b093305)
1*51312b63SPuranjay Mohan#!/bin/bash
2*51312b63SPuranjay Mohan# SPDX-License-Identifier: GPL-2.0
3*51312b63SPuranjay Mohan
4*51312b63SPuranjay Mohansource ./benchs/run_common.sh
5*51312b63SPuranjay Mohan
6*51312b63SPuranjay Mohanset -eufo pipefail
7*51312b63SPuranjay Mohan
8*51312b63SPuranjay MohanWARMUP=${WARMUP:-3}
9*51312b63SPuranjay Mohan
10*51312b63SPuranjay MohanRUN="sudo ./bench -q -w${WARMUP} -a xdp-lb --machine-readable"
11*51312b63SPuranjay Mohan
12*51312b63SPuranjay MohanSEP="  +----------------------------------+----------+---------+----------+"
13*51312b63SPuranjay MohanHDR="  | %-32s | %8s | %7s | %8s |\n"
14*51312b63SPuranjay MohanROW="  | %-32s | %8s | %7s | %8s |\n"
15*51312b63SPuranjay Mohan
16*51312b63SPuranjay Mohanfunction group_header()
17*51312b63SPuranjay Mohan{
18*51312b63SPuranjay Mohan	printf "%s\n" "$SEP"
19*51312b63SPuranjay Mohan	printf "$HDR" "$1" "p50" "stddev" "p99"
20*51312b63SPuranjay Mohan	printf "%s\n" "$SEP"
21*51312b63SPuranjay Mohan}
22*51312b63SPuranjay Mohan
23*51312b63SPuranjay Mohanfunction rval()
24*51312b63SPuranjay Mohan{
25*51312b63SPuranjay Mohan	echo "$1" | sed -nE "s/.*$2=([^ ]+).*/\1/p"
26*51312b63SPuranjay Mohan}
27*51312b63SPuranjay Mohan
28*51312b63SPuranjay Mohanfunction run_scenario()
29*51312b63SPuranjay Mohan{
30*51312b63SPuranjay Mohan	local sc="$1"
31*51312b63SPuranjay Mohan	shift
32*51312b63SPuranjay Mohan	local output rline
33*51312b63SPuranjay Mohan
34*51312b63SPuranjay Mohan	output=$($RUN --scenario "$sc" "$@" 2>&1) || true
35*51312b63SPuranjay Mohan	rline=$(echo "$output" | grep '^RESULT ' || true)
36*51312b63SPuranjay Mohan
37*51312b63SPuranjay Mohan	if [ -z "$rline" ]; then
38*51312b63SPuranjay Mohan		printf "$ROW" "$sc" "ERR" "-" "-"
39*51312b63SPuranjay Mohan		return
40*51312b63SPuranjay Mohan	fi
41*51312b63SPuranjay Mohan
42*51312b63SPuranjay Mohan	printf "$ROW" "$sc" \
43*51312b63SPuranjay Mohan		"$(rval "$rline" median)" \
44*51312b63SPuranjay Mohan		"$(rval "$rline" stddev)" \
45*51312b63SPuranjay Mohan		"$(rval "$rline" p99)"
46*51312b63SPuranjay Mohan}
47*51312b63SPuranjay Mohan
48*51312b63SPuranjay Mohanheader "XDP load-balancer benchmark"
49*51312b63SPuranjay Mohan
50*51312b63SPuranjay Mohangroup_header "Single-flow baseline"
51*51312b63SPuranjay Mohanfor sc in tcp-v4-lru-hit tcp-v4-ch \
52*51312b63SPuranjay Mohan	  tcp-v6-lru-hit tcp-v6-ch \
53*51312b63SPuranjay Mohan	  udp-v4-lru-hit udp-v6-lru-hit \
54*51312b63SPuranjay Mohan	  tcp-v4v6-lru-hit; do
55*51312b63SPuranjay Mohan	run_scenario "$sc"
56*51312b63SPuranjay Mohandone
57*51312b63SPuranjay Mohan
58*51312b63SPuranjay Mohangroup_header "Diverse flows (4K src addrs)"
59*51312b63SPuranjay Mohanfor sc in tcp-v4-lru-diverse tcp-v4-ch-diverse \
60*51312b63SPuranjay Mohan	  tcp-v6-lru-diverse tcp-v6-ch-diverse \
61*51312b63SPuranjay Mohan	  udp-v4-lru-diverse; do
62*51312b63SPuranjay Mohan	run_scenario "$sc"
63*51312b63SPuranjay Mohandone
64*51312b63SPuranjay Mohan
65*51312b63SPuranjay Mohangroup_header "TCP flags"
66*51312b63SPuranjay Mohanrun_scenario tcp-v4-syn
67*51312b63SPuranjay Mohanrun_scenario tcp-v4-rst-miss
68*51312b63SPuranjay Mohan
69*51312b63SPuranjay Mohangroup_header "LRU stress"
70*51312b63SPuranjay Mohanrun_scenario tcp-v4-lru-miss
71*51312b63SPuranjay Mohanrun_scenario udp-v4-lru-miss
72*51312b63SPuranjay Mohanrun_scenario tcp-v4-lru-warmup
73*51312b63SPuranjay Mohan
74*51312b63SPuranjay Mohangroup_header "Early exits"
75*51312b63SPuranjay Mohanfor sc in pass-v4-no-vip pass-v6-no-vip pass-v4-icmp pass-non-ip drop-v4-frag drop-v4-options \
76*51312b63SPuranjay Mohan	  drop-v6-frag; do
77*51312b63SPuranjay Mohan	run_scenario "$sc"
78*51312b63SPuranjay Mohandone
79*51312b63SPuranjay Mohanprintf "%s\n" "$SEP"
80