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 <sbrivio@redhat.com>
This commit is contained in:
Stefano Brivio 2021-10-21 04:54:05 +02:00
parent 1f3d6f96b5
commit c3f8e4d2cd
3 changed files with 34 additions and 31 deletions

View file

@ -13,9 +13,9 @@
# Copyright (c) 2021 Red Hat GmbH # Copyright (c) 2021 Red Hat GmbH
# Author: Stefano Brivio <sbrivio@redhat.com> # Author: Stefano Brivio <sbrivio@redhat.com>
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)" __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() - Set up pane layout for build tests
setup_build() { setup_build() {
@ -107,6 +107,9 @@ setup_passt_in_ns() {
# 10011 as server | forwarded to guest | spliced to ns # 10011 as server | forwarded to guest | spliced to ns
# 10012 | as server | spliced to ns # 10012 | as server | spliced to ns
# 10013 | spliced to init | as server # 10013 | spliced to init | as server
#
# 10021 as server | forwarded to guest |
# 10031 as server | forwarded to guest |
__opts= __opts=
[ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/pasta_with_passt.pcap" [ ${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" [ ${PCAP} -eq 1 ] && __opts="${__opts} -p /tmp/passt_in_pasta.pcap"
[ ${DEBUG} -eq 1 ] && __opts="${__opts} -d" [ ${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 "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 -u 10001,10011" pane_run PASST "./passt -f ${__opts} -t 10001,10011,10021,10031 -u 10001,10011,10021,10031"
sleep 1 sleep 1
pane_run GUEST './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \ pane_run GUEST './qrap 5 kvm -m '${VMEM}' -cpu host -smp '${VCPUS} \
@ -148,7 +151,7 @@ setup_passt_in_ns() {
'-nodefaults ' \ '-nodefaults ' \
'-append "console=ttyS0 mitigations=off apparmor=0 ' \ '-append "console=ttyS0 mitigations=off apparmor=0 ' \
'virtio-net.napi_tx=1"' \ '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" "-netdev socket,fd=5,id=hostnet0"
pane_wait GUEST pane_wait GUEST
} }

View file

@ -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_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__ hout FREQ [ -n "__FREQ_CPUFREQ__" ] && echo __FREQ_CPUFREQ__ || echo __FREQ_PROCFS__
set THREADS 2 set THREADS 4
set STREAMS 1 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 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 0.8 1.2 bw __BW__ 0.8 1.2
guest ip link set dev __IFNAME__ mtu 1500 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 1.0 1.5 bw __BW__ 1.0 1.5
guest ip link set dev __IFNAME__ mtu 9000 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 4.0 5.0 bw __BW__ 4.0 5.0
guest ip link set dev __IFNAME__ mtu 65520 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 4.0 5.0 bw __BW__ 4.0 5.0
@ -75,11 +75,11 @@ lat __LAT__ 200 150
tr UDP throughput over IPv4: guest to host tr UDP throughput over IPv4: guest to host
guest ip link set dev __IFNAME__ mtu 256 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 0.1 0.2 bw __BW__ 0.1 0.2
guest ip link set dev __IFNAME__ mtu 576 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 0.4 0.6 bw __BW__ 0.4 0.6
guest ip link set dev __IFNAME__ mtu 1280 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 0.8 1.2 bw __BW__ 0.8 1.2
guest ip link set dev __IFNAME__ mtu 1500 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 1.0 1.5 bw __BW__ 1.0 1.5
guest ip link set dev __IFNAME__ mtu 9000 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 4.0 5.0 bw __BW__ 4.0 5.0
guest ip link set dev __IFNAME__ mtu 65520 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__ iperf3s BW ns 100${i}2 __THREADS__
bw __BW__ 4.0 5.0 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 1.0 1.5 bw __BW__ 1.0 1.5
ns ip link set dev lo mtu 9000 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 4.0 5.0 bw __BW__ 4.0 5.0
ns ip link set dev lo mtu 65520 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 5.0 5.5 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 tr UDP throughput over IPv4: host to guest
ns ip link set dev lo mtu 256 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 0.1 0.2 bw __BW__ 0.1 0.2
ns ip link set dev lo mtu 576 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 0.4 0.6 bw __BW__ 0.4 0.6
ns ip link set dev lo mtu 1280 ns ip link set dev lo mtu 1280
ns ip addr add ::1 dev lo 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 0.8 1.2 bw __BW__ 0.8 1.2
ns ip link set dev lo mtu 1500 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 1.0 1.5 bw __BW__ 1.0 1.5
ns ip link set dev lo mtu 9000 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 4.0 5.0 bw __BW__ 4.0 5.0
ns ip link set dev lo mtu 65520 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__ iperf3s BW guest 100${i}1 __THREADS__
bw __BW__ 5.0 5.5 bw __BW__ 5.0 5.5

View file

@ -141,19 +141,19 @@ th MTU 1500B 4000B 16384B 65520B
tr UDP throughput over IPv6: ns to host tr UDP throughput over IPv6: ns to host
ns ip link set dev __IFNAME__ mtu 1500 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 0.3 0.5 bw __BW__ 0.3 0.5
ns ip link set dev __IFNAME__ mtu 4000 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 0.5 0.8 bw __BW__ 0.5 0.8
ns ip link set dev __IFNAME__ mtu 16384 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 3.0 4.0 bw __BW__ 3.0 4.0
ns ip link set dev __IFNAME__ mtu 65520 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 6.0 7.0 bw __BW__ 6.0 7.0
@ -169,19 +169,19 @@ lat __LAT__ 200 150
tr UDP throughput over IPv4: ns to host tr UDP throughput over IPv4: ns to host
ns ip link set dev __IFNAME__ mtu 1500 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 0.3 0.5 bw __BW__ 0.3 0.5
ns ip link set dev __IFNAME__ mtu 4000 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 0.5 0.8 bw __BW__ 0.5 0.8
ns ip link set dev __IFNAME__ mtu 16384 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 3.0 4.0 bw __BW__ 3.0 4.0
ns ip link set dev __IFNAME__ mtu 65520 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__ iperf3s BW host 100${i}3 __THREADS__
bw __BW__ 6.0 7.0 bw __BW__ 6.0 7.0