NFS Server Performance and Tuning Guide for Sun Hardware

Increasing Read Throughput

If you are using NFS over a high speed network such as FDDI, SunFastEthernet, or SunATMTM, you will have better read throughput by increasing the number of read-aheads on the NFS client.

Increasing read-aheads is not recommended under these conditions:

When free memory is low, read-ahead will not be performed.

The read-ahead is set to 1 block, by default (8 Kbytes with version 2 and to 32 Kbytes with version 3). For example, a read-ahead set to 2 blocks uses an additional 16 Kbytes from a file while you are reading the first 8 Kbytes from the file. Thus, the read-ahead stays one step ahead of you and uses information in 8 Kbyte increments to stay ahead of the information you need.

Increasing the read-ahead count can improve read throughput up to a point. The optimal read-ahead setting will depend on your configuration and application. Increasing the read-ahead value beyond that setting may actually reduce throughput. In most cases, the optimal read-ahead setting is less than eight read-aheads (8 blocks)..


Note -

In the following procedure you can tune the nfs_nra and the nfs3_nra values independently. If a client is running Solaris the 2.5, 2.5.1, 2.6, or 7 operating environment, the client may need to tune nfs_nra (NFS version 2). This happens if the client is talking to a server that does not support version 3.


To Increase the Number of Read-Aheads With Version 2
  1. Add the following line to /etc/system on the NFS client.


    set nfs:nfs_nra=4
    

  2. Reboot the system to implement the read-ahead value.

To Increase the Number of Read-Aheads With Version 3
  1. Add the following line to /etc/system on the NFS client:

    • With versions of the Solaris software environment before the Solaris 2.6 software environment


      set nfs:nfs3_nra=6
      

      :

    • With the Solaris 2.6 operating environment, type:


      set nfs:nfs3_nra=2
      

    • With the Solaris 7 operating environment type:


      set nfs:nfs3_nra=4
      


    Note -

    Raising the read-ahead count too high can make read throughput worse. You may consider running benchmarks with different values of nfs3_nra or nfs_nra to see what works best in your environment.


  2. Reboot the system to implement the read-ahead value.