This is a backport of a fix to iperf3. The author saw a 40% improvement in
their network throughput, we've seen around a 55% improvement in our tests.

Link: 
https://github.com/esnet/iperf/pull/1708/commits/ac6b9f7fd335ddebc5212eed40083ef4cd3cb86d
Signed-off-by: Trevor Woerner <twoer...@gmail.com>
---
 ...-not-listen-to-old-udp-prot-listener.patch | 30 +++++++++++++++++++
 .../recipes-benchmark/iperf3/iperf3_3.17.1.bb |  1 +
 2 files changed, 31 insertions(+)
 create mode 100644 
meta-oe/recipes-benchmark/iperf3/iperf3/do-not-listen-to-old-udp-prot-listener.patch

diff --git 
a/meta-oe/recipes-benchmark/iperf3/iperf3/do-not-listen-to-old-udp-prot-listener.patch
 
b/meta-oe/recipes-benchmark/iperf3/iperf3/do-not-listen-to-old-udp-prot-listener.patch
new file mode 100644
index 000000000000..da1664ddcf67
--- /dev/null
+++ 
b/meta-oe/recipes-benchmark/iperf3/iperf3/do-not-listen-to-old-udp-prot-listener.patch
@@ -0,0 +1,30 @@
+From ac6b9f7fd335ddebc5212eed40083ef4cd3cb86d Mon Sep 17 00:00:00 2001
+From: David Bar-On <david.cdb...@gmail.com>
+Date: Sun, 2 Jun 2024 11:52:03 +0300
+Subject: [PATCH] Do not listen to old pro_listener
+
+Clear old UDP prot_listener from read_set, as currently the server's select()
+always return when data (that is relevant only to the worker thread) is
+received. This makes the main thread consume a lot of unnecessary CPU, which
+reduces the total throughput - especially when only one stream is used.
+
+In my single machine environment, with the this fix the throughput is
+increased by about 40% for one stream test.
+---
+Upstream-Status: Backport [3.18]
+
+ src/iperf_udp.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/src/iperf_udp.c b/src/iperf_udp.c
+index a603236df..40f2b1ca7 100644
+--- a/src/iperf_udp.c
++++ b/src/iperf_udp.c
+@@ -446,6 +446,7 @@ iperf_udp_accept(struct iperf_test *test)
+     /*
+      * Create a new "listening" socket to replace the one we were using 
before.
+      */
++    FD_CLR(test->prot_listener, &test->read_set); // No control messages from 
old listener
+     test->prot_listener = netannounce(test->settings->domain, Pudp, 
test->bind_address, test->bind_dev, test->server_port);
+     if (test->prot_listener < 0) {
+         i_errno = IESTREAMLISTEN;
diff --git a/meta-oe/recipes-benchmark/iperf3/iperf3_3.17.1.bb 
b/meta-oe/recipes-benchmark/iperf3/iperf3_3.17.1.bb
index 44fae0255f1c..2a93109b9c10 100644
--- a/meta-oe/recipes-benchmark/iperf3/iperf3_3.17.1.bb
+++ b/meta-oe/recipes-benchmark/iperf3/iperf3_3.17.1.bb
@@ -15,6 +15,7 @@ LIC_FILES_CHKSUM = 
"file://LICENSE;md5=f9873a72f714e240530e759e103ac7b2"
 SRC_URI = "git://github.com/esnet/iperf.git;branch=master;protocol=https \
            file://0002-Remove-pg-from-profile_CFLAGS.patch \
            file://0001-configure.ac-check-for-CPP-prog.patch \
+           file://do-not-listen-to-old-udp-prot-listener.patch \
            "
 
 SRCREV = "2acfcfe94e928e74542c9f107e02aa6dd4748a79"
-- 
2.44.0.501.g19981daefd7c

-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#115704): 
https://lists.openembedded.org/g/openembedded-devel/message/115704
Mute This Topic: https://lists.openembedded.org/mt/111426535/21656
Group Owner: openembedded-devel+ow...@lists.openembedded.org
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[arch...@mail-archive.com]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to