mirror of
https://github.com/torvalds/linux.git
synced 2026-07-28 01:55:51 +02:00
selftests/bpf: Add XDP load-balancer benchmark run script
Add a convenience script that runs all 24 XDP load-balancer scenarios and formats the results as a table with median, stddev, and p99 columns. ./benchs/run_bench_xdp_lb.sh Signed-off-by: Puranjay Mohan <puranjay@kernel.org> Link: https://lore.kernel.org/r/20260427232313.1582588-8-puranjay@kernel.org Signed-off-by: Alexei Starovoitov <ast@kernel.org>
This commit is contained in:
parent
a4b5ba8187
commit
51312b6360
79
tools/testing/selftests/bpf/benchs/run_bench_xdp_lb.sh
Executable file
79
tools/testing/selftests/bpf/benchs/run_bench_xdp_lb.sh
Executable file
|
|
@ -0,0 +1,79 @@
|
|||
#!/bin/bash
|
||||
# SPDX-License-Identifier: GPL-2.0
|
||||
|
||||
source ./benchs/run_common.sh
|
||||
|
||||
set -eufo pipefail
|
||||
|
||||
WARMUP=${WARMUP:-3}
|
||||
|
||||
RUN="sudo ./bench -q -w${WARMUP} -a xdp-lb --machine-readable"
|
||||
|
||||
SEP=" +----------------------------------+----------+---------+----------+"
|
||||
HDR=" | %-32s | %8s | %7s | %8s |\n"
|
||||
ROW=" | %-32s | %8s | %7s | %8s |\n"
|
||||
|
||||
function group_header()
|
||||
{
|
||||
printf "%s\n" "$SEP"
|
||||
printf "$HDR" "$1" "p50" "stddev" "p99"
|
||||
printf "%s\n" "$SEP"
|
||||
}
|
||||
|
||||
function rval()
|
||||
{
|
||||
echo "$1" | sed -nE "s/.*$2=([^ ]+).*/\1/p"
|
||||
}
|
||||
|
||||
function run_scenario()
|
||||
{
|
||||
local sc="$1"
|
||||
shift
|
||||
local output rline
|
||||
|
||||
output=$($RUN --scenario "$sc" "$@" 2>&1) || true
|
||||
rline=$(echo "$output" | grep '^RESULT ' || true)
|
||||
|
||||
if [ -z "$rline" ]; then
|
||||
printf "$ROW" "$sc" "ERR" "-" "-"
|
||||
return
|
||||
fi
|
||||
|
||||
printf "$ROW" "$sc" \
|
||||
"$(rval "$rline" median)" \
|
||||
"$(rval "$rline" stddev)" \
|
||||
"$(rval "$rline" p99)"
|
||||
}
|
||||
|
||||
header "XDP load-balancer benchmark"
|
||||
|
||||
group_header "Single-flow baseline"
|
||||
for sc in tcp-v4-lru-hit tcp-v4-ch \
|
||||
tcp-v6-lru-hit tcp-v6-ch \
|
||||
udp-v4-lru-hit udp-v6-lru-hit \
|
||||
tcp-v4v6-lru-hit; do
|
||||
run_scenario "$sc"
|
||||
done
|
||||
|
||||
group_header "Diverse flows (4K src addrs)"
|
||||
for sc in tcp-v4-lru-diverse tcp-v4-ch-diverse \
|
||||
tcp-v6-lru-diverse tcp-v6-ch-diverse \
|
||||
udp-v4-lru-diverse; do
|
||||
run_scenario "$sc"
|
||||
done
|
||||
|
||||
group_header "TCP flags"
|
||||
run_scenario tcp-v4-syn
|
||||
run_scenario tcp-v4-rst-miss
|
||||
|
||||
group_header "LRU stress"
|
||||
run_scenario tcp-v4-lru-miss
|
||||
run_scenario udp-v4-lru-miss
|
||||
run_scenario tcp-v4-lru-warmup
|
||||
|
||||
group_header "Early exits"
|
||||
for sc in pass-v4-no-vip pass-v6-no-vip pass-v4-icmp pass-non-ip drop-v4-frag drop-v4-options \
|
||||
drop-v6-frag; do
|
||||
run_scenario "$sc"
|
||||
done
|
||||
printf "%s\n" "$SEP"
|
||||
Loading…
Reference in New Issue
Block a user