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