Optimizing AIX 5L performance: Tuning network performance, Part 2

NFS monitoring and tuning

This three-part series on AIX® networking focuses on the challenges of optimizing network performance. Part 1 provided a networking overview and also discussed the tools you need to monitor your hardware, including netstat, netpmon, entstat, and nmon. Part 2 focuses on tuning NFS. You'll learn about monitoring utilities such as nfsstat and nmon, and you'll also tune with nfso. The series also offers best practices for network I/O performance tuning.

Share:

Ken Milberg, Future Tech UNIX Consultant, Technology Writer, and Site Expert, Future Tech

Ken Milberg is a Technology Writer and Site Expert for techtarget.com and provides Linux technical information and support at searchopensource.com. He is also a writer and technical editor for IBM Systems Magazine, Open Edition. Ken holds a bachelor's degree in computer and information science and a master's degree in technology management from the University of Maryland. He is the founder and group leader of the NY Metro POWER-AIX/Linux Users Group. Through the years, he has worked for both large and small organizations and has held diverse positions from CIO to Senior AIX Engineer. Today, he works for Future Tech, a Long Island-based IBM business partner. Ken is a PMI certified Project Management Professional (PMP), an IBM Certified Advanced Technical Expert (CATE, IBM System p5 2006), and a Solaris Certified Network Administrator (SCNA). You can contact him at kmilberg@gmail.com.



22 January 2008

Also available in Chinese

Introduction

Often performance tuning is the last thing on your mind when you consider Network File Systems (NFS). You're so preoccupied with configuring your file systems properly and ensuring the security of your systems that you might routinely forget that the N in NFS stands for network. Unfortunately, if you don't pay attention to NFS tuning, you might have a poorly performing Network File System. Fortunately, IBM has integrated several tools to help monitor and tune Network File Systems on AIX, including nffstat and nfsmo. This article describes that monitoring and tuning.

You'll have to tune both the client and the server. This article explains how you can use netpmon to monitor read subroutines and write subroutines for NFS clients, as well as NFS Servers. You can also use nmon for a quick snapshot of NFS activity, and you can describe how to use nmon to analyze historically based data. Using netstat, you can validate that your network is healthy, because poor network utilization (or a poorly designed configuration) can result in poor NFS performance. This article also examines utilities such as nfs4cl that can be used for a specific version of NFS. And you'll learn some best practices, including spreading I/O across as many spindles as possible. In this case, you want the CPU load to be the bottleneck, not your I/O system.

Unlike other areas that you have tuned in this series, for NFS you must monitor (and possibly tune) all subsystems including CPU, memory, I/O, and obviously the network. From a client perspective, NFS file systems use disks that are remotely attached. Anything that affects the performance of that mounted disk will affect the performance of the NFS clients. The article also discusses important daemons, such as nfsd and biod, and how they actually tune themselves. You can see the basic interactions between the client and server to help you understand what's going on behind the scenes. Finally, the article emphasizes that, regardless of which subsystem you are tuning, systems tuning is an on-going process. Of course, the best time to start monitoring your systems is from the beginning, before you run into problems and users scream. Because there are so many factors that can influence NFS performance, make changes only one-at-a-time so that you can accurately assess the impact of your change.

Reviewing NFS

This section offers an overview of the Network File System as it relates to AIX. You can learn how the client and server relate to one another and the various factors that influence NFS performance.

Introduced by Sun Microsystems in 1984, NFS allows clients to access files over a network as if the files were locally attached as disks. Version 2, introduced in 1989, operated exclusively on UDP. Version 3, introduced in 1995, added support for TCP, which really helped it thrive over a WAN. Version 4 was introduced in 2000, and it was the first version developed by the Internet Engineering Task Force (after Sun relinquished control of NFS development). NFS was further enhanced in 2003 under RFC3530, which is the version that AIX supports. AIX 5.3 supports 3 versions of NFS: Versions 2, 3, and 4. The default version is Version 3. Note that the default NFS Version for Red Hat Linux® is Version 4.

You can choose the version type during the actual mounting of the file system, and you can have different versions of NFS running on the server. NFS now supports both TCP and UDP. Because UDP is faster (it does less), some environments that demand optimum performance (on a LAN) over reliability might perform better with UDP. TCP is more reliable (by establishing connections), and it also provides better performance over a WAN, because its flow control helps minimize network latency.

A benefit of NFS is that it acts independently of machines types and operating systems. It does this through its usage of Remote Procedure Calls (RPCs), as shown in Figure 1.

Figure 1. Interaction between client and server
Interaction between client and server

Figure 1 shows how NFS clients A and B access the data off NFS server Z. The client computers first request access to the exported data by mounting the file system. Then, when the client thread tries to process data within the NFS mounted file system, the data is redirected to biod, which takes the data through the LAN to the NFS Server and its nfsd daemon. The server uses nfds to export the directories that are available to its clients.

As you can see, you'll need to tune the network and I/O parameters. If Server Z is performing poorly, that obviously affects all of its NFS clients. If possible, tune the server specifically to function as an NFS Server (more about that later).

What about the biod daemon? This daemon is required to perform both read-ahead and write-behind requests. The biod daemon improves overall NFS performance as it either empties or fills up the buffer cache, acting as a liaison of the client applications. As shown in Figure 1, the biod daemon sends the requests to the server. On the other hand, nfsd is the liaison that provides NFS services to clients. When the server receives biod communication from the client, the server uses the nfsd daemon until the request is completed.

How is it that NFS was not stateful until Version 4, even though it could use TCP as early as Version 2? Figure 2 shows where NFS resides in relation to the TCP/IP stack and the OSI model.

Figure 2. OSI - TCP/IP - NFS
OSI - TCP/IP - NFS

NFS does not reside on the transport stack, because NFS uses Remote Procedure Calls (RPCs). RPCs are a library of procedures that allow the client and server processes to execute system calls as if they were executed in their own address spaces. In a typical UDP NFS Version 2 or 3 implementation, the NFS server sends its client a type of cookie after the clients are authorized to share the volume. This helps minimize network traffic. The problem is that if the server goes down, clients will continue to inundate the network with requests. That is why there is a preference for using TCP. Only Version 4 can use stateful connections, and only Version 4 uses TCP as its transport protocol.

NFS Version 4 has no interaction with portmapper or other daemons such as lockd and statd, because they are rolled into the kernel. In versions other than Version 4, portmapper is used to register RPC services and to provide the port numbers for the communication between clients and servers. External Data Representation (XDR) provides the mechanism that RPC and NFS use to ensure reliable data exchange between the client and the server. It does so in a way that is platform independent for the exchange of binary data. This addresses the possibility of systems representing data in different ways. Using XDR, data can be interpreted correctly, even on platforms that are not alike.


Monitoring

This section provides an overview of the tools available to you to monitor your NFS systems. These tools enable you to quickly troubleshoot a performance problem and to capture data for historical trending and analysis. Some tools are used more often for the server, while other tools are used more for the client. This section covers nmon, topas, nfsstat, nfs, nfs4cl, and netpmon.

nmon and topas

For NFS tuning, you could use a tool like topas or nmon initially, because it provides a nice dashboard view of what is happening in your system. Remember that NFS performance problems might not be related to your NFS subysystem at all. Your bottleneck might be on the network or, from a server perspective, on your CPU or Disk I/O. Running a tool like topas or nmon can quickly enable you to get a sense of what the real issues are. The example system in this article has 2 CPUs, and it is running AIX 5.3 TL6.

Figure 3 shows nmon output from an NFS perspective.

Figure 3. nmon output
nmon output

Using nmon, look at all the information that is available to you from an NFS (client and server) perspective. There are no current bottlenecks at all on this system. Though topas has improved recently with its ability to capture data, nmon might still be a better choice. While nmon provides a front-end similar to topas, nmon is more useful in terms of long-term trending and analyses. Further, nmon provides the system administrator the capability to output data to a Microsoft® Excel spreadsheet that yields pretty looking charts (tailored for senior management and functional teams) that clearly illustrate your bottlenecks. This is done through a tool called nmon analyzer, which provides the hooks into nmon. The nmon analyzer is available as a free download (see Resources).

How can you use nmon to capture data and import it into the analyzer? Using sudo, first run nmon for 3 hours, taking a snapshot every 60 seconds: # sudo nmon -f -t -r test1 -s 60 -c 180. Then sort the output file that gets created: # sort -A systemnfs_yymmdd.nmon > systemnfs_yymmdd.csv.

Next, ftp the .csv file to your computer, start the nmon analyzer (enable macros), and click analyze nmon data.

nfsstat

The nfsstat tool is arguably the most important tool you'll be working with. This command displays all types of information about NFS and RPC calls. nfsstat is used as a monitoring tool to troubleshoot problems and for performance tuning. Depending on the flags you use, you can use nfsstat to display NFS client or server information. It can also show the actual usage count of file system operation. This helps you understand exactly how each file system is utilized, so that you can understand how to best tune your system.

Look at the client flag (c) first. The r flag gives the RPC information (see Listing 1).

Listing 1. Running nfsstat with the c flag
root@lpar24ml162f_pub[/] > nfsstat -cr

Client rpc:
Connection oriented
calls      badcalls   badxids    timeouts   newcreds   badverfs   timers
14348      1          0          0          0          0          0
nomem      cantconn   interrupts
0          0          0
Connectionless
calls      badcalls   retrans    badxids    timeouts   newcreds   badverfs
23         0          0          0          0          0          0
timers     nomem      cantsend
0          0          0
root@lpar24ml162f_pub[/] >

What does this mean? Here are some of the connection-oriented parameters:

  • calls—Number of received RPC calls
  • badcalls—Number of calls rejected by the RPC layers
  • badxids—Number of times a server reply was received that did not correspond to any outstanding call
  • timeouts—Number of times calls timed-out while waiting for replies from the server
  • newcreds—Number of times authentication information was refreshed
  • badverfs—Number of times the call failed due to a bad verifier in the response

If you notice a large number of timeouts or badxids, you could benefit by increasing the timeo parameter with the mount command (details to come). .

nfs

Now look at the nfs information (the n flag) in Listing 2.

Listing 2. nfs n flag information
timers root@lpar24ml162f_pub[/] > nfsstat -cn

Client nfs:
calls      badcalls   clgets     cltoomany
14348      1          0          0
Version 2: (0 calls)
null       getattr    setattr    root       lookup     readlink   read
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
wrcache    write      create     remove     rename     link       symlink
0 0%       0 0%       0 0%       0 0%       0 0%       0 0%       0 0%
mkdir      rmdir      readdir    statfs
0 0%       0 0%       0 0%       0 0%
Version 3: (14348 calls)
null       getattr    setattr    lookup     access     readlink   read
0 0%       3480 24%   5 0%       1790 12%   5742 40%   0 0%       30 0%
write      create     mkdir      symlink    mknod      remove     rmdir
44 0%      3 0%       0 0%       0 0%       0 0%       3 0%       0 0%
rename     link       readdir    readdir+   fsstat     fsinfo     pathconf
0 0%       2 0%       3 0%       3195 22%   5 0%       2 0%       0 0%
commit
44 0%
root@lpar24ml162f_pub[/] >

What does this mean? Version 3 parameters include:

  • calls—Number of received NFS calls
  • badcalls—Number of calls rejected by the NFS layers
  • clgets—Number of times a client handle was received
  • cltoomany—Number of times the client handle had no unused entries

nfs4cl

If you're running NFS Version 4, you might be using nfs4cl more often. This command displays NFS Version 4 statistics and properties.

Listing 3. Using nfs4cl
root@lpar24ml162f_pub[/] > nfs4cl showfs

Server      Remote Path          fsid                 Local Path
--------    ---------------      ---------------      ---------------

After running this command, you see that there is no output. Run the mount command to see more detail.

Listing 4. Running the mount command
root@lpar24ml162f_pub[/] > mount
  node       mounted        mounted over    vfs       date        options
-------- ---------------  ---------------  ------ ------------ ---------------
         /dev/hd4         /                jfs    Sep 25 13:18 rw,log=/dev/hd8
         /dev/hd2         /usr             jfs    Sep 25 13:18 rw,log=/dev/hd8
         /dev/hd9var      /var             jfs    Sep 25 13:18 rw,log=/dev/hd8
         /dev/hd3         /tmp             jfs    Sep 25 13:18 rw,log=/dev/hd8
         /dev/hd1         /home            jfs    Sep 25 13:18 rw,log=/dev/hd8
         /proc            /proc            procfs Sep 25 13:18 rw
         /dev/hd10opt     /opt             jfs    Sep 25 13:18 rw,log=/dev/hd8
192.168.1.12 /stage/middleware /stage/middleware nfs3   Sep 25 13:22 ro,bg,soft,
                                                                      intr,sec=sys
192.168.1.12 /userdata/20004773 /home/u0004773   nfs3   Sep 25 13:29 bg,hard,int

As you can see, there are no file systems mounted using NFS Version 4, only NFS Version 3. Unlike the vast majority of performance tuning commands, nfs4cl can also be used to tune your system. You do this by using the setfsoptions subcommand to tune NFS Version 4. Another parameter you can tune is timeo, which specifies the time out value for the RPC calls to the server. Listing 5 shows you how to do it.

Listing 5. Tuning timeo with nfs4cl
root@lpar24ml162f_pub[/] > nfs4cl setfsoptions mnt timeo=7
root@lpar24ml162f_pub[/] >

Remember that you can also use the mount command to tune timeo.

netpmon

The netpmon command can be used to help troubleshoot NFS bottlenecks. In addition to monitoring many other types of network statistics, netpmon also monitors for clients: both read and write subroutines and NFS RPC requests. For servers, netpmon monitors read and write requests. netpmon starts a trace and runs in the background until you stop it.

Listing 6. Using netpmon
root@lpar24ml162f_pub[/stage] > netpmon -T 3000000 -o /tmp/nfrss.out

Run trcstop command to signal end of trace.
root@lpar24ml162f_pub[/stage] > Sun Oct  7 07:06:14 2007
System: AIX 5.3 Node: lpar24ml162f_pub Machine: 00C22F2F4C00

Listing 7 shows you how to stop the trace.

Listing 7. Stopping a trace
root@lpar24ml162f_pub[/stage] > trcstop
root@lpar24ml162f_pub[/stage] > [netpmon: Reporting started]

[netpmon: Reporting completed]
[               2 traced cpus               ]
[         34.998 secs total preempt time   ]

[netpmon: 44.223 secs in measured interval]

The output file

Now look at the NFS-specific information provided for in the output file.

Listing 8. NFS-specific information in the output file
NFSv3 Client RPC Statistics (by Server):
----------------------------------------

Server                     Calls/s
----------------------------------
p650                        126.68
------------------------------------------------------------------------
Total (all servers)         126.68


Detailed NFSv3 Client RPC Statistics (by Server):
-------------------------------------------------

SERVER: p650
calls:                  5602
  call times (msec):    avg 1.408   min 0.274   max 979.611 sdev 21.310

COMBINED (All Servers)
calls:                  5602
  call times (msec):    avg 1.408   min 0.274   max 979.611 sdev 21.310

Using netpmon, you can see the NFS Version 3 Client statistics by Server. Note that while netpmon is a useful trace utility, the performance overhead can sometimes outweigh its benefits; particularly when there are other ways to get similar information, so be aware of that when using this utility.


Tuning with nfsmo and mount

This section describes specific nfs tuning commands. Use nfsmo to set and display your nsfstat tuning parameters. Use mount to tune NFS server-based resources, which take effect only after mounting the NFS file system.

Client

The biod daemon plays an important role in connectivity. While biod self-tunes the number of threads (the daemon process creates and kills threads as needed), the maximum number of biod threads can be tuned, depending on the overall load. An important concept to understand here is that only increasing the number of threads will not alleviate performance problems caused by CPU, I/O, or memory bottlenecks. For example, if your CPU is near 100% utilization, increasing the amount of threads does not help you at all. Increasing the number of threads can help when multiple application threads access the same files, and you do not find any other types of bottlenecks. Using lsof can help you further determine which threads are accessing which files.

In earlier tuning sections, you might remember the Virtual Memory Manager (VMM) parameters minperm and maxperm. Unlike when you tune database servers, with NFS you want to allow the VMM to use as much RAM as possible for NFS data caching. Most NFS clients have little need for working segment pages. To ensure that all memory is used for file caching, set the maxperm and maxclient both to 100%.

Listing 9. Setting maxperm and maxclient to 100 percent
root@lpar24ml162f_pub[/tmp] > vmo -o maxperm%=100
Setting maxperm% to 100
root@lpar24ml162f_pub[/tmp] > vmo -o maxclient%=100
Setting maxclient% to 100
root@lpar24ml162f_pub[/tmp] >

Note that in the event that your application uses databases and it could benefit from the application performing its own file data cache, you should not set maxperm and maxclient to 100%. In this instance, set these numbers low, and mount your file systems using Concurrent I/O over NFS. Note also that NFS maintains caches on each client system that contain attributes of the most recently accessed files and directories. The mount command controls the length of time that the entries are kept in cache. The mount parameters you can change include:

  • actimeo
  • acregmin
  • acregmax
  • acdirmin
  • acdirmax

For example, the acregmin parameter specifies the minimum length of time after an actual update that file entries will be retained. When a file is updated, its removal from cache depends on what this parameter is. Using the mount command, you can also specify whether you want a hard or soft mount. With a soft mount, if there is an error, it is reported immediately to the requested program, while with a hard mount, NFS keeps retrying. These retries themselves could lead to performance problems. From a reliability standpoint, hard-mounting read and write directories is recommended to prevent possible data corruption.

Mount parameters rsize and wsize define the maximum sizes of RPC packets for read and write directories. The default value is 32768 bytes. With NFS Versions 3 and 4, if your NFS volumes are mounted on high-speed networks, you should increase this value to 65536. On the other hand, if your network is extremely slow, you might think about decreasing your default in order to reduce the amount of packet fragmentation by sending shorter packets. However, if you decrease the default, more packets will need to be sent, which could increase overall network utilization. Understand your network and tune it accordingly!

Server

Before looking at specific NFS parameters, always try to decrease the load on the network, while also looking at CPU and I/O subsystems. Bottlenecks often contribute to what appears to be an NFS-specific problem. For example, NFS can use either TCP or UDP, depending on the version and your preference. Make sure that your tcp_sendspace and tcp_recvspace are set to values higher than the defaults, because this can have an impact on your server by increasing network performance. These are not tuned with nfso, but with no.

Listing 10. Setting tcp_sendspace and tcp_recvspace to values higher than the defaults
root@lpar24ml162f_pub[/tmp] > no -a | grep send
          ipsendredirects = 1
           ipsrcroutesend = 1
       send_file_duration = 300
            tcp_sendspace = 16384
            udp_sendspace = 9216
root@lpar24ml162f_pub[/] > no -o tcp_sendspace=524288
Setting tcp_sendspace to 524288
Change to tunable tcp_sendspace, will only be effective for future connections
root@lpar24ml162f_pub[/] >

If you are running Version 4 of NFS, make sure you turn on nfs_rfc1323 (see Listing 11). This allows for TCP window sizes greater than 64KB. Set this on the client also.

Listing 11. Turning on nfs_rfc1323
root@lpar24ml162f_pub[/] > no -o rfc1323=1
Setting rfc1323 to 1

Alternatively, you can also set the rfc1323 with nfso.

Listing 12. Setting the rfc1323 with nfso
root@lpar24ml162f_pub[/] > nfso -o nfs_rfc1323=1
Setting nfs_rfc1323 to 1
root@lpar24ml162f_pub[/] >

Setting the rfc1323 with nfso sets the TCP window to affect only NFS (as opposed to no, which sets this across the board). If you already set this with no, you don't need to change this, though you might want to, in case some other UNIX® administrator decides to play around with the no commands.

Similar to the client, if the server is a dedicated NFS server, make sure that you tune your VMM parameters accordingly. Modify the maxperm and maxclient parameters to 100% to make sure that the VMM controls the caching of the page files using as much memory as possible in the process. On the server, tune nfsd, which is multithreaded, like you tuned biod (other daemons you can tune include rpc.mountd and rpc.lockd). Like biod, nfsd self-tunes, depending on the load. Increase the number of threads with the nfso command. One such parameter is nfs_max_read_size, which sets the maximum size of RPCs for read replies.

Look at what nfs_max_read_size is set to in Listing 13.

Listing 13. Setting the nfs_max_read_size parameter
root@lpar24ml162f_pub[/tmp] > nfso -L nfs_max_read_size
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE
     DEPENDENCIES
--------------------------------------------------------------------------------
nfs_max_read_size         32K    32K    32K    512    64K    Bytes             D

Now, increase it to 64K (using bytes).

Listing 14. Increasing nfs_max_read_size to 64K
root@lpar24ml162f_pub[/tmp] > nfso -o nfs_max_read_size=65536
root@lpar24ml162f_pub[/tmp] > nfso -L nfs_max_read_size
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE
     DEPENDENCIES
--------------------------------------------------------------------------------
nfs_max_read_size         64K    32K    32K    512    64K    Bytes             D
--------------------------------------------------------------------------------

root@lpar24ml162f_pub[/tmp] >

You just changed this to the maximum value allowed. If you want to keep the values, put this into the /etc/tunables/nextboot file so that they will remain changed after a reboot.

There are more parameters you can modify. To list all the parameters, use the -a or -L flag. -L provides more information in a nicer format.

Listing 15. Using the -L flag with the nfso command
root@lpar24ml162f_pub[/tmp] > nfso -L
NAME                      CUR    DEF    BOOT   MIN    MAX    UNIT           TYPE
     DEPENDENCIES
--------------------------------------------------------------------------------
portcheck                 0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
udpchecksum               1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_socketsize            600000 600000 600000 40000  1M     Bytes             D
--------------------------------------------------------------------------------
nfs_tcp_socketsize        600000 600000 600000 40000  1M     Bytes             D
--------------------------------------------------------------------------------
nfs_setattr_error         0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_gather_threshold      4K     4K     4K     512    8K+1   Bytes             D
--------------------------------------------------------------------------------
nfs_repeat_messages       0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_udp_duplicate_cache_size
                          5000   5000   5000   5000   100000 Req               I
--------------------------------------------------------------------------------
nfs_tcp_duplicate_cache_size
                          5000   5000   5000   5000   100000 Req               I
--------------------------------------------------------------------------------
nfs_server_base_priority  0      0      0      31     125    Pri               D
--------------------------------------------------------------------------------
nfs_dynamic_retrans       1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_iopace_pages          0      0      0      0      64K-1  Pages             D
--------------------------------------------------------------------------------
nfs_max_connections       0      0      0      0      10000  Number            D
--------------------------------------------------------------------------------
nfs_max_threads           3891   3891   3891   5      3891   Threads           D
--------------------------------------------------------------------------------
nfs_use_reserved_ports    0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_device_specific_bufs  1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_server_clread         1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_rfc1323               0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_max_write_size        32K    32K    32K    512    64K    Bytes             D
--------------------------------------------------------------------------------
nfs_max_read_size         64K    32K    32K    512    64K    Bytes             D
--------------------------------------------------------------------------------
nfs_allow_all_signals     0      0      0      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_v2_pdts               1      1      1      1      8      PDTs              M
--------------------------------------------------------------------------------
nfs_v3_pdts               1      1      1      1      8      PDTs              M
--------------------------------------------------------------------------------
nfs_v2_vm_bufs            10000  10000  10000  512    50000  Bufs              I
--------------------------------------------------------------------------------
nfs_v3_vm_bufs            10000  10000  10000  512    50000  Bufs              I
--------------------------------------------------------------------------------
nfs_securenfs_authtimeout 0      0      0      0      60     Seconds           D
--------------------------------------------------------------------------------
nfs_v3_server_readdirplus 1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
lockd_debug_level         0      0      0      0      10     Level             D
--------------------------------------------------------------------------------
statd_debug_level         0      0      0      0      10     Level             D
--------------------------------------------------------------------------------
statd_max_threads         50     50     50     1      1000   Threads           D
--------------------------------------------------------------------------------
nfs_v4_fail_over_timeout  0      0      0      0      3600   Seconds           D
--------------------------------------------------------------------------------
utf8_validation           1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_v4_pdts               1      1      1      1      8      PDTs              M
--------------------------------------------------------------------------------
nfs_v4_vm_bufs            10000  10000  10000  512    50000  Bufs              I
--------------------------------------------------------------------------------
server_delegation         1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------
nfs_auto_rbr_trigger      0      0      0      -1     1M     MB                D
--------------------------------------------------------------------------------
client_delegation         1      1      1      0      1      On/Off            D
--------------------------------------------------------------------------------

n/a means parameter not supported by the current platform or kernel

Parameter types:
    S = Static: cannot be changed
    D = Dynamic: can be freely changed
    B = Bosboot: can only be changed using bosboot and reboot
    R = Reboot: can only be changed during reboot
    C = Connect: changes are only effective for future socket connections
    M = Mount: changes are only effective for future mountings
    I = Incremental: can only be incremented

Value conventions:
    K = Kilo: 2^10       G = Giga: 2^30       P = Peta: 2^50
    M = Mega: 2^20       T = Tera: 2^40       E = Exa: 2^60
root@lpar24ml162f_pub[/tmp] >

Now you have a nice list of parameters you can modify!


Summary

This article discussed the Network File System (NFS), including its history and versions. It defined and discussed the NFS I/O stack and how the stack relates to both the OSI model and the TCP/IP stack. The article discussed best practices for disk configuration and VMM tuning in an NFS environment.

You examined the differences between tuning your clients and servers. You monitored your overall network and drilled down to the NFS layer during the monitoring. Further, you tuned your systems using nfso and mount.

In the next part of the series, you'll drill down to the actual networking packets. This will include a more detailed discussion of netstat. You'll also learn how to tune your network subsystem using the no utility.

Resources

Learn

Get products and technologies

Discuss

Comments

developerWorks: Sign in

Required fields are indicated with an asterisk (*).


Need an IBM ID?
Forgot your IBM ID?


Forgot your password?
Change your password

By clicking Submit, you agree to the developerWorks terms of use.

 


The first time you sign into developerWorks, a profile is created for you. Information in your profile (your name, country/region, and company name) is displayed to the public and will accompany any content you post, unless you opt to hide your company name. You may update your IBM account at any time.

All information submitted is secure.

Choose your display name



The first time you sign in to developerWorks, a profile is created for you, so you need to choose a display name. Your display name accompanies the content you post on developerWorks.

Please choose a display name between 3-31 characters. Your display name must be unique in the developerWorks community and should not be your email address for privacy reasons.

Required fields are indicated with an asterisk (*).

(Must be between 3 – 31 characters.)

By clicking Submit, you agree to the developerWorks terms of use.

 


All information submitted is secure.

Dig deeper into AIX and Unix on developerWorks


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=1
Zone=AIX and UNIX
ArticleID=281082
ArticleTitle=Optimizing AIX 5L performance: Tuning network performance, Part 2
publish-date=01222008