Re: Very low bandwidth when using knfsd

Neil Brown (neilb@cse.unsw.edu.au)
Mon, 20 Dec 1999 09:28:02 +1100 (EST)


On Friday December 17, C.Brauckmann@alcatel.de wrote:
> Hello,
>
> I am using a Laptop with RedHat-6.1. It is connected via a pcmcia
> ethernet card (10 MBit) to a Unix network. My wish is to export a
> directory of the Laptop to a SUN server. The SUN server uses
> Solaris-2.5.1.
>
> I tried two configurations and got the following results:
>
>
> 1. Using knfsd-1.4.7-7
> ----------------------
>
> When transfering a file of 5M bytes from Solaris towards Linux I got a
> very low bandwidth of less than 4k bytes (k not M!). Some pairs of error
> messages "NFS server not responding..." and "NFS server OK" appear in
> the windows on the Solaris machine until the transfer is finished. I put
> the corresponding /var/log/messages of the Linux box to the end of this
> mail ("messages.knfsd").
..
>
>
> 2. Using nfs-server-2.2beta40-1
> -------------------------------
>
> When transfering a file of 5M bytes from Solaris towards Linux I got a
> good bandwidth of more than 450k bytes (more than 100 times faster!). No
> error message appears. I put the corresponding /var/log/messages of the
> Linux box to the end of this mail too ("messages.nfsd").
>
>
> Any idea?
>

At a guess.....

The Linux notebook is 10baseT
*IF* the Solaris server is 100baseT (This is the guess) then I would
expect exactly what you are getting.

Using knfsd you will be using UDP. When writting a 5M file Solaris
will start out by sending a few (maybe only 2) 8K UDP packets, which
will fragment into 12 IP datagram. These will arrive at the switch at
100Mb/s and the switch has to slow them down to 10Mb/s. Some will be
lost.
If any fragment of a udp datagram gets lost, the whole datagram is
pretty useless. So effectively no data gets through. In reality it
isn't quite that bad, and the occasionaly 8k udp datagram will get
through, so you do see some thoughput, but not much.

Using nfs-server, you will be using TCP. TCP is much better at
handling lost fragments, and quite possibly solaris will not fragment
at all, but will break up the tcp stream into 1500 (approx) byte ip
packets, and the TCP congention control will work out what is
happening and keep the window to a minium. This was you get much
better throughput.

You should be able to improve throughput with knfsd by setting the
wsize (no need to change rsize) on the mount to < 1500. e.g. 1024.
This way there is no fragmentation, and it should all work better (but
probably not as good as tcp).

Ofcourse, if youyr solaris machine in 10baseX, then I have no idea
what is wrong.

tcp for knfsd is closer with some work that Trond has been doing, but
it'll probably be a 2.5 thing.

NeilBrown

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.rutgers.edu
Please read the FAQ at http://www.tux.org/lkml/