Jump to content

Banana Pi legacy network speed


pspcoelho

Recommended Posts

Before installing this Armbian legacy kernel (3.4.109), I was using a Bananian-based image with OpenMediaVault (the so called BanaNAS image) and was getting regular 30MB/s transfer rates to my Samba shared hard drives (USB and SATA). My PC and Banana are connected through a gigabit switch, and working at 1Gbps.

 

After installing and configuring the new Armbian image, I notice my transfer rates were now around ~23MB/s which was odd. After trying to change some smb.conf parameters and getting nowhere, I decided to test just the network performance by setting up a simple web server on my PC and doing a wget -O /dev/null http://<my PC-IP>/test.zip of 3Gb. The values were the same. Testing on another PC and Chrome, I got 40MB/s. So clearly my PC was fine but the Banana wasn't.

 

 Today I burned and installed 4 OS images and repeated the test above. I did it right after the initial boot ended without any further updates:

 

- OpenMediaVault-Bananian 3.4.104: 36.6MB/s

- Bananian 15.08: 36.7MB/s

- Armbian legacy: 25.9MB/s

- Armbian vanilla: 35MB/s

 

 Clearly there is something wrong with this image. However, I have no idea on what to do to find out how to fix it. Are there any configuration I can look up on the Bananian image and compare to yours?

 

Thanks!

Link to comment
Share on other sites

Ok. So, on Bananian 15.08, the difference on sysctl.conf is just vm.swapiness=1 (is 0 on Armbian), and adds vm.vfs_cache_pressure=50. I tried this on Armbian's conf file, but no difference.

 

The sysctl output is the same, except for:

- net.unix.max_dgram_qlen=10 (Bananian) vs 512 (Armbian), no difference in throughput.

- a whole lot of extra settings on Armbian:

net.ipv4.conf.all.forward_shared = 0 net.ipv4.conf.all.hidden = 0 net.ipv4.conf.all.loop = 0 net.ipv4.conf.all.rp_filter_mask = 0 net.ipv4.conf.bond0.accept_local = 0 net.ipv4.conf.bond0.accept_redirects = 1 net.ipv4.conf.bond0.accept_source_route = 1 net.ipv4.conf.bond0.arp_accept = 0 net.ipv4.conf.bond0.arp_announce = 0 net.ipv4.conf.bond0.arp_filter = 0 net.ipv4.conf.bond0.arp_ignore = 0 net.ipv4.conf.bond0.arp_notify = 0 net.ipv4.conf.bond0.bootp_relay = 0 net.ipv4.conf.bond0.disable_policy = 0 net.ipv4.conf.bond0.disable_xfrm = 0 net.ipv4.conf.bond0.force_igmp_version = 0 net.ipv4.conf.bond0.forward_shared = 0 net.ipv4.conf.bond0.forwarding = 0 net.ipv4.conf.bond0.hidden = 0 net.ipv4.conf.bond0.log_martians = 0 net.ipv4.conf.bond0.loop = 0 net.ipv4.conf.bond0.mc_forwarding = 0 net.ipv4.conf.bond0.medium_id = 0 net.ipv4.conf.bond0.promote_secondaries = 0 net.ipv4.conf.bond0.proxy_arp = 0 net.ipv4.conf.bond0.proxy_arp_pvlan = 0 net.ipv4.conf.bond0.rp_filter = 0 net.ipv4.conf.bond0.rp_filter_mask = 0 net.ipv4.conf.bond0.secure_redirects = 1 net.ipv4.conf.bond0.send_redirects = 1 net.ipv4.conf.bond0.shared_media = 1 net.ipv4.conf.bond0.src_valid_mark = 0 net.ipv4.conf.bond0.tag = 0 net.ipv4.conf.default.forward_shared = 0 net.ipv4.conf.default.hidden = 0 net.ipv4.conf.default.loop = 0 net.ipv4.conf.default.rp_filter_mask = 0 net.ipv4.conf.eth0.forward_shared = 0 net.ipv4.conf.eth0.hidden = 0 net.ipv4.conf.eth0.loop = 0 net.ipv4.conf.eth0.rp_filter_mask = 0 net.ipv4.conf.lo.forward_shared = 0 net.ipv4.conf.lo.hidden = 0 net.ipv4.conf.lo.loop = 0 net.ipv4.conf.lo.rp_filter_mask = 0 net.ipv4.conf.tunl0.forward_shared = 0 net.ipv4.conf.tunl0.hidden = 0 net.ipv4.conf.tunl0.loop = 0 net.ipv4.conf.tunl0.rp_filter_mask = 0 net.ipv4.neigh.bond0.anycast_delay = 100 net.ipv4.neigh.bond0.app_solicit = 0 net.ipv4.neigh.bond0.base_reachable_time_ms = 30000 net.ipv4.neigh.bond0.delay_first_probe_time = 5 net.ipv4.neigh.bond0.gc_stale_time = 60 net.ipv4.neigh.bond0.locktime = 100 net.ipv4.neigh.bond0.mcast_solicit = 3 net.ipv4.neigh.bond0.proxy_delay = 80 net.ipv4.neigh.bond0.proxy_qlen = 64 net.ipv4.neigh.bond0.retrans_time_ms = 1000 net.ipv4.neigh.bond0.ucast_solicit = 3 net.ipv4.neigh.bond0.unres_qlen = 35 net.ipv4.neigh.bond0.unres_qlen_bytes = 65536

 

I removed and didn't compare the ipv6 settings.

 

What next?

Link to comment
Share on other sites

After comparing both Bananian and Armbian, I noticed Bananian follows the rules defined on the site above (linux-sunxi.org), for the type of governor and some "ondemand" settings. This made the web download pratically the same as Bananian's, at 35.5MB/s.

 

Still, Samba shares were the same :-( So, I tried to just copy the smb.conf file from Bananian to Armbian, maintaining my defined shares and finally things fell into place! :-) I didn't actually check what was the difference except there are no special "performance" or "tuning" settings there, like socket options, or aio read/write size, etc.

 

I still think performance was better on my old, now lost, BanaNAS installation. But, it's acceptable.

 

Thanks for your tips!

Link to comment
Share on other sites

This difference is probably due to U-boot fine tuning. The rest doesn't have that much impact. Except governor, everything is as stated in wiki but nevertheless kernel is different.

 

I don't do detail testing for each build but I'll check within next build.

 

There are also two different legacy kernels now: sun7i and sunxi ... they differ in GMAC driver.

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