Go to main content

Oracle® Solaris 11.4 Tunable Parameters Reference Manual

Exit Print View

Updated: January 2019
 
 

NFS Module Parameters

This section describes parameters related to the NFS kernel module.

nfs:nfs_allow_preepoch_time Parameter

Description

Controls whether files with incorrect or negative time stamps should be made visible on the NFS client.

Historically, neither the NFS client nor the NFS server would do any range checking on the file times being returned. The over-the-wire timestamp values are unsigned and 32-bits long. So, all values have been legal.

The timestamp values on the 64-bit Oracle Solaris kernel are signed and 64-bits long. It is impossible to determine whether a time field represents a full 32-bit time or a negative time, that is, a time prior to January 1, 1970.

It is impossible to determine whether to sign extend a time value when converting from 32 bits to 64 bits. The time value should be sign extended if the time value is truly a negative number. However, the time value should not be sign extended if it does truly represent a full 32-bit time value. This problem is resolved by simply disallowing full 32-bit time values.

Data Type

Integer (32-bit)

Default

0 (32-bit time stamps disabled)

Range

0 (32-bit time stamps disabled) or 1 (32-bit time stamps enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

Even during normal operation, it is possible for the timestamp values on some files to be set very far in the future or very far in the past. If access to these files is preferred using NFS mounted file systems, set this parameter to 1 to allow the timestamp values to be passed through unchecked.

Commitment Level

Unstable

nfs:nfs_async_clusters Parameter

Description

Controls the mix of asynchronous requests that are generated by the NFS version 2 client. The four types of asynchronous requests are read-ahead, putpage, pageio, and readdir-ahead. The client attempts to round-robin between these different request types to attempt to be fair and not starve one request type in favor of another.

However, the functionality in some NFS version 2 servers such as write gathering depends upon certain behaviors of existing NFS Version 2 clients. In particular, this functionality depends upon the client sending out multiple WRITE requests at about the same time. If one request is taken out of the queue at a time, the client would be defeating this server functionality designed to enhance performance for the client.

Thus, use this parameter to control the number of requests of each request type that are sent out before changing types.

Data Type

Unsigned integer (32-bit)

Default

1

Range

0 to 232 - 1

Units

Asynchronous requests

Dynamic?

Yes, but the cluster setting for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the value of this parameter to 0 causes all of the queued requests of a particular request type to be processed before moving on to the next type. This effectively disables the fairness portion of the algorithm.

When to Change

To increase the number of each type of asynchronous request that is generated before switching to the next type. Doing so might help with NFS server functionality that depends upon clusters of requests coming from the NFS client.

Commitment Level

Unstable

nfs:nfs3_async_clusters Parameter

Description

Controls the mix of asynchronous requests that are generated by the NFS version 3 client. The five types of asynchronous requests are read-ahead, putpage, pageio, readdir-ahead, and commit. The client attempts to round-robin between these different request types to attempt to be fair and not starve one request type in favor of another.

However, the functionality in some NFS version 3 servers such as write gathering depends upon certain behaviors of existing NFS version 3 clients. In particular, this functionality depends upon the client sending out multiple WRITE requests at about the same time. If one request is taken out of the queue at a time, the client would be defeating this server functionality designed to enhance performance for the client.

Thus, use this parameter to control the number of requests of each request type that are sent out before changing types.

Data Type

Unsigned integer (32-bit)

Default

1

Range

0 to 232 - 1

Units

Asynchronous requests

Dynamic?

Yes, but the cluster setting for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the value of this parameter to 0 causes all of the queued requests of a particular request type to be processed before moving on to the next type. This value effectively disables the fairness portion of the algorithm.

When to Change

To increase the number of each type of asynchronous operation that is generated before switching to the next type. Doing so might help with NFS server functionality that depends upon clusters of operations coming from the NFS client.

Commitment Level

Unstable

nfs:nfs4_async_clusters Parameter

Description

Controls the mix of asynchronous requests that are generated by the NFS version 4 client. The six types of asynchronous requests are read-ahead, putpage, pageio, readdir-ahead, commit, and inactive. The client attempts to round-robin between these different request types to attempt to be fair and not starve one request type in favor of another.

However, the functionality in some NFS version 4 servers such as write gathering depends upon certain behaviors of existing NFS version 4 clients. In particular, this functionality depends upon the client sending out multiple WRITE requests at about the same time. If one request is taken out of the queue at a time, the client would be defeating this server functionality designed to enhance performance for the client.

Thus, use this parameter to control the number of requests of each request type that are sent out before changing types.

Data Type

Unsigned integer (32-bit)

Default

1

Range

0 to 232 - 1

Units

Asynchronous requests

Dynamic?

Yes, but the cluster setting for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the value of this parameter to 0 causes all of the queued requests of a particular request type to be processed before moving on to the next type. This effectively disables the fairness portion of the algorithm.

When to Change

To increase the number of each type of asynchronous request that is generated before switching to the next type. Doing so might help with NFS server functionality that depends upon clusters of requests coming from the NFS client.

Commitment Level

Unstable

nfs:nfs_async_timeout Parameter

Description

Controls the duration of time that threads, which execute asynchronous I/O requests, sleep with nothing to do before exiting. When there are no more requests to execute, each thread goes to sleep. If no new requests come in before this timer expires, the thread wakes up and exits. If a request does arrive, a thread is woken up to execute requests until there are none again. Then, the thread goes back to sleep waiting for another request to arrive, or for the timer to expire.

Data Type

Integer (32-bit)

Default

6000 (1 minute expressed as 60 sec * 100Hz)

Range

0 to 231 - 1

Units

Hz. (Typically, the clock runs at 100Hz.)

Dynamic?

Yes

Validation

None. However, setting this parameter to a non positive value causes these threads exit as soon as there are no requests in the queue for them to process.

When to Change

If the behavior of applications in the system is known precisely and the rate of asynchronous I/O requests can be predicted, it might be possible to tune this parameter to optimize performance slightly in either of the following ways:

  • By making the threads expire more quickly, thus freeing up kernel resources more quickly

  • By making the threads expire more slowly, thus avoiding thread create and destroy overhead

Commitment Level

Unstable

nfs:nfs3_bsize Parameter

Description

Controls the logical block size used by the NFS version 3 client. This block size represents the amount of data that the client attempts to read from or write to the NFS server when it needs to do an I/O.

Data Type

Unsigned integer (32-bit)

Default

32,768 (32 KB)

Range

0 to 232 - 1

Units

Bytes

Dynamic?

Yes, but the block size for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. Setting this parameter too low or too high might cause the system to malfunction. Do not set this parameter to anything less than PAGESIZE for the specific platform. Do not set this parameter too high because it might cause the system to hang while waiting for memory allocations to be granted.

When to Change

Examine the value of this parameter when attempting to change the maximum data transfer size. Change this parameter in conjunction with nfs:nfs3_max_transfer_size parameter. If larger transfers are preferred, increase both parameters. If smaller transfers are preferred, then just reducing this parameter should suffice.

Commitment Level

Unstable

nfs:nfs4_bsize Parameter

Description

Controls the logical block size used by the NFS version 4 client. This block size represents the amount of data that the client attempts to read from or write to the NFS server when it needs to do an I/O.

Data Type

Unsigned integer (32-bit)

Default

32,768 (32 KB)

Range

0 to 232 - 1

Units

Bytes

Dynamic?

Yes, but the block size for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. Setting this parameter too low or too high might cause the system to malfunction. Do not set this parameter to anything less than PAGESIZE for the specific platform. Do not set this parameter too high because it might cause the system to hang while waiting for memory allocations to be granted.

When to Change

Examine the value of this parameter when attempting to change the maximum data transfer size. Change this parameter in conjunction with nfs:nfs4_max_transfer_size parameter. If larger transfers are preferred, increase both parameters. If smaller transfers are preferred, then just reducing this parameter should suffice.

Commitment Level

Unstable

nfs:nfs_cots_timeo Parameter

Description

Controls the default RPC timeout for NFS version 2 mounted file systems using connection-oriented transports such as TCP for the transport protocol.

Data Type

Unsigned integer (32-bit)

Default

600 (60 seconds)

Range

0 to 232 - 1

Units

10th of seconds

Dynamic?

Yes, but the RPC timeout for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

TCP does a good job ensuring requests and responses are delivered appropriately. However, if the round-trip times are very large in a particularly slow network, the NFS version 2 client might time out prematurely.

Increase this parameter to prevent the client from timing out incorrectly. The range of values is very large, so increasing this value too much might result in situations where a retransmission is not detected for long periods of time.

Commitment Level

Unstable

nfs:nfs3_cots_timeo Parameter

Description

Controls the default RPC timeout for NFS version 3 mounted file systems using connection-oriented transports such as TCP for the transport protocol.

Data Type

Unsigned integer (32-bit)

Default

600 (60 seconds)

Range

0 to 232 - 1

Units

10th of seconds

Dynamic?

Yes, but the RPC timeout for a file system is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

TCP does a good job ensuring requests and responses are delivered appropriately. However, if the round-trip times are very large in a particularly slow network, the NFS version 3 client might time out prematurely.

Increase this parameter to prevent the client from timing out incorrectly. The range of values is very large, so increasing this value too much might result in situations where a retransmission is not detected for long periods of time.

Commitment Level

Unstable

nfs:nfs4_cots_timeo Parameter

Description

Controls the default RPC timeout for NFS version 4 mounted file systems using connection-oriented transports such as TCP for the transport protocol.

The NFS Version 4 protocol specification disallows retransmission over the same TCP connection. Thus, this parameter primarily controls how quickly the NFS client responds to certain events, such as detecting a forced unmount operation or detecting how quickly the NFS server fails over to a new server.

Data Type

Unsigned integer (32-bit)

Default

600 (60 seconds)

Range

0 to 232 - 1

Units

10th of seconds

Dynamic?

Yes, but this parameter is set when the file system is mounted. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

TCP does a good job ensuring requests and responses are delivered appropriately. However, if the round-trip times are very large in a particularly slow network, the NFS version 4 client might time out prematurely.

Increase this parameter to prevent the client from timing out incorrectly. The range of values is very large, so increasing this value too much might result in situations where a retransmission is not detected for long periods of time.

Commitment Level

Unstable

nfs:nfs_disable_rddir_cache Parameter

Description

Controls the use of a cache to hold responses from READDIR and READDIRPLUS requests. This cache avoids over-the-wire calls to the NFS server to retrieve directory information.

Data Type

Integer (32-bit)

Default

0 (caching enabled)

Range

0 (caching enabled) or 1 (caching disabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

Examine the value of this parameter if interoperability problems develop due to a NFS server that does not update the modification time on a directory when a file or directory is created in it or removed from it. The symptoms are that new names do not appear in directory listings after they have been added to the directory or that old names do not disappear after they have been removed from the directory.

This parameter controls the caching for NFS version 2, 3, and 4 mounted file systems. This parameter applies to all NFS mounted file systems, so caching cannot be disabled or enabled on a per file system basis.

If you disable this parameter, you should also disable the following parameters to prevent bad entries in the DNLC negative cache:

Commitment Level

Unstable

nfs:nfs_do_symlink_cache Parameter

Description

Controls whether the contents of symbolic link files are cached for NFS version 2 mounted file systems.

Data Type

Integer (32-bit)

Default

1 (caching enabled)

Range

0 (caching disabled) or 1 (caching enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

If a NFS server changes the contents of a symbolic link file without updating the modification timestamp on the file or if the granularity of the timestamp is too large, then changes to the contents of the symbolic link file might not be visible on the NFS client for extended periods. In this case, use this parameter to disable the caching of symbolic link contents. Doing so makes the changes immediately visible to applications running on the client.

Commitment Level

Unstable

nfs:nfs3_do_symlink_cache Parameter

Description

Controls whether the contents of symbolic link files are cached for NFS version 3 mounted file systems.

Data Type

Integer (32-bit)

Default

1 (caching enabled)

Range

0 (caching disabled) or 1 (caching enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

If a NFS server changes the contents of a symbolic link file without updating the modification timestamp on the file or if the granularity of the timestamp is too large, then changes to the contents of the symbolic link file might not be visible on the NFS client for extended periods. In this case, use this parameter to disable the caching of symbolic link contents. Doing so makes the changes immediately visible to applications running on the client.

Commitment Level

Unstable

nfs:nfs4_do_symlink_cache Parameter

Description

Controls whether the contents of symbolic link files are cached for NFS version 4 mounted file systems.

Data Type

Integer (32-bit)

Default

1 (caching enabled)

Range

0 (caching disabled) or 1 (caching enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

If a NFS server changes the contents of a symbolic link file without updating the modification timestamp on the file or if the granularity of the timestamp is too large, then changes to the contents of the symbolic link file might not be visible on the NFS client for extended periods. In this case, use this parameter to disable the caching of symbolic link contents. Doing so makes the changes immediately visible to applications running on the client.

Commitment Level

Unstable

nfs:nfs_dynamic Parameter

Description

Controls whether a feature known as dynamic retransmission is enabled for NFS version 2 mounted file systems using connectionless transports such as UDP. This feature attempts to reduce retransmissions by monitoring NFS server response times and then adjusting RPC timeouts and read- and write- transfer sizes.

Data Type

Integer (32-bit)

Default

1 (enabled)

Range

0 (disabled) or 1 (enabled)

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

Do not change this parameter.

Commitment Level

Unstable

nfs:nfs3_dynamic Parameter

Description

Controls whether a feature known as dynamic retransmission is enabled for NFS version 3 mounted file systems using connectionless transports such as UDP. This feature attempts to reduce retransmissions by monitoring NFS server response times and then adjusting RPC timeouts and read- and write- transfer sizes.

Data Type

Integer (32-bit)

Default

0 (disabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

Do not change this parameter.

Commitment Level

Unstable

nfs:nfs3_jukebox_delay Parameter

Description

Controls the duration of time that the NFS version 3 client waits to transmit a new request after receiving the NFS3ERR_JUKEBOX error from a previous request. The NFS3ERR_JUKEBOX error is generally returned from the NFS server when the file is temporarily unavailable for some reason. This error is generally associated with hierarchical storage, and CD or tape jukeboxes.

Data Type

Long integer (64-bit)

Default

1000 (10 seconds expressed as 10 sec * 100Hz)

Range

0 to 263 - 1 on 64-bit platforms

Units

Hz. (Typically, the clock runs at 100Hz.)

Dynamic?

Yes

Validation

None

When to Change

Examine the value of this parameter and perhaps adjust it to match the behaviors exhibited by the NFS server. Increase this value if the delays in making the file available are long in order to reduce network overhead due to repeated retransmissions. Decrease this value to reduce the delay in discovering that the file has become available.

Commitment Level

Unstable

nfs:nfs_lookup_neg_cache Parameter

Description

Controls whether a negative name cache is used for NFS version 2 mounted file systems. This negative name cache records file names that were looked up, but not found. The cache is used to avoid over-the-network look-up requests made for file names that are already known to not exist.

Data Type

Integer (32-bit)

Default

1 (enabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

For the cache to perform correctly, negative entries must be strictly verified before they are used. This consistency mechanism is relaxed slightly for read-only mounted file systems. It is assumed that the file system on the NFS server is not changing or is changing very slowly, and that it is okay for such changes to propagate slowly to the NFS client. The consistency mechanism becomes the normal attribute cache mechanism in this case.

If file systems are mounted read-only on the NFS client, but are expected to change on the NFS server and these changes need to be seen immediately by the client, use this parameter to disable the negative cache.

If you disable the nfs:nfs_disable_rddir_cache parameter, you should probably also disable this parameter. For more information, see nfs:nfs_disable_rddir_cache Parameter.

Commitment Level

Unstable

nfs:nfs3_lookup_neg_cache Parameter

Description

Controls whether a negative name cache is used for NFS version 3 read-only mounted file systems. This negative name cache records file names that were looked up, but were not found. The cache is used to avoid over-the-network look-up requests made for file names that are already known to not exist.

Data Type

Integer (32-bit)

Default

1 (enabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

For the cache to perform correctly, negative entries must be strictly verified before they are used. This consistency mechanism is relaxed slightly for read-only mounted file systems. It is assumed that the file system on the NFS server is not changing or is changing very slowly, and that it is okay for such changes to propagate slowly to the NFS client. The consistency mechanism becomes the normal attribute cache mechanism in this case.

If file systems are mounted read-only on the client, but are expected to change on the NFS server and these changes need to be seen immediately by the NFS client, use this parameter to disable the negative cache.

If you disable the nfs:nfs_disable_rddir_cache Parameter parameter, you should probably also disable this parameter.

Commitment Level

Unstable

nfs:nfs4_lookup_neg_cache Parameter

Description

Controls whether a negative name cache is used for NFS version 4 mounted file systems. This negative name cache records file names that were looked up, but were not found. The cache is used to avoid over-the-network look-up requests made for file names that are already known to not exist.

Data Type

Integer (32-bit)

Default

1 (enabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

For the cache to perform correctly, negative entries must be strictly verified before they are used. This consistency mechanism is relaxed slightly for read-only mounted file systems. It is assumed that the file system on the NFS server is not changing or is changing very slowly, and that it is okay for such changes to propagate slowly to the NFS client. The consistency mechanism becomes the normal attribute cache mechanism in this case.

If file systems are mounted read-only on the NFS client, but are expected to change on the NFS server and these changes need to be seen immediately by the client, use this parameter to disable the negative cache.

If you disable the nfs:nfs_disable_rddir_cache Parameter parameter, you should probably also disable this parameter.

Commitment Level

Unstable

nfs:nfs_max_threads Parameter

Description

Controls the number of kernel threads that perform asynchronous I/O for each file system for the NFS version 2 client. Because NFS is based on RPC and RPC is inherently synchronous, separate execution contexts are required to perform NFS operations that are asynchronous from the calling thread.

The operations that can be executed asynchronously are read for read-ahead, readdir for readdir read-ahead, write for putpage and pageio operations, commit, and inactive for cleanup operations that the NFS client performs when it stops using a file.

Data Type

Unsigned short

Default

8

Range

0 to 216 - 1

Units

Threads

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

To increase or reduce the number of simultaneous I/O operations that are outstanding at any given time. For example, for a very low bandwidth network, you might want to decrease this value so that the NFS client does not overload the network. Alternately, if the network is very high bandwidth, and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nfs3_max_threads Parameter

Description

Controls the number of kernel threads that perform asynchronous I/O for each file system for the NFS version 3 client. Because NFS is based on RPC and RPC is inherently synchronous, separate execution contexts are required to perform NFS operations that are asynchronous from the calling thread.

The operations that can be executed asynchronously are read for read-ahead, readdir for readdir read-ahead, write for putpage and pageio requests, and commit.

Data Type

Unsigned short

Default

8

Range

0 to 216 - 1

Units

Threads

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

To increase or reduce the number of simultaneous I/O operations that are outstanding at any given time. For example, for a very low bandwidth network, you might want to decrease this value so that the NFS client does not overload the network. Alternately, if the network is very high bandwidth, and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nfs4_max_threads Parameter

Description

Controls the number of kernel threads that perform asynchronous I/O for each file system for the NFS version 4 client. Because NFS is based on RPC and RPC is inherently synchronous, separate execution contexts are required to perform NFS operations that are asynchronous from the calling thread.

The operations that can be executed asynchronously are read for read-ahead, write-behind, directory read-ahead, and cleanup operations that the client performs when it stops using a file.

Data Type

Unsigned short

Default

8

Range

0 to 216 - 1

Units

Threads

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None

When to Change

To increase or reduce the number of simultaneous I/O operations that are outstanding at any given time. For example, for a very low bandwidth network, you might want to decrease this value so that the NFS client does not overload the network. Alternately, if the network is very high bandwidth, and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nfs3_max_transfer_size Parameter

Description

Controls the maximum size of the data portion of an NFS version 3 READ, WRITE, READDIR, or READDIRPLUS request. This parameter controls both the maximum size of the request that the NFS server returns as well as the maximum size of the request that the NFS client generates.

Data Type

Unsigned integer (32-bit)

Default

1,048,576 (1MB)

Range

0 to 231 - 1

Units

Bytes

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the maximum transfer size on the NFS server to 0 is likely to cause NFS clients to malfunction or just decide not to attempt to talk to the server.

There is also a limit on the maximum transfer size when using NFS over the UDP transport. UDP has a hard limit of 64 KB per datagram. This 64 KB must include the RPC header as well as other NFS information, in addition to the data portion of the request. Setting the limit too high might result in errors from UDP and communication problems between the NFS client and the NFS server.

When to Change

To tune the size of data transmitted over the network. In general, the nfs:nfs3_bsize Parameter parameter should also be updated to reflect changes in this parameter.

For example, when you attempt to increase the transfer size beyond 32 KB, update nfs:nfs3_bsize to reflect the increased value. Otherwise, no change in the over-the-wire request size is observed.

If you want to use a smaller transfer size than the default transfer size, use the mount command's –wsize –rsize option on a per-file system basis.

Commitment Level

Unstable

nfs:nfs4_max_transfer_size Parameter

Description

Controls the maximum size of the data portion of an NFS version 4 READ, WRITE, READDIR, or READDIRPLUS request. This parameter controls both the maximum size of the request that the NFS server returns as well as the maximum size of the request that the NFS client generates.

Data Type

Unsigned integer (32-bit)

Default

32, 768 (32 KB)

Range

0 to 232 - 1

Units

Bytes

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the maximum transfer size on the NFS server to 0 is likely to causeFS clients to malfunction or just decide not to attempt to talk to the server.

There is also a limit on the maximum transfer size when using NFS over the UDP transport. For more information about the maximum for UDP, see nfs:nfs3_max_transfer_size Parameter.

When to Change

To tune the size of data transmitted over the network. In general, the nfs:nfs4_bsize Parameter parameter should also be updated to reflect changes in this parameter.

For example, when you attempt to increase the transfer size beyond 32 KB, update nfs:nfs4_bsize to reflect the increased value. Otherwise, no change in the over-the-wire request size is observed.

If you want to use a smaller transfer size than the default transfer size, use the mount command's –wsize –rsize option on a per-file system basis.

Commitment Level

Unstable

nfs:nfs3_max_transfer_size_clts Parameter

Description

Controls the maximum size of the data portion of an NFS version 3 READ, WRITE, READDIR, or READDIRPLUS request over UDP. This parameter controls both the maximum size of the request that the NFS server returns as well as the maximum size of the request that the NFS client generates.

Data Type

Unsigned integer (32-bit)

Default

32, 768 (32 KB)

Range

0 to 232 - 1

Units

Bytes

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the maximum transfer size on the NFS server to 0 is likely to cause NFS clients to malfunction or just decide not to attempt to talk to the server.

When to Change

Do not change this parameter.

Commitment Level

Unstable

nfs:nfs3_max_transfer_size_cots Parameter

Description

Controls the maximum size of the data portion of an NFS version 3 READ, WRITE, READDIR, or READDIRPLUS request over TCP. This parameter controls both the maximum size of the request that the NFS server returns as well as the maximum size of the request that the NFS client generates.

Data Type

Unsigned integer (32-bit)

Default

1,048,576 bytes (1MB)

Range

0 to 232 - 1

Units

Bytes

Dynamic?

Yes, but this parameter is set per file system at mount time. To affect a particular file system, unmount and mount the file system after changing this parameter.

Validation

None. However, setting the maximum transfer size on the NFS server to 0 is likely to cause NFS clients to malfunction or just decide not to attempt to talk to the server.

When to Change

Do not change this parameter unless transfer sizes larger than 1 MB are preferred.

Commitment Level

Unstable

nfs:nacache Parameter

Description

Tunes the number of hash queues that access the file access cache on the NFS client. The file access cache stores file access rights that users have with respect to files that they are trying to access. The cache itself is dynamically allocated. However, the hash queues used to index into the cache are statically allocated. The algorithm assumes that there is one access cache entry per active file and four of these access cache entries per hash bucket. Thus, by default, the value of this parameter is set to the value of the nfs:nrnode Parameter parameter.

Data Type

Integer (32-bit)

Default

The default setting of this parameter is 0. This value means that the value of nacache should be set to the value of the nrnode parameter.

Range

1 to 231 - 1

Units

Access cache entries

Dynamic?

No. This value can only be changed by adding or changing the parameter in an /etc/system.d/file, and then rebooting system.

Validation

None. However, setting this parameter to a negative value will probably cause the system to try to allocate a very large set of hash queues. While trying to do so, the system is likely to hang.

When to Change

Examine the value of this parameter if the basic assumption of one access cache entry per file would be violated. This violation could occur for systems in a timesharing mode where multiple users are accessing the same file at about the same time. In this case, it might be helpful to increase the expected size of the access cache so that the hashed access to the cache stays efficient.

Commitment Level

Unstable

nfs:nfs_nra Parameter

Description

Controls the number of read-ahead operations that are queued by the NFS version 2 client when sequential access to a file is discovered. These read-ahead operations increase concurrency and read throughput. Each read-ahead request is generally for one logical block of file data.

Data Type

Integer (32-bit)

Default

4

Range

0 to 231 - 1

Units

Logical blocks.

Dynamic?

Yes

Validation

None

When to Change

To increase or reduce the number of read-ahead requests that are outstanding for a specific file at any given time. For example, for a very low bandwidth network or on a low memory client, you might want to decrease this value so that the NFS client does not overload the network or the system memory. Alternately, if the network is very high bandwidth, and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nfs3_nra Parameter

Description

Controls the number of read-ahead operations that are queued by the NFS version 3 client when sequential access to a file is discovered. These read-ahead operations increase concurrency and read throughput. Each read-ahead request is generally for one logical block of file data.

Data Type

Integer (32-bit)

Default

4

Range

0 to 231 - 1

Units

Logical blocks. (See nfs:nfs3_bsize Parameter.)

Dynamic?

Yes

Validation

None

When to Change

To increase or reduce the number of read-ahead requests that are outstanding for a specific file at any given time. For example, for a very low bandwidth network or on a low memory client, you might want to decrease this value so that the NFS client does not overload the network or the system memory. Alternately, if the network is very high bandwidth and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nfs4_nra Parameter

Description

Controls the number of read-ahead operations that are queued by the NFS version 4 client when sequential access to a file is discovered. These read-ahead operations increase concurrency and read throughput. Each read-ahead request is generally for one logical block of file data.

Data Type

Integer (32-bit)

Default

4

Range

0 to 231 - 1

Units

Logical blocks. (See nfs:nfs3_bsize Parameter.)

Dynamic?

Yes

Validation

None

When to Change

To increase or reduce the number of read-ahead requests that are outstanding for a specific file at any given time. For example, for a very low bandwidth network or on a low memory client, you might want to decrease this value so that the NFS client does not overload the network or the system memory. Alternately, if the network is very high bandwidth and the NFS client and NFS server have sufficient resources, you might want to increase this value. Doing so can more effectively utilize the available network bandwidth, and the client and server resources.

Commitment Level

Unstable

nfs:nrnode Parameter

Description

Controls the size of the rnode cache on the NFS client.

The rnode, used by NFS version 2, 3, and 4 clients, is the central data structure that describes a file on the NFS client. The rnode contains the file handle that identifies the file on the NFS server. The rnode also contains pointers to various caches used by the NFS client to avoid network calls to the server. Each rnode has a one-to-one association with a vnode. The vnode caches file data.

The NFS client attempts to maintain a minimum number of rnodes to attempt to avoid destroying cached data and metadata. When an rnode is reused or freed, the cached data and metadata must be destroyed.

Data Type

Integer (32-bit)

Default

The default setting of this parameter is 0, which means that the value nrnode should be set to the value of the ncsize parameter. Actually, any non positive value of nrnode results in nrnode being set to the value of ncsize.

Range

1 to 231 - 1

Units

rnodes

Dynamic?

No. This value can only be changed by adding or changing the parameter in an /etc/system.d/file, and then rebooting the system.

Validation

The system enforces a maximum value such that the rnode cache can only consume 25 percent of available memory.

When to Change

Because rnodes are created and destroyed dynamically, the system tends to settle upon a nrnode-size cache, automatically adjusting the size of the cache as memory pressure on the system increases or as more files are simultaneously accessed. However, in certain situations, you could set the value of nrnode if the mix of files being accessed can be predicted in advance. For example, if the NFS client is accessing a few very large files, you could set the value of nrnode to a small number so that system memory can cache file data instead of rnodes. Alternately, if the client is accessing many small files, you could increase the value of nrnode to optimize for storing file metadata to reduce the number of network calls for metadata.

Although it is not recommended, the rnode cache can be effectively disabled by setting the value of nrnode to 1. This value instructs the client to only cache 1 rnode, which means that it is reused frequently.

Commitment Level

Unstable

nfs:nfs3_pathconf_disable_cache Parameter

Description

Controls the caching of pathconf information for NFS Version 3 mounted file systems.

Data Type

Integer (32-bit)

Default

0 (caching enabled)

Range

0 (caching enabled) or 1 (caching disabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

The pathconf information is cached on a per file basis. However, if the NFS server can change the information for a specific file dynamically, use this parameter to disable caching. There is no mechanism for the NFS client to validate its cache entry.

Commitment Level

Unstable

nfs:nfs_shrinkreaddir Parameter

Description

Some older NFS servers might incorrectly handle NFS version 2 READDIR requests for more than 1024 bytes of directory information. This problem is due to a bug in the server implementation. However, this parameter contains a workaround in the NFS version 2 client.

When this parameter is enabled, the client does not generate READDIR request for larger than 1024 bytes of directory information. If this parameter is disabled, then the over-the-wire size is set to the lesser of either the size passed in by using the getdents system call or by using NFS_MAXDATA, which is 8192 bytes. For more information, see getdents(2).

Data Type

Integer (32-bit)

Default

0 (disabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

Examine the value of this parameter if an older NFS version 2 only server is used and interoperability problems occur when the server tries to read directories. Enabling this parameter might cause a slight decrease in performance for applications that read directories.

Commitment Level

Unstable

nfs:nfs3_shrinkreaddir Parameter

Description

Some older NFS servers might incorrectly handle NFS version 3 READDIR requests for more than 1024 bytes of directory information. This problem is due to a bug in the server implementation. However, this parameter contains a workaround in the NFS version 3 client.

When this parameter is enabled, the client does not generate READDIR request for larger than 1024 bytes of directory information. If this parameter is disabled, then the over-the-wire size is set to the minimum of either the size passed in by using the getdents system call or by using MAXBSIZE, which is 8192 bytes. For more information, see the getdents(2) man page.

Data Type

Integer (32-bit)

Default

0 (disabled)

Range

0 (disabled) or 1 (enabled)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

Examine the value of this parameter if an older NFS version 3 only server is used and interoperability problems occur when the server tries to read directories. Enabling this parameter might cause a slight decrease in performance for applications that read directories.

Commitment Level

Unstable

nfs:nfs_write_error_interval Parameter

Description

Controls the time duration in between logging ENOSPC and EDQUOT write errors received by the NFS client. This parameter affects NFS version 2, 3, and 4 clients.

Data Type

Long integer (64-bit)

Default

5 seconds

Range

0 to 263 - 1

Units

Seconds

Dynamic?

Yes

Validation

None

When to Change

Increase or decrease the value of this parameter in response to the volume of messages being logged by the NFS client. Typically, you might want to increase the value of this parameter to decrease the number of out of space messages being printed when a full file system on a NFS server is being actively used.

Commitment Level

Unstable

nfs:nfs_write_error_to_cons_only Parameter

Description

Controls whether NFS write errors are logged to the system console and syslog or to the system console only. This parameter affects messages for NFS version 2, 3, and 4 clients.

Data Type

Integer (32-bit)

Default

0 (system console and syslog)

Range

0 (system console and syslog) or 1 (system console)

Units

Boolean values

Dynamic?

Yes

Validation

None

When to Change

Examine the value of this parameter to avoid filling up the file system containing the messages logged by the syslogd daemon. When this parameter is enabled, messages are printed on the system console only and are not copied to the syslog messages file.

Commitment Level

Unstable