#!/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" |