Still on my quest to performance with my awesome QNAP TS-639 Pro Turbo NAS, today let me post some of my test results and tuning tips.
In a previous post I gave you some tips to tune up iSCSI, now I’ll give you some tips to tune up the network interface and TCP/IP stack of your QNAP NAS.
The default maximum Linux TCP buffer sizes are waaaay too small, echo these new values:
echo 16777216 > /proc/sys/net/core/rmem_max
echo 16777216 > /proc/sys/net/core/wmem_max
echo 4096 65536 16777216 > /proc/sys/net/ipv4/tcp_rmem
echo 4096 65536 16777216 > /proc/sys/net/ipv4/tcp_wmem
Check if you are using an e1000 driver: ethtool -i eth0
And if you do increase the number of descriptors by adding this to /etc/modprobe.conf:
alias eth0 e1000
options e1000 RxDescriptors=4096,4096 TxDescriptors=4096,4096
A reboot is necessary since modprobe.conf is read at boot. To verify that this worked: ethtool -g eth0
Increase TCP throughput by increasing the size of the interface queue: ifconfig eth0 txqueuelen 1000
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
echo 1 > /proc/sys/net/ipv4/tcp_sack
echo 1 > /proc/sys/net/ipv4/tcp_window_scaling
You can edit /etc/rc.local, or /etc/boot.local depending on your distribution so the parameters get automatically re-applied at boot time.
Another method to reapply the values is to include the following in your /etc/sysctl.conf. Execute sysctl -p to make these new settings take effect right away.
Note that echoing to /proc is volatile, any changes you make there are lost after reboot!
I’m using IOzone 3.321 which is a very powerful filesystem benchmarking tool. It can export the results to a binary format spreadsheet file that you open with Excel to creat great looking 3D graphics. To avoid any disk latency and bottleneck, I use the memory to create some sort of temp file from where IOzone works from. You do that by using the -g 2G parameter.
So basically you have enabled NFS and you have created a NFS share with the appropriate access rights on your QNAP device. On the client side, in my case a Dell lappy running Windows 7 Ultimate x64bit, you have mounted the NFS share. Now here is the IOzone command I have used to generate the load: iozone -Ra -g 2G -b output_nfs.wks
FYI for my tests I have setup my 2 WD VelociRaptors in RAID0. Read my blog post part#2 for more nfo about the disks.
WOW look at the IOPS +700!
Note to install DSTAT to your QNAP, you need first to install the Optware IPKG (Itsy Package Management System) then SSH in your device, navigate to /opt/bin and use this command:
./ipkg-opt install http://ipkg.nslu2-linux.org/feeds/optware/ts509/cross/stable/dstat_0.6.9-1_i686.ipk
A list of all interesting IPacKaGes available can be found at ipkg.nslu2-linux.org. Use it at your own risk!!!
Thats it for part#5, stay tuned for #6 with more 3D graphs from IOzone benchmark results and 2D graphs from HD Tune PRO 🙂