Jump to content

ZeroPi - H3 - Can't reach full Gigabit speeds


TheCrypt0

Recommended Posts

Hi,
I've recently got a ZeroPi from FriendlyElec and I immediately installed Armbian Buster, so far is working great except for a minor issue with the Gigabit ethernet.
I'm planning to use it with Wireguard as server so I've made some performance checks first to test the actual network speed with iperf3.

 

What I discovered surprised me, the network throughput in upload from the ZeroPi is fine (900 to 950 Mbps) but the download seems to be limited to ~380 Mbps.
 

-------------------------------------------------------
# UPLOAD TEST (ZEROPI ---> HOST)
# $ iperf3 -c XX.XX.XX.XX
-------------------------------------------------------

[ ID] Interval           Transfer     Bitrate
[  5]   0.00-1.00   sec   107 MBytes   900 Mbits/sec
[  5]   1.00-2.00   sec   106 MBytes   890 Mbits/sec
[  5]   2.00-3.00   sec   110 MBytes   926 Mbits/sec
[  5]   3.00-4.00   sec   112 MBytes   943 Mbits/sec
[  5]   4.00-5.00   sec   111 MBytes   931 Mbits/sec
[  5]   5.00-6.00   sec   109 MBytes   918 Mbits/sec
[  5]   6.00-7.00   sec   110 MBytes   925 Mbits/sec
[  5]   7.00-8.00   sec   113 MBytes   946 Mbits/sec
[  5]   8.00-9.00   sec   109 MBytes   917 Mbits/sec
[  5]   9.00-10.00  sec   106 MBytes   892 Mbits/sec
[  5]  10.00-10.02  sec  1.74 MBytes   946 Mbits/sec
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate
[  5]   0.00-10.02  sec  1.07 GBytes   919 Mbits/sec                  receiver

-------------------------------------------------------
# DOWNLOAD TEST (HOST ---> ZEROPI)
# $ iperf3 -c XX.XX.XX.XX --reverse
-------------------------------------------------------

[ ID] Interval           Transfer     Bitrate         Retr  Cwnd
[  5]   0.00-1.00   sec  48.6 MBytes   407 Mbits/sec    0    217 KBytes
[  5]   1.00-2.00   sec  48.2 MBytes   404 Mbits/sec    0    217 KBytes
[  5]   2.00-3.00   sec  41.6 MBytes   349 Mbits/sec    0    217 KBytes
[  5]   3.00-4.00   sec  39.9 MBytes   335 Mbits/sec    0    217 KBytes
[  5]   4.00-5.00   sec  47.6 MBytes   399 Mbits/sec    0    217 KBytes
[  5]   5.00-6.00   sec  52.3 MBytes   439 Mbits/sec    0    217 KBytes
[  5]   6.00-7.00   sec  42.4 MBytes   356 Mbits/sec    0    217 KBytes
[  5]   7.00-8.00   sec  60.4 MBytes   506 Mbits/sec    0    217 KBytes
[  5]   8.00-9.01   sec  39.2 MBytes   326 Mbits/sec    0    217 KBytes
[  5]   9.01-10.00  sec  43.6 MBytes   368 Mbits/sec    0    217 KBytes
- - - - - - - - - - - - - - - - - - - - - - - - -
[ ID] Interval           Transfer     Bitrate         Retr
[  5]   0.00-10.03  sec   464 MBytes   388 Mbits/sec    0             sender


I've tried to connect my notebook to the same cable coming from the switch and the speeds are >900Mbps both in upload and download (tested with iperf too), so I'm excluding an issue on the network.
For what I can tell from the table at the bottom of this page (https://linux-sunxi.org/Sun8i_emac#Performance) the speeds (if bottlenecked) should be about the same for TX and RX.

 

Do you have any suggestion or more tests to make?

Link to comment
Share on other sites

22 minutes ago, TheCrypt0 said:

For what I can tell from the table at the bottom of this page (https://linux-sunxi.org/Sun8i_emac#Performance) the speeds (if bottlenecked) should be about the same for TX and RX.

 

... where you also have some tips what to do. 

Our automated testing for ZeroPi shows: 672 - 846 Mbits/sec which is good enough not to panic about.

Link to comment
Share on other sites

17 hours ago, Igor said:

 

... where you also have some tips what to do. 

 

Right! I was trying to understand how to change the TX/RX delay. IIRC the fex file aren't used since Armbian doesn't use the legacy sunxi kernel. (Correct me if I'm wrong).

 

Quote

 

From the Wiki:


You perhaps need to tweak RX/TX delay. You could find the correct value in FEX files.

For the moment the only way is to write the value via /dev/mem.

You could use either busybox's devmem applet or compile the free-electrons.com/pub/mirror/devmem2.c utility for this.

Example: for BPIM3

devmem 0x1c00030 w 0x1806

 

 

Is there any documentation on how to find the relevant memory address for the ZeroPi and what values are possible to set? I couldn't find any hint online.

 

Edit: Just found this issue (https://github.com/armbian/build/issues/546) which references this commit to the updated docs (https://github.com/armbian/documentation/commit/287affb1e0c32292cc8ef9aa3f466ef9864f1502). The gmac TX/RX delays can be changed in /boot/armbianEnv.txt - Testing right now.

 

Edit 2: Using the utility (linked in the issue mentioned in the previous edit) and after some tweaking I managed to get more than 650Mbps out of the RX line.
However I noticed that the Full Duplex speeds are limited to a maximum of about 900Mbps (350Mbps TX + 550 Mbps RX when testing with two instances of iperf).

------------

ethtool output:

Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Supported pause frame use: Symmetric Receive-only
        Supports auto-negotiation: Yes
        Supported FEC modes: Not reported
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Half 1000baseT/Full
        Advertised pause frame use: Symmetric Receive-only
        Advertised auto-negotiation: Yes
        Advertised FEC modes: Not reported
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
                                             1000baseT/Half 1000baseT/Full
        Link partner advertised pause frame use: No
        Link partner advertised auto-negotiation: Yes
        Link partner advertised FEC modes: Not reported
        Speed: 1000Mb/s
        Duplex: Full
        Port: MII
        PHYAD: 7
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: d
        Wake-on: d
        Current message level: 0x0000003f (63)
                               drv probe link timer ifdown ifup
        Link detected: yes

 

17 hours ago, Igor said:

Our automated testing for ZeroPi shows: 672 - 846 Mbits/sec which is good enough not to panic about.

 

Did you also test the full duplex speeds? 

Edited by TheCrypt0
Added ethtool output and full duplex discoveries
Link to comment
Share on other sites

On 3/26/2020 at 6:28 PM, TheCrypt0 said:

Did you also test the full duplex speeds? 


No. I am running low on ideas how to test things and still have lot to do with a framework. If you got few minutes, add your test to our test facility or improve the existing https://github.com/armbian/autotests/tree/master/tests

 

Its fairly simple so I guess there is not need for extra manual for this.

Link to comment
Share on other sites

On 3/26/2020 at 8:53 AM, TheCrypt0 said:

I'm planning to use it with Wireguard as server so I've made some performance checks first to test the actual network speed with iperf3.

 

What I discovered surprised me, the network throughput in upload from the ZeroPi is fine (900 to 950 Mbps) but the download seems to be limited to ~380 Mbps.

 

FWIW - WG performance on Cortex-A7 - you'll be lucky to get 200 Mbps - this is based on experience with Qualcomm IPQ4028 w/QSDK - runs a bit slower on the CPU's -- 717MHz, but much better internals for network items compared to H3

 

 

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
×
×
  • Create New...

Important Information

Terms of Use - Privacy Policy - Guidelines