On Sun, 22 Feb 2026 23:08:43 +0100,
Alexander Bluhm <[email protected]> wrote:
> 
> On Sun, Feb 22, 2026 at 10:20:54PM +0100, Kirill A. Korinsky wrote:
> > On Sun, 22 Feb 2026 21:49:53 +0100,
> > Klemens Nanni <[email protected]> wrote:
> > > 
> > > 
> > > Thanks for testing, I certainly did not expect such a massive drop.
> > > 
> > > I'll test here as well and try to see what this is about before 
> > > committing anything.
> > > 
> > > I wonder, if this is "just" a weak CPU or something else, e.g. specific to
> > > octeon, NIC drivers and/or in your setup.
> > > 
> > > Can you share your iperf commands and a dmesg for completeness, please?
> > > 
> > > Cc'ing Janne:  You tried a similar diff on your boxes;  care to share
> > > which ones and whether you saw any noticable change in performance?
> > > 
> > 
> > I run as simple commands as:
> > 
> >  iperf3-darwin -t 30 -c 172.31.3.1
> 
> This uses only one TCP stream which uses only one CPU.  With multiple
> softnet threads there is only locking overhead but no parallelism.
> 
> Can you try to run iperf3 with -P5 or -P10 ?
> 
>      -P, --parallel n
>             number of parallel client streams to run. iperf3 will spawn off a
>             separate thread for each test stream. Using multiple streams may
>             result in higher throughput than a single stream.
> 

Sure I can.

without patch:

% iperf3-darwin -t 30 -c 172.31.2.93
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec  1.64 GBytes   468 Mbits/sec  137560             sender
[  5]   0.00-30.01  sec  1.63 GBytes   468 Mbits/sec                  receiver

% iperf3-darwin -t 30 -c 172.31.2.93 -P 5
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec   182 MBytes  50.8 Mbits/sec  98464             sender
[  5]   0.00-30.04  sec   181 MBytes  50.5 Mbits/sec                  receiver
[  7]   0.00-30.00  sec   346 MBytes  96.8 Mbits/sec  88328             sender
[  7]   0.00-30.04  sec   345 MBytes  96.3 Mbits/sec                  receiver
[  9]   0.00-30.00  sec   321 MBytes  89.6 Mbits/sec  85432             sender
[  9]   0.00-30.04  sec   320 MBytes  89.3 Mbits/sec                  receiver
[ 11]   0.00-30.00  sec   397 MBytes   111 Mbits/sec  904416             sender
[ 11]   0.00-30.04  sec   397 MBytes   111 Mbits/sec                  receiver
[ 13]   0.00-30.00  sec   421 MBytes   118 Mbits/sec  2259272             sender
[ 13]   0.00-30.04  sec   420 MBytes   117 Mbits/sec                  receiver
[SUM]   0.00-30.00  sec  1.63 GBytes   466 Mbits/sec  3435912             sender
[SUM]   0.00-30.04  sec  1.62 GBytes   464 Mbits/sec                  receiver


% iperf3-darwin -t 30 -c 172.31.3.1
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec  1.29 GBytes   370 Mbits/sec  5829             sender
[  5]   0.00-30.01  sec  1.29 GBytes   369 Mbits/sec                  receiver


% iperf3-darwin -t 30 -c 172.31.3.1 -P 5
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec   181 MBytes  50.5 Mbits/sec  1485             sender
[  5]   0.00-30.04  sec   180 MBytes  50.4 Mbits/sec                  receiver
[  7]   0.00-30.00  sec   194 MBytes  54.1 Mbits/sec  8677             sender
[  7]   0.00-30.04  sec   193 MBytes  54.0 Mbits/sec                  receiver
[  9]   0.00-30.00  sec   181 MBytes  50.5 Mbits/sec  4365             sender
[  9]   0.00-30.04  sec   180 MBytes  50.4 Mbits/sec                  receiver
[ 11]   0.00-30.00  sec   614 MBytes   172 Mbits/sec  1485             sender
[ 11]   0.00-30.04  sec   613 MBytes   171 Mbits/sec                  receiver
[ 13]   0.00-30.00  sec   177 MBytes  49.4 Mbits/sec  1485             sender
[ 13]   0.00-30.04  sec   176 MBytes  49.3 Mbits/sec                  receiver
[SUM]   0.00-30.00  sec  1.31 GBytes   376 Mbits/sec  17497             sender
[SUM]   0.00-30.04  sec  1.31 GBytes   375 Mbits/sec                  receiver


and make config when obj and src are both in NFS:

gw$ cd /usr/src/sys/arch/$(machine)/compile/GENERIC.MP
gw$ doas time make config 
cd /usr/obj/sys/arch/octeon/compile/GENERIC.MP && config -s /usr/src/sys -b 
/usr/src/sys/arch/octeon/compile/GENERIC.MP/obj 
/usr/src/sys/arch/octeon/conf/GENERIC.MP
        5.33 real         1.48 user         0.68 sys
gw$

ping from my laptop:

--- 172.31.2.1 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 1.347/1.574/1.814/0.146 ms

and ping from machine which I've used to run iperf:

--- 172.31.3.1 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 0.700/2.629/8.631/2.313 ms

next, with this patch:

% iperf3-darwin -t 30 -c 172.31.2.93
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec   281 MBytes  78.6 Mbits/sec  763132             sender
[  5]   0.00-30.21  sec   280 MBytes  77.9 Mbits/sec                  receiver

% iperf3-darwin -t 30 -c 172.31.2.93 -P 5
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.01  sec   106 MBytes  29.7 Mbits/sec  2057644             sender
[  5]   0.00-30.18  sec   106 MBytes  29.4 Mbits/sec                  receiver
[  7]   0.00-30.01  sec  55.7 MBytes  15.6 Mbits/sec  728640             sender
[  7]   0.00-30.18  sec  55.5 MBytes  15.4 Mbits/sec                  receiver
[  9]   0.00-30.01  sec  76.0 MBytes  21.2 Mbits/sec  295540             sender
[  9]   0.00-30.18  sec  75.7 MBytes  21.1 Mbits/sec                  receiver
[ 11]   0.00-30.01  sec  82.4 MBytes  23.0 Mbits/sec  119032             sender
[ 11]   0.00-30.18  sec  81.8 MBytes  22.7 Mbits/sec                  receiver
[ 13]   0.00-30.01  sec  84.6 MBytes  23.7 Mbits/sec  588184             sender
[ 13]   0.00-30.18  sec  84.0 MBytes  23.3 Mbits/sec                  receiver
[SUM]   0.00-30.01  sec   405 MBytes   113 Mbits/sec  3789040             sender
[SUM]   0.00-30.18  sec   403 MBytes   112 Mbits/sec                  receiver

% iperf3-darwin -t 30 -c 172.31.3.1
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec   528 MBytes   148 Mbits/sec  32152             sender
[  5]   0.00-30.16  sec   527 MBytes   147 Mbits/sec                  receiver

% iperf3-darwin -t 30 -c 172.31.3.1 -P 5
...
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-30.00  sec   284 MBytes  79.4 Mbits/sec  1448             sender
[  5]   0.00-30.17  sec   284 MBytes  78.9 Mbits/sec                  receiver
[  7]   0.00-30.00  sec   285 MBytes  79.6 Mbits/sec    0             sender
[  7]   0.00-30.17  sec   285 MBytes  79.1 Mbits/sec                  receiver
[  9]   0.00-30.00  sec   303 MBytes  84.8 Mbits/sec    0             sender
[  9]   0.00-30.17  sec   303 MBytes  84.2 Mbits/sec                  receiver
[ 11]   0.00-30.00  sec   251 MBytes  70.1 Mbits/sec    0             sender
[ 11]   0.00-30.17  sec   250 MBytes  69.6 Mbits/sec                  receiver
[ 13]   0.00-30.00  sec   248 MBytes  69.5 Mbits/sec    0             sender
[ 13]   0.00-30.17  sec   248 MBytes  69.1 Mbits/sec                  receiver
[SUM]   0.00-30.00  sec  1.34 GBytes   383 Mbits/sec  1448             sender
[SUM]   0.00-30.17  sec  1.34 GBytes   381 Mbits/sec                  receiver


gw$ cd /usr/src/sys/arch/$(machine)/compile/GENERIC.MP
gw$ doas time make config  
cd /usr/obj/sys/arch/octeon/compile/GENERIC.MP && config -s /usr/src/sys -b 
/usr/src/sys/arch/octeon/compile/GENERIC.MP/obj 
/usr/src/sys/arch/octeon/conf/GENERIC.MP
       28.76 real         1.62 user         0.49 sys
gw$ doas time make config  
cd /usr/obj/sys/arch/octeon/compile/GENERIC.MP && config -s /usr/src/sys -b 
/usr/src/sys/arch/octeon/compile/GENERIC.MP/obj 
/usr/src/sys/arch/octeon/conf/GENERIC.MP
       32.63 real         1.53 user         0.65 sys
gw$ 

and ping from my laptop:

--- 172.31.2.1 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 9.951/76.632/204.249/61.828 ms

and ping from iperf machine:

--- 172.31.3.1 ping statistics ---
10 packets transmitted, 10 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 6.074/168.085/577.976/166.932 ms

something is very wrong here.

-- 
wbr, Kirill

Reply via email to