From c3f8e4d2cd55e57419478ff849265d1e342e7990 Mon Sep 17 00:00:00 2001 From: Stefano Brivio Date: Thu, 21 Oct 2021 04:54:05 +0200 Subject: test/perf: Actually load passt enough to test UDP performance With recent improvements, we're not CPU-bound at all while testing UDP performance. Give the VM more memory and CPUs, forward two additional ports, start up to four threads in parallel, and give single iperf3 threads higher bandwidth targets. Signed-off-by: Stefano Brivio --- test/lib/setup | 13 ++++++++----- test/perf/passt_udp | 36 ++++++++++++++++++------------------ test/perf/pasta_udp | 16 ++++++++-------- 3 files changed, 34 insertions(+), 31 deletions(-) diff --git a/test/lib/setup b/test/lib/setup index a81e91f..124e35b 100755 --- a/test/lib/setup +++ b/test/lib/setup @@ -13,9 +13,9 @@ # Copyright (c) 2021 Red Hat GmbH # Author: Stefano Brivio -VCPUS="$( [ $(nproc) -ge 8 ] && echo 4 || echo $(( $(nproc) / 2 + 1 )) )" +VCPUS="$( [ $(nproc) -ge 8 ] && echo 6 || echo $(( $(nproc) / 2 + 1 )) )" __mem_kib="$(sed -n 's/MemTotal:[ ]*\([0-9]*\) kB/\1/p' /proc/meminfo)" -VMEM="$((${__mem_kib} / 1024 / 8))" +VMEM="$((${__mem_kib} / 1024 / 4))" # setup_build() - Set up pane layout for build tests setup_build() { @@ -107,6 +107,9 @@ setup_passt_in_ns() { # 10011 as server | forwarded to guest | spliced to ns # 10012 | as server | spliced to ns # 10013 | spliced to init | as server + # + # 10021 as server | forwarded to guest | + # 10031 as server | forwarded to guest | __opts= [ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta_with_passt.pcap" @@ -138,8 +141,8 @@ setup_passt_in_ns() { [ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt_in_pasta.pcap" [ ${DEBUG} -eq 1 ] && __opts="${__opts} -d" - #pane_run PASST "valgrind --max-stackframe=3000000 ./passt -f ${__opts} -t 10001,10011 -u 10001,10011" - pane_run PASST "./passt -f ${__opts} -t 10001,10011 -u 10001,10011" + #pane_run PASST "valgrind --max-stackframe=3000000 ./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10031" + pane_run PASST "./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10031" sleep 1 pane_run GUEST './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ @@ -148,7 +151,7 @@ setup_passt_in_ns() { '-nodefaults ' \ '-append "console=ttyS0 mitigations=off apparmor=0 ' \ 'virtio-net.napi_tx=1"' \ - "-device virtio-net-pci,netdev=hostnet0,x-txburst=131072"\ + "-device virtio-net-pci,netdev=hostnet0,x-txburst=262144"\ "-netdev socket,fd=5,id=hostnet0" pane_wait GUEST } diff --git a/test/perf/passt_udp b/test/perf/passt_udp index 1385c86..a5d43fc 100644 --- a/test/perf/passt_udp +++ b/test/perf/passt_udp @@ -31,9 +31,9 @@ hout FREQ_PROCFS (echo "scale=1"; sed -n 's/cpu MHz.*: \([0-9]*\)\..*$/(\1+10^2\ hout FREQ_CPUFREQ (echo "scale=1"; printf '( %i + 10^5 / 2 ) / 10^6\n' $(cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq) ) | bc -l hout FREQ [ -n "__FREQ_CPUFREQ__" ] && echo __FREQ_CPUFREQ__ || echo __FREQ_PROCFS__ -set THREADS 2 +set THREADS 4 set STREAMS 1 -set OPTS -u -i1 -t30 -P __STREAMS__ --pacing-timer 10000 +set OPTS -u -i1 -t30 -P __STREAMS__ --pacing-timer 1000 info Throughput in Gbps, latency in µs, __THREADS__ threads at __FREQ__ GHz, one stream each @@ -50,15 +50,15 @@ iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 2G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 0.8 1.2 guest ip link set dev __IFNAME__ mtu 1500 -iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 2G +iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 3G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 1.0 1.5 guest ip link set dev __IFNAME__ mtu 9000 -iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 4G +iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 5G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 4.0 5.0 guest ip link set dev __IFNAME__ mtu 65520 -iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 5G +iperf3c guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __OPTS__ -b 7G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 4.0 5.0 @@ -75,11 +75,11 @@ lat __LAT__ 200 150 tr UDP throughput over IPv4: guest to host guest ip link set dev __IFNAME__ mtu 256 -iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 300M +iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 500M iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 0.1 0.2 guest ip link set dev __IFNAME__ mtu 576 -iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 500M +iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 1G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 0.4 0.6 guest ip link set dev __IFNAME__ mtu 1280 @@ -87,15 +87,15 @@ iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 2G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 0.8 1.2 guest ip link set dev __IFNAME__ mtu 1500 -iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 2G +iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 3G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 1.0 1.5 guest ip link set dev __IFNAME__ mtu 9000 -iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 4G +iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 6G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 4.0 5.0 guest ip link set dev __IFNAME__ mtu 65520 -iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 5G +iperf3c guest __GW__ 100${i}2 __THREADS__ __OPTS__ -b 7G iperf3s BW ns 100${i}2 __THREADS__ bw __BW__ 4.0 5.0 @@ -122,11 +122,11 @@ iperf3c ns ::1 100${i}1 __THREADS__ __OPTS__ -b 2G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 1.0 1.5 ns ip link set dev lo mtu 9000 -iperf3c ns ::1 100${i}1 __THREADS__ __OPTS__ -b 4G +iperf3c ns ::1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 4.0 5.0 ns ip link set dev lo mtu 65520 -iperf3c ns ::1 100${i}1 __THREADS__ __OPTS__ -b 4G +iperf3c ns ::1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 5.0 5.5 @@ -144,28 +144,28 @@ ns ip link set dev lo mtu 65535 tr UDP throughput over IPv4: host to guest ns ip link set dev lo mtu 256 -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 300M +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 1G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 0.1 0.2 ns ip link set dev lo mtu 576 -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 500M +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 1G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 0.4 0.6 ns ip link set dev lo mtu 1280 ns ip addr add ::1 dev lo -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 2G +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 0.8 1.2 ns ip link set dev lo mtu 1500 -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 2G +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 1.0 1.5 ns ip link set dev lo mtu 9000 -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 4G +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 4.0 5.0 ns ip link set dev lo mtu 65520 -iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 4G +iperf3c ns 127.0.0.1 100${i}1 __THREADS__ __OPTS__ -b 3G iperf3s BW guest 100${i}1 __THREADS__ bw __BW__ 5.0 5.5 diff --git a/test/perf/pasta_udp b/test/perf/pasta_udp index 0968379..39a6e24 100644 --- a/test/perf/pasta_udp +++ b/test/perf/pasta_udp @@ -141,19 +141,19 @@ th MTU 1500B 4000B 16384B 65520B tr UDP throughput over IPv6: ns to host ns ip link set dev __IFNAME__ mtu 1500 -iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 1G +iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 2G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 0.3 0.5 ns ip link set dev __IFNAME__ mtu 4000 -iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 2G +iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 3G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 0.5 0.8 ns ip link set dev __IFNAME__ mtu 16384 -iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 3G +iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 4G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 3.0 4.0 ns ip link set dev __IFNAME__ mtu 65520 -iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 3G +iperf3c ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __OPTS__ -b 6G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 6.0 7.0 @@ -169,19 +169,19 @@ lat __LAT__ 200 150 tr UDP throughput over IPv4: ns to host ns ip link set dev __IFNAME__ mtu 1500 -iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 1G +iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 2G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 0.3 0.5 ns ip link set dev __IFNAME__ mtu 4000 -iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 2G +iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 3G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 0.5 0.8 ns ip link set dev __IFNAME__ mtu 16384 -iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 3G +iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 4G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 3.0 4.0 ns ip link set dev __IFNAME__ mtu 65520 -iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 3G +iperf3c ns __GW__ 100${i}3 __THREADS__ __OPTS__ -b 6G iperf3s BW host 100${i}3 __THREADS__ bw __BW__ 6.0 7.0 -- cgit v1.2.3