[CentOS] slow network throughput, how to improve?

Wed Nov 24 07:45:08 UTC 2010
Rudi Ahlers <Rudi at SoftDux.com>

would like some input on this one please.

Two CentOS 5.5 XEN servers, with 1GB NIC's, connected to a 1GB switch
transfer files to each other at about 30MB/s between each other.

Both servers have the following setup:
CentOS 5.5 x64
XEN
1GB NIC's
7200rpm SATA HDD's

The hardware configuration can't change, I need to use these servers
as they are. They are both used in production with a few xen domU's
virtual machines running on them.
I want to connect them both to a SAN, with gigabit connectivity and
would like to know how I can increase network performance a bit, as
is.
The upstream datacentre only supplies 100MB network connection, so in
the internet side of it isn't much of a problem. If I do manage to
reach 100MB that will be my limit in any case.


root at zaxen02.securehosting.co.za:/vm/xen/template/centos-5-x64-cpanel
root at zaxen02.securehosting.co.za:/
root at zaxen02.securehosting.co.za's password:
centos-5-x64-cpanel.tar.gz
                                                    100% 1163MB
29.1MB/s   00:40


iperf indicates that the network throughput is about 930MB though:

root at zaxen01:[~]$ iperf -s
------------------------------------------------------------
Server listening on TCP port 5001
TCP window size: 85.3 KByte (default)
------------------------------------------------------------
[  4] local 196.34.x.x port 5001 connected with 196.34.x.x port 45453
[ ID] Interval       Transfer     Bandwidth
[  4]  0.0-10.0 sec  1.09 GBytes    935 Mbits/sec

root at zaxen02:[~]$ iperf -c zaxen01
------------------------------------------------------------
Client connecting to zaxen01, TCP port 5001
TCP window size: 16.0 KByte (default)
------------------------------------------------------------
[  3] local 196.34.x.x port 45453 connected with 196.34.x.x port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.09 GBytes    936 Mbits/sec


Is iperf really that accurate, or reliable in this instance, since the
packet size is so small that it probably goes straight to memory,
instead of HDD? But at the same time, changing the packet size to
10MB, 100MB and 1000MB respectively doesn't seem to degrade
performance much either:

root at zaxen02:[~]$ iperf -w 10M -c zaxen01
------------------------------------------------------------
Client connecting to zaxen01, TCP port 5001
TCP window size:   256 KByte (WARNING: requested 10.0 MByte)
------------------------------------------------------------
[  3] local 196.34.x.x port 36756 connected with 196.34.x.x port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.07 GBytes    921 Mbits/sec
root at zaxen02:[~]$ iperf -w 100M -c zaxen01
------------------------------------------------------------
Client connecting to zaxen01, TCP port 5001
TCP window size:   256 KByte (WARNING: requested   100 MByte)
------------------------------------------------------------
[  3] local 196.34.x.x port 36757 connected with 196.34.x.x9 port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.08 GBytes    927 Mbits/sec
root at zaxen02:[~]$ iperf -w 1000M -c zaxen01
------------------------------------------------------------
Client connecting to zaxen01, TCP port 5001
TCP window size:   256 KByte (WARNING: requested 1000 MByte)
------------------------------------------------------------
[  3] local 196.34.x.x port 36758 connected with 196.34.x.x port 5001
[ ID] Interval       Transfer     Bandwidth
[  3]  0.0-10.0 sec  1.04 GBytes    895 Mbits/sec





-- 
Kind Regards
Rudi Ahlers
SoftDux

Website: http://www.SoftDux.com
Technical Blog: http://Blog.SoftDux.com
Office: 087 805 9573
Cell: 082 554 7532