public inbox for passt-dev@passt.top
 help / color / mirror / code / Atom feed
From: David Gibson <david@gibson.dropbear.id.au>
To: passt-dev@passt.top, Stefano Brivio <sbrivio@redhat.com>
Cc: David Gibson <david@gibson.dropbear.id.au>
Subject: [PATCH 5/8] test/perf: Explicitly control UDP packet length, instead of MTU
Date: Mon,  6 Nov 2023 18:08:30 +1100	[thread overview]
Message-ID: <20231106070834.1270986-6-david@gibson.dropbear.id.au> (raw)
In-Reply-To: <20231106070834.1270986-1-david@gibson.dropbear.id.au>

Packet size can make a big difference to UDP throughput, so it makes sense
to measure it for a variety of different sizes.  Currently we do this by
adjusting the MTU on the relevant interface before running iperf3.

However, the UDP packet size has no inherent connection to the MTU - it's
controlled by the sender, and the MTU just affects whether the packet will
make it through or be fragmented.  The only reason adjusting the MTU works
is because iperf3 bases its default packet size on the (path) MTU.

We can test this more simply by using the -l option to the iperf3 client
to directly control the packet size, instead of adjusting the MTU.

As well as simplifying this lets us test different packet sizes for host to
ns traffic.  We couldn't do that previously because we don't have
permission to change the MTU on the host.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
---
 test/perf/passt_udp |  69 +++++++++++-------------------
 test/perf/pasta_udp | 100 ++++++++++++++++++++++----------------------
 2 files changed, 75 insertions(+), 94 deletions(-)

diff --git a/test/perf/passt_udp b/test/perf/passt_udp
index 12d8fbb..10f638f 100644
--- a/test/perf/passt_udp
+++ b/test/perf/passt_udp
@@ -39,24 +39,21 @@ info	Throughput in Gbps, latency in µs, __THREADS__ threads at __FREQ__ GHz, on
 
 report	passt udp __THREADS__ __FREQ__
 
-th	MTU 256B 576B 1280B 1500B 9000B 65520B
+th	pktlen 256B 576B 1280B 1500B 9000B 65520B
 
 tr	UDP throughput over IPv6: guest to host
 iperf3s	ns 100${i}2 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
 bw	-
 bw	-
-guest	ip link set dev __IFNAME__ mtu 1280
-iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1232
 bw	__BW__ 0.8 1.2
-guest	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1452
 bw	__BW__ 1.0 1.5
-guest	ip link set dev __IFNAME__ mtu 9000
-iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 5G
+iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 5G -l 8952
 bw	__BW__ 4.0 5.0
-guest	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 7G
+iperf3	BW guest __GW6__%__IFNAME__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 7G -l 64372
 bw	__BW__ 4.0 5.0
 
 iperf3k	ns
@@ -74,24 +71,19 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: guest to host
 iperf3s	ns 100${i}2 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-guest	ip link set dev __IFNAME__ mtu 256
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 500M
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 500M -l 228
 bw	__BW__ 0.0 0.0
-guest	ip link set dev __IFNAME__ mtu 576
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 1G
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 1G -l 548
 bw	__BW__ 0.4 0.6
-guest	ip link set dev __IFNAME__ mtu 1280
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1252
 bw	__BW__ 0.8 1.2
-guest	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1472
 bw	__BW__ 1.0 1.5
-guest	ip link set dev __IFNAME__ mtu 9000
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 6G
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 6G -l 8972
 bw	__BW__ 4.0 5.0
-guest	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 7G
+iperf3	BW guest __GW__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 7G -l 65492
 bw	__BW__ 4.0 5.0
 
 iperf3k	ns
@@ -109,20 +101,17 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv6: host to guest
 iperf3s	guest 100${i}1 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
 bw	-
 bw	-
-ns	ip link set dev lo mtu 1280
-iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1232
 bw	__BW__ 0.8 1.2
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1452
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 9000
-iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 8952
 bw	__BW__ 3.0 4.0
-ns	ip link set dev lo mtu 65520
-iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 64372
 bw	__BW__ 3.0 4.0
 
 iperf3k	guest
@@ -137,30 +126,23 @@ guestb	udp_rr --nolog -P 10001 -C 10011 -6
 sleep	1
 nsout	LAT udp_rr --nolog -P 10001 -C 10011 -6 -c -H ::1 | sed -n 's/^throughput=\(.*\)/\1/p'
 lat	__LAT__ 200 150
-ns	ip link set dev lo mtu 65535
 
 
 tr	UDP throughput over IPv4: host to guest
 iperf3s	guest 100${i}1 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-ns	ip link set dev lo mtu 256
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 1G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 1G -l 228
 bw	__BW__ 0.0 0.0
-ns	ip link set dev lo mtu 576
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 1G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 1G -l 548
 bw	__BW__ 0.4 0.6
-ns	ip link set dev lo mtu 1280
-ns	ip addr add ::1 dev lo
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1252
 bw	__BW__ 0.8 1.2
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1472
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 9000
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 8972
 bw	__BW__ 3.0 4.0
-ns	ip link set dev lo mtu 65520
-iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}1 __THREADS__ __TIME__ __OPTS__ -b 3G -l 65492
 bw	__BW__ 3.0 4.0
 
 iperf3k	guest
@@ -175,6 +157,5 @@ guestb	udp_rr --nolog -P 10001 -C 10011 -4
 sleep	1
 nsout	LAT udp_rr --nolog -P 10001 -C 10011 -4 -c -H 127.0.0.1 | sed -n 's/^throughput=\(.*\)/\1/p'
 lat	__LAT__ 200 150
-ns	ip link set dev lo mtu 65535
 
 te
diff --git a/test/perf/pasta_udp b/test/perf/pasta_udp
index 0628bd9..5e3db1e 100644
--- a/test/perf/pasta_udp
+++ b/test/perf/pasta_udp
@@ -29,23 +29,20 @@ info	Throughput in Gbps, latency in µs, one thread at __FREQ__ GHz, __STREAMS__
 
 report	pasta lo_udp 1 __FREQ__
 
-th	MTU 1500B 4000B 16384B 65535B
+th	pktlen 1500B 4000B 16384B 65535B
 
 
 tr	UDP throughput over IPv6: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1452
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 4000
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 1.2 1.8
-ns	ip link set dev lo mtu 16384
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16336
 bw	__BW__ 5.0 6.0
-ns	ip link set dev lo mtu 65535
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65487
 bw	__BW__ 7.0 9.0
 
 iperf3k	host
@@ -62,18 +59,15 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1372
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 4000
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 1.2 1.8
-ns	ip link set dev lo mtu 16384
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16356
 bw	__BW__ 5.0 6.0
-ns	ip link set dev lo mtu 65535
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65507
 bw	__BW__ 7.0 9.0
 
 iperf3k	host
@@ -91,10 +85,13 @@ lat	__LAT__ 200 150
 tr	UDP throughput over IPv6: host to ns
 iperf3s	ns 100${i}2 __THREADS__
 
-bw	-
-bw	-
-bw	-
-iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1452
+bw	__BW__ 1.0 1.5
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 1.2 1.8
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16336
+bw	__BW__ 5.0 6.0
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 16336
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -111,10 +108,13 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: host to ns
 iperf3s	ns 100${i}2 __THREADS__
-bw	-
-bw	-
-bw	-
-iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1372
+bw	__BW__ 1.0 1.5
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 1.2 1.8
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16356
+bw	__BW__ 5.0 6.0
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65507
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -141,22 +141,19 @@ nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifnam
 info	Throughput in Gbps, latency in µs, one thread at __FREQ__ GHz, __STREAMS__ streams
 report	pasta tap_udp 1 __FREQ__
 
-th	MTU 1500B 4000B 16384B 65520B
+th	pktlen 1500B 4000B 16384B 65520B
 
 tr	UDP throughput over IPv6: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
-ns	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
 bw	__BW__ 0.3 0.5
-ns	ip link set dev __IFNAME__ mtu 4000
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 0.5 0.8
-ns	ip link set dev __IFNAME__ mtu 16384
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
 bw	__BW__ 3.0 4.0
-ns	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G -l 65472
 bw	__BW__ 6.0 7.0
 
 iperf3k	host
@@ -173,18 +170,15 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-ns	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
 bw	__BW__ 0.3 0.5
-ns	ip link set dev __IFNAME__ mtu 4000
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 0.5 0.8
-ns	ip link set dev __IFNAME__ mtu 16384
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
 bw	__BW__ 3.0 4.0
-ns	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G -l 65492
 bw	__BW__ 6.0 7.0
 
 iperf3k	host
@@ -203,10 +197,13 @@ iperf3s	ns 100${i}2 __THREADS__
 
 nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
 nsout	ADDR6 ip -j -6 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[] | select(.scope == "global" and .prefixlen == 64).local'
-bw	-
-bw	-
-bw	-
-iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
+bw	__BW__ 0.3 0.5
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 0.5 0.8
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
+bw	__BW__ 3.0 4.0
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65472
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -225,10 +222,13 @@ tr	UDP throughput over IPv4: host to ns
 iperf3s	ns 100${i}2 __THREADS__
 
 nsout	ADDR ip -j -4 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[0].local'
-bw	-
-bw	-
-bw	-
-iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
+bw	__BW__ 0.3 0.5
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 0.5 0.8
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
+bw	__BW__ 3.0 4.0
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65492
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
-- 
@@ -29,23 +29,20 @@ info	Throughput in Gbps, latency in µs, one thread at __FREQ__ GHz, __STREAMS__
 
 report	pasta lo_udp 1 __FREQ__
 
-th	MTU 1500B 4000B 16384B 65535B
+th	pktlen 1500B 4000B 16384B 65535B
 
 
 tr	UDP throughput over IPv6: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1452
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 4000
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 1.2 1.8
-ns	ip link set dev lo mtu 16384
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16336
 bw	__BW__ 5.0 6.0
-ns	ip link set dev lo mtu 65535
-iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW ns ::1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65487
 bw	__BW__ 7.0 9.0
 
 iperf3k	host
@@ -62,18 +59,15 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-ns	ip link set dev lo mtu 1500
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1372
 bw	__BW__ 1.0 1.5
-ns	ip link set dev lo mtu 4000
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 1.2 1.8
-ns	ip link set dev lo mtu 16384
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16356
 bw	__BW__ 5.0 6.0
-ns	ip link set dev lo mtu 65535
-iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW ns 127.0.0.1 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65507
 bw	__BW__ 7.0 9.0
 
 iperf3k	host
@@ -91,10 +85,13 @@ lat	__LAT__ 200 150
 tr	UDP throughput over IPv6: host to ns
 iperf3s	ns 100${i}2 __THREADS__
 
-bw	-
-bw	-
-bw	-
-iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1452
+bw	__BW__ 1.0 1.5
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 1.2 1.8
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16336
+bw	__BW__ 5.0 6.0
+iperf3	BW host ::1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 16336
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -111,10 +108,13 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: host to ns
 iperf3s	ns 100${i}2 __THREADS__
-bw	-
-bw	-
-bw	-
-iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 1372
+bw	__BW__ 1.0 1.5
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 1.2 1.8
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 10G -l 16356
+bw	__BW__ 5.0 6.0
+iperf3	BW host 127.0.0.1 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65507
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -141,22 +141,19 @@ nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifnam
 info	Throughput in Gbps, latency in µs, one thread at __FREQ__ GHz, __STREAMS__ streams
 report	pasta tap_udp 1 __FREQ__
 
-th	MTU 1500B 4000B 16384B 65520B
+th	pktlen 1500B 4000B 16384B 65520B
 
 tr	UDP throughput over IPv6: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 48: 40 bytes of IPv6 header, 8 of UDP header
 
-ns	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
 bw	__BW__ 0.3 0.5
-ns	ip link set dev __IFNAME__ mtu 4000
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 0.5 0.8
-ns	ip link set dev __IFNAME__ mtu 16384
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
 bw	__BW__ 3.0 4.0
-ns	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G
+iperf3	BW ns __GW6__%__IFNAME__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G -l 65472
 bw	__BW__ 6.0 7.0
 
 iperf3k	host
@@ -173,18 +170,15 @@ lat	__LAT__ 200 150
 
 tr	UDP throughput over IPv4: ns to host
 iperf3s	host 100${i}3 __THREADS__
+# (datagram size) = (packet size) - 28: 20 bytes of IPv4 header, 8 of UDP header
 
-ns	ip link set dev __IFNAME__ mtu 1500
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
 bw	__BW__ 0.3 0.5
-ns	ip link set dev __IFNAME__ mtu 4000
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
 bw	__BW__ 0.5 0.8
-ns	ip link set dev __IFNAME__ mtu 16384
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
 bw	__BW__ 3.0 4.0
-ns	ip link set dev __IFNAME__ mtu 65520
-iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G
+iperf3	BW ns __GW__ 100${i}3 __THREADS__ __TIME__ __OPTS__ -b 6G -l 65492
 bw	__BW__ 6.0 7.0
 
 iperf3k	host
@@ -203,10 +197,13 @@ iperf3s	ns 100${i}2 __THREADS__
 
 nsout	IFNAME ip -j link show | jq -rM '.[] | select(.link_type == "ether").ifname'
 nsout	ADDR6 ip -j -6 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[] | select(.scope == "global" and .prefixlen == 64).local'
-bw	-
-bw	-
-bw	-
-iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
+bw	__BW__ 0.3 0.5
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 0.5 0.8
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
+bw	__BW__ 3.0 4.0
+iperf3	BW host __ADDR6__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65472
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
@@ -225,10 +222,13 @@ tr	UDP throughput over IPv4: host to ns
 iperf3s	ns 100${i}2 __THREADS__
 
 nsout	ADDR ip -j -4 addr show|jq -rM '.[] | select(.ifname == "__IFNAME__").addr_info[0].local'
-bw	-
-bw	-
-bw	-
-iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 2G -l 1472
+bw	__BW__ 0.3 0.5
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 3G -l 3972
+bw	__BW__ 0.5 0.8
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 4G -l 16356
+bw	__BW__ 3.0 4.0
+iperf3	BW host __ADDR__ 100${i}2 __THREADS__ __TIME__ __OPTS__ -b 15G -l 65492
 bw	__BW__ 7.0 9.0
 
 iperf3k	ns
-- 
2.41.0


  parent reply	other threads:[~2023-11-06  7:08 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-11-06  7:08 [PATCH 0/8] Clean ups and speed ups to benchmarks David Gibson
2023-11-06  7:08 ` [PATCH 1/8] test/perf: Remove stale iperf3c/iperf3s directives David Gibson
2023-11-06  7:08 ` [PATCH 2/8] test/perf: Get iperf3 stats from client side David Gibson
2023-11-06  7:08 ` [PATCH 3/8] test/perf: Start iperf3 server less often David Gibson
2023-11-06  7:08 ` [PATCH 4/8] test/perf: Small MTUs for spliced TCP aren't interesting David Gibson
2023-11-06  7:08 ` David Gibson [this message]
2023-11-06  7:08 ` [PATCH 6/8] test/perf: "MTU" changes in passt_tcp host to guest aren't useful David Gibson
2023-11-06  7:08 ` [PATCH 7/8] test/perf: Remove unnecessary --pacing-timer options David Gibson
2023-11-06  7:08 ` [PATCH 8/8] test/perf: Simplify calculation of "omit" time for TCP throughput David Gibson
2023-11-07 12:45 ` [PATCH 0/8] Clean ups and speed ups to benchmarks Stefano Brivio

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20231106070834.1270986-6-david@gibson.dropbear.id.au \
    --to=david@gibson.dropbear.id.au \
    --cc=passt-dev@passt.top \
    --cc=sbrivio@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://passt.top/passt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for IMAP folder(s).