Messages in this thread | | | From | Neil Brown <> | Date | Mon, 20 Dec 1999 09:28:02 +1100 (EST) | Subject | Re: Very low bandwidth when using knfsd |
| |
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/
| |