cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

udpgso_bench.sh (2412B)


      1#!/bin/bash
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# Run a series of udpgso benchmarks
      5
      6readonly GREEN='\033[0;92m'
      7readonly YELLOW='\033[0;33m'
      8readonly RED='\033[0;31m'
      9readonly NC='\033[0m' # No Color
     10
     11readonly KSFT_PASS=0
     12readonly KSFT_FAIL=1
     13readonly KSFT_SKIP=4
     14
     15num_pass=0
     16num_err=0
     17num_skip=0
     18
     19kselftest_test_exitcode() {
     20	local -r exitcode=$1
     21
     22	if [[ ${exitcode} -eq ${KSFT_PASS} ]]; then
     23		num_pass=$(( $num_pass + 1 ))
     24	elif [[ ${exitcode} -eq ${KSFT_SKIP} ]]; then
     25		num_skip=$(( $num_skip + 1 ))
     26	else
     27		num_err=$(( $num_err + 1 ))
     28	fi
     29}
     30
     31kselftest_exit() {
     32	echo -e "$(basename $0): PASS=${num_pass} SKIP=${num_skip} FAIL=${num_err}"
     33
     34	if [[ $num_err -ne 0 ]]; then
     35		echo -e "$(basename $0): ${RED}FAIL${NC}"
     36		exit ${KSFT_FAIL}
     37	fi
     38
     39	if [[ $num_skip -ne 0 ]]; then
     40		echo -e "$(basename $0): ${YELLOW}SKIP${NC}"
     41		exit ${KSFT_SKIP}
     42	fi
     43
     44	echo -e "$(basename $0): ${GREEN}PASS${NC}"
     45	exit ${KSFT_PASS}
     46}
     47
     48wake_children() {
     49	local -r jobs="$(jobs -p)"
     50
     51	if [[ "${jobs}" != "" ]]; then
     52		kill -1 ${jobs} 2>/dev/null
     53	fi
     54}
     55trap wake_children EXIT
     56
     57run_one() {
     58	local -r args=$@
     59
     60	./udpgso_bench_rx &
     61	./udpgso_bench_rx -t &
     62
     63	./udpgso_bench_tx ${args}
     64}
     65
     66run_in_netns() {
     67	local -r args=$@
     68
     69	./in_netns.sh $0 __subprocess ${args}
     70	kselftest_test_exitcode $?
     71}
     72
     73run_udp() {
     74	local -r args=$@
     75
     76	echo "udp"
     77	run_in_netns ${args}
     78
     79	echo "udp gso"
     80	run_in_netns ${args} -S 0
     81
     82	echo "udp gso zerocopy"
     83	run_in_netns ${args} -S 0 -z
     84
     85	echo "udp gso timestamp"
     86	run_in_netns ${args} -S 0 -T
     87
     88	echo "udp gso zerocopy audit"
     89	run_in_netns ${args} -S 0 -z -a
     90
     91	echo "udp gso timestamp audit"
     92	run_in_netns ${args} -S 0 -T -a
     93
     94	echo "udp gso zerocopy timestamp audit"
     95	run_in_netns ${args} -S 0 -T -z -a
     96}
     97
     98run_tcp() {
     99	local -r args=$@
    100
    101	echo "tcp"
    102	run_in_netns ${args} -t
    103
    104	echo "tcp zerocopy"
    105	run_in_netns ${args} -t -z
    106
    107	# excluding for now because test fails intermittently
    108	# add -P option to include poll() to reduce possibility of lost messages
    109	#echo "tcp zerocopy audit"
    110	#run_in_netns ${args} -t -z -P -a
    111}
    112
    113run_all() {
    114	local -r core_args="-l 3"
    115	local -r ipv4_args="${core_args} -4 -D 127.0.0.1"
    116	local -r ipv6_args="${core_args} -6 -D ::1"
    117
    118	echo "ipv4"
    119	run_tcp "${ipv4_args}"
    120	run_udp "${ipv4_args}"
    121
    122	echo "ipv6"
    123	run_tcp "${ipv6_args}"
    124	run_udp "${ipv6_args}"
    125}
    126
    127if [[ $# -eq 0 ]]; then
    128	run_all
    129	kselftest_exit
    130elif [[ $1 == "__subprocess" ]]; then
    131	shift
    132	run_one $@
    133else
    134	run_in_netns $@
    135fi