Jump to content
  • 0

Banana Pi legacy network speed


pspcoelho
 Share

Question

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

5 answers to this question

Recommended Posts

Armbian Linux community supported weekly builds download

  • 0

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

  • 0

Hmm. Maybe check "cpufreq-info" output for frequency range and governor.

Also "cat /proc/interrupts" to check if eth0 interrupts are assigned to second core.

By the way, this page is good for checking different aspects of configuration regarding network and storage performance: https://linux-sunxi.org/Sunxi_devices_as_NAS

Link to comment
Share on other sites

  • 0

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

  • 0

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.
 Share

×
×
  • Create New...