Port-arm archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: genet0 speeds under NetBSD/aarch64 on Rpi4 8 GB using UEFI/ACPI v1.17 firmware



On 7/24/20 6:53 AM, Jared McNeill wrote:
On Thu, 23 Jul 2020, Paul Mather wrote:

Thanks for the tips.  I was hoping I would be able to achieve GbE max speeds without any special tuning.  That is what seemed to happen under Raspberry Pi OS.  As someone observed elsewhere in this thread, it's likely the driver in Raspberry Pi OS is implementing hardware offloading and other things that improve throughput.

Hi Paul --

Author of the driver here. A few things about the driver that could explain the performance differences you are seeing:

 - No support for polled operation, so we have to deal with the overhead
   of an IRQ per packet.
 - The hardware supports multiple TX and RX queues, but the driver
   currently only uses one for each.
 - NET_MPSAFE option is disabled by default in the kernel, so we can't
   take advantage of multiple CPUs. Even with this option on, the single
   queue limitation above will be a bottleneck.
 - As others have mentioned already in this thread, no support for
   checksum offload.

Take care,
Jared

With a current (Aug 15) kernel running NET_MPSAFE, I can consistently get 700Mbit sending from an RPi4 to my Macbook and 550Mbit sending to a wm interface on a RockPro64.

Adding multiple streams doesn't increase these numbers. Strangely enough running the iPerf3 server on the RPi gets <50Mbit, with high variance. I'm guessing this is due to the fact the NET_MPSAFE is still being tested, but I could be wrong.
--
Thanks,

Jason M.

P.S. Just as an FYI, --get-server-output allows you to run the test without -R and get the server's statistics at the end.


RPI4# iperf3 -w 800k -c MacBook-t 5
Connecting to host MacBook, port 5201
[  5] local RPi4 port 65481 connected to MacBook port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.01   sec  83.8 MBytes   696 Mbits/sec    0   1024 KBytes
[  5]   1.01-2.01   sec  83.8 MBytes   701 Mbits/sec    0   1024 KBytes
[  5]   2.01-3.00   sec  82.5 MBytes   697 Mbits/sec    0   1024 KBytes
[  5]   3.00-4.01   sec  83.8 MBytes   699 Mbits/sec    0   1024 KBytes
[  5]   4.01-5.01   sec  83.8 MBytes   699 Mbits/sec    0   1024 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-5.01   sec   418 MBytes   699 Mbits/sec    0             sender
[  5]   0.00-5.01   sec   417 MBytes   699 Mbits/sec                  receiver

iperf Done.
 <Server Side>
-----------------------------------------------------------
Accepted connection from RPI4, port 65482
[  5] local MacBook port 5201 connected to RPI4 port 65481
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  5.71 MBytes  47.9 Mbits/sec
[  5]   1.00-2.00   sec  83.2 MBytes   698 Mbits/sec
[  5]   2.00-3.00   sec  83.5 MBytes   701 Mbits/sec
[  5]   3.00-4.00   sec  83.2 MBytes   698 Mbits/sec
[  5]   4.00-5.00   sec  83.3 MBytes   699 Mbits/sec
[  5]   5.00-5.94   sec  78.5 MBytes   699 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-5.94   sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-5.94   sec   417 MBytes   589 Mbits/sec                  receiver
-----------------------------------------------------------
Server listening on 5201
-----------------------------------------------------------

RPI4# iperf3 -w 800k -c RockPro64-wm0 -t 10
Connecting to host RockPro64-wm0, port 5201
[  5] local RPi4 port 65477 connected to RockPro64-wm0 port 5201
[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  54.2 MBytes   453 Mbits/sec    0   2.00 MBytes
[  5]   1.00-2.00   sec  66.4 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   2.00-3.00   sec  66.4 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   3.00-4.01   sec  66.5 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   4.01-5.00   sec  66.1 MBytes   558 Mbits/sec    0   2.00 MBytes
[  5]   5.00-6.00   sec  66.6 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   6.00-7.00   sec  66.4 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   7.00-8.01   sec  66.5 MBytes   557 Mbits/sec    0   2.00 MBytes
[  5]   8.01-9.00   sec  65.5 MBytes   550 Mbits/sec    0   2.00 MBytes
[  5]   9.00-10.00  sec  66.2 MBytes   557 Mbits/sec    0   2.00 MBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.00  sec   651 MBytes   546 Mbits/sec    0             sender
[  5]   0.00-10.00  sec   650 MBytes   545 Mbits/sec                  receiver

iperf Done.

<server side>
-----------------------------------------------------------
Accepted connection from RPI4, port 65497
[  5] local MacBook port 5201 connected to RPI4 port 65496
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-1.00   sec  5.43 MBytes  45.6 Mbits/sec
[  5]   1.00-2.00   sec  84.3 MBytes   707 Mbits/sec
[  5]   2.00-3.00   sec  84.4 MBytes   708 Mbits/sec
[  5]   3.00-4.00   sec  83.6 MBytes   701 Mbits/sec
[  5]   4.00-5.00   sec  84.2 MBytes   706 Mbits/sec
[  5]   5.00-6.00   sec  84.2 MBytes   707 Mbits/sec
[  5]   6.00-7.00   sec  84.3 MBytes   707 Mbits/sec
[  5]   7.00-8.00   sec  84.3 MBytes   707 Mbits/sec
[  5]   8.00-9.00   sec  84.2 MBytes   707 Mbits/sec
[  5]   9.00-10.00  sec  84.3 MBytes   707 Mbits/sec
[  5]  10.00-10.95  sec  79.1 MBytes   702 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bandwidth
[  5]   0.00-10.95  sec  0.00 Bytes  0.00 bits/sec                  sender
[  5]   0.00-10.95  sec   842 MBytes   646 Mbits/sec                  receiver


Home | Main Index | Thread Index | Old Index