Improving network speed on Synology NAS


Recommended Posts

Maybe it can work for XPEnolgy to.

I have relatively old DS207 NAS with a Gigabit Ethernet port. Device CPU is mpc8241 PPC running @ 266MHz, so i never expected very fast transfer speed. NAS firmware is DSM3.2 with PowerPC 2.6.24 linux kernel. Performance was reasonable but less then i expected. After some experiments i found that bottleneck is network card (HDD works faster). What i really like in Synology DSM that there is no any needs for the device hacking – all you need to get the root is to enable “Terminal” option in the web interface.

 

Using “dmesg” command i found that Ethernet card is Yukon Gigabit Ethernet 10/100/1000Base-T Adapter. I decided to test it speed with iperf tool (using ipkg), wget and smbclient from my Linux box. I found that network speed PC -> NAS is about 230Mbit/sec and NAS -> PC ~120Mbit/sec. Kernel drvier for this card is sk98lin so i decided to see if there are any settings affecting performance to play with.

 

In Documentation i found 2 such settings Moderation and IntsPerSec. I decided to play with them.

 

To do this i modified /etc/rc boot script. I decided to add my “ismode” line before vendor one, to make sure that if there are any error in the options – device will continue to boot. Because my line is before one from vendor – system will use my settings (vendor module will be silently ignored with “File exists” message). Vendor modules are loaded on SYNOLoadModule ${NET_MODULES} line, so i just added insmod /lib/modules/sk98lin.ko Moderation=Dynamic before and restarted device. After restart driver settings could be shown using “cat /proc/net/sk98lin/eth0″ command. I did 4 tests: without any changes (moderation disabled), Dynamic Moderation, Static Moderation (2000 ints/sec) and Static Moderation (1000 ints/sec). On every mode i did 3 tests:

 

iperf bidirectional test with “iperf -c diskstation -t 15 --format KBytes -x CMS -r” on client and “iperf -s” on NAS

Downloading of 1 GB from nginx HTTP server installed on NAS with command “wget http://diskstation:2080/1000mb.bin -O /dev/null -o /dev/stdout|grep saved“

Downloading file from nas using SMB (CIFS) protocol with smbclient tool: “smbclient -c 'get 1000mb.bin /dev/null' -U admin //diskstation/music password"

 

Every test was running 3 times, without any other activity on this device. Raw data is available from my server. Below is a summary with average values for every test:

Moderation type iperf DL iperf UP HTTP (nginx) SMB (samba)

Disabled (default) 120.8 MBit/sec 230.6 MBit/sec 118.7 MBit/sec 118.2 MBit/sec

dynamic (2000 ints/sec) 140.7 MBit/sec 235.3 MBit/sec 148.5 MBit/sec 128.0 MBit/sec

static (2000 ints/sec) 141.4 MBit/sec 240.8 MBit/sec 165.1 MBit/sec 148.5 MBit/sec

static (1000 ints/sec) 155.9 MBit/sec 241.0 MBit/sec 185.1 MBit/sec 163.2 MBit/sec

 

As you could see there is a real improvement on all services. It is especially noticeable with nginx, probably because it using senfile() and epoll() kernel functionality. On HTTP i got 36% improvement, on SMB ~28%. I found no regression from this step, so will leave it as is.

 

Source http://smallhacks.wordpress.com/2012/04 ... ds207-nas/

Link to post
Share on other sites
  • 1 year later...

hi. long time lurker.

I'm still reading throughout this forum learning to setup my server properly.

 

First thing first, I would like to test connections and performance for my server. I tried to run iperf to do this. already loaded in Ubuntu with iperf package. but as I go through the help, it sound like iperf need to be run on each node of testing. (PC and server).

 

How to install and run iperf in my server?

I have not run into any log in this forum regarding iperf except this thread.

 

my setup :

N54L

DSM 4.2-3211

8GB RAM ECC

Link to post
Share on other sites