SUMMARY: NFS Version 3 Tuning Help

From: Russell David (russell@mds.lmco.com)
Date: Thu Oct 17 1996 - 10:02:18 CDT


Sun Mgrs,

Original Question:
> I just got bit by the change in NFS read size for version 3 when
> I upgraded my NFS server to Solaris 2.5.1. The server is on FDDI and
> the ethernet clients were asking for two 32kB blocks of data at a time.
> The fragmentation of the FDDI packets blew out the available buffers on
> the routers and I got lots of NFS server not responding messages. I can
> easily up the number of buffers on the routers to solve the immediate
> problem but I have a few basic questions for those of you who have gone
> through this already:

> Should I keep the read/write size at the default of 32KB on a shared
> ethernet environment?

> Should I continue to run NFS over UDP in the LAN environment or should
> I run NFS over TCP?

> Are there any system/NFS tuning parameters that I should be adjusting?

        I am sorry to report that I did not get any information of help from the mail list. I received replys from several people who were also interested.

On a more positive note, I started running some tests comparing the different versions and would like to share them with you.

Please note that your milage may vary.

Test methodology: Sparc 10 mounted a filesystem from a 690 and read a
2 MB file. The two hosts were on different ethernet segments. I put a
network analyzer and measured the time required to receive the first 1 MB.
I started the clock with the first read data packet. I tested NFS Version 2
and 3. I tried both transport protocols for Version 3. Several block sizes
 were tested with version 3. I ran the tests off hours when the network was
fairly quiet.

Results:

Time to read 1 MB:

note: V3TCP32 means NFS version 3 over TCP with 32kB read blocks

        V3TCP8 V3UDP8 V2UDP8 V3UDP32 V3TCP32 V3UDP16
        1.47 1.21 1.71 0.98 1.34 1.03
        1.26 1.19 1.73 1.04 1.36 1.14
        1.33 1.33 1.76 1.140 1.30 1.03
        1.32 1.27 1.75 1.10 1.31 1.09
        1.26 1.27 null 1.09 1.37 1.15
        =============================================
Average 1.33 1.25 1.74 1.06 1.34 1.09

General Comments:
1. The fastest way to get NFS data from A to B is NFS Ver 3 over UDP with large block sizes
2. NFS Ver 3 over UDP with large block sizes generates packet trains of 23 packets (1500 bytes) per read request. This can overflow buffers in your routers causing timeouts and retransmissions of all 23 packets.
3. The times for 16 kB verses 32 kB block sizes are very close
4. FDDI servers running NFS over UDP pose a special problem because the data will be sent in 4500 byte packets which get fragmented by the routers into 1500 byte packets thus stressing the buffer allocations. CPU load is not a problem.
5. the Sun white paper on NFS V3 indicates that TCP is for NFS over wide area networks and that the larger block sizes are to help the faster networks (FDDI fast ethernet). So why are they the defaults for local area NFS over ethernet?

Conclusion: I plan to go with NFS over UDP with 16 kB block sizes to get the performance and to limit the stress on the routers. I would be glad to hear from others about their take on this.

Dave Russell
Lockheed Martin



This archive was generated by hypermail 2.1.2 : Fri Sep 28 2001 - 23:11:13 CDT