NFS Module Parameters

nfs:nfs3_pathconf_disable_cache

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 server can change the information for a specific
file dynamically, use this parameter to disable caching. There is no mechanism
for the client to validate its cache entry.

Commitment Level

Unstable

nfs:nfs4_pathconf_disable_cache

Description

Controls the caching of pathconf information
for NFS Version 4 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 server can change the information for a specific
file dynamically, use this parameter to disable caching. There is no mechanism
for the client to validate its cache entry.

Commitment Level

Unstable

nfs:nfs_allow_preepoch_time

Description

Controls whether files with incorrect or negative time
stamps should be made visible on the 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.

However, on a system running a 32-bit Solaris kernel, the timestamp
values are signed and 32-bits long. Thus, it would be possible to have a timestamp
representation that appeared to be prior to January 1, 1970, or pre-epoch.

The problem on a system running a 64-bit Solaris kernel is slightly
different. The timestamp values on the 64-bit 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_cots_timeo

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

Signed integer (32-bit)

Default

600 (60 seconds)

Range

0 to 231 - 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

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

Signed integer (32-bit)

Default

600 (60 seconds)

Range

0 to 231 - 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

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 client responds to certain events, such as detecting a forced unmount
operation or detecting how quickly the server fails over to a new server.

Data Type

Signed integer (32-bit)

Default

600 (60 seconds)

Range

0 to 231 - 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.

If a 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 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.

If a 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 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.

If a 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 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

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
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

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
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:nfs_lookup_neg_cache

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 server is not changing or is changing very slowly, and that it is okay
for such changes to propagate slowly to the 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 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.

Commitment Level

Unstable

nfs:nfs3_lookup_neg_cache

Description

Controls whether a negative name cache is used for NFS version
3 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 server is not changing or is changing very slowly, and that it is okay
for such changes to propagate slowly to the 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 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.

Commitment Level

Unstable

nfs:nfs4_lookup_neg_cache

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 server is not changing or is changing very slowly, and that it is okay
for such changes to propagate slowly to the 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 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.

Commitment Level

Unstable

nfs:nfs_max_threads

Description

Controls the number of kernel threads that perform asynchronous
I/O 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 client performs when
it stops using a file.

Data Type

Integer (16-bit)

Default

8

Range

0 to 215 - 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 client and 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

Description

Controls the number of kernel threads that perform asynchronous
I/O 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

Integer (16-bit)

Default

8

Range

0 to 215 - 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 client and 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

Description

Controls the number of kernel threads that perform asynchronous
I/O 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

Integer (16-bit)

Default

8

Range

0 to 215 - 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 client and 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:nfs_nra

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.

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 client
and 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

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.

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 client
and 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.

nfs:nfs4_nra

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.

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 client
and 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

Description

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

The rnode, used by both 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 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 of 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 the /etc/system 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.

nfs:nfs_shrinkreaddir

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 a 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

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 a 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 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
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

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 (32 bits on 32-bit platforms and 64 bits on
64-bit platforms)

Default

5 seconds

Range

0 to 231 - 1 on 32-bit platforms

0 to 263 - 1 on 64-bit platforms

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 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 server
is being actively used.

nfs:nfs_write_error_to_cons_only

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.

nfs:nfs_disable_rddir_cache

Controls the use of a cache to hold responses from READDIR and READDIRPLUS requests. This cache avoids over-the-wire calls to the
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 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 to prevent bad entries in the DNLC negative cache:

nfs:nfs_bsize

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

Data Type

Unsigned integer (32-bit)

Default

8192 bytes

Range

0 to 231 - 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

Do not change this parameter.

Commitment Level

Unstable

nfs:nfs3_bsize

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 server when it needs to do an I/O.

Data Type

Unsigned integer (32-bit)

Default

32,768 (32 Kbytes)

Range

0 to 231 - 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
the 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

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 server when it needs to do an I/O.

Data Type

Unsigned integer (32-bit)

Default

32,768 (32 Kbytes)

Range

0 to 231 - 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
the 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_async_clusters

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 231 - 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
server functionality that depends upon clusters of requests coming from the
client.

Commitment Level

Unstable

nfs:nfs3_async_clusters

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 231 - 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
server functionality that depends upon clusters of operations coming from
the client.

Commitment Level

Unstable

nfs:nfs4_async_clusters

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 231 - 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
server functionality that depends upon clusters of requests coming from the
client.

Commitment Level

Unstable

nfs:nfs_async_timeout

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:nacache

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 nrnode 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 the /etc/system 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:nfs3_jukebox_delay

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 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 (32 bits on 32-bit platforms and 64 bits on 64-bit
platforms)

Default

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

Range

0 to 231 - 1 on 32-bit platforms

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 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:nfs3_max_transfer_size

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 server returns as well as the maximum
size of the request that the client generates.

Data Type

Integer (32-bit)

Default

1,048,576
(1 Mbyte)

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 server
to 0 is likely to cause 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 Kbytes per datagram. This 64
Kbytes 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 client and the server.

When to Change

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

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

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

nfs:nfs4_max_transfer_size

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 server returns as well as the maximum
size of the request that the client generates.

Data Type

Integer (32-bit)

Default

32, 768 (32 Kbytes)

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 server
to 0 is likely to cause 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 on the maximum for UDP, see nfs:nfs3_max_transfer_size.

When to Change

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

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

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

Commitment Level

Unstable

nfs:nfs3_max_transfer_size_clts

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 server returns as well as the
maximum size of the request that the client generates.

Data Type

Integer (32-bit)

Default

32, 768 (32 Kbytes)

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 server
to 0 is likely to cause 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

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 server returns as well as the
maximum size of the request that the client generates.

Data Type

Integer (32-bit)

Default

1048576 bytes

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 server
to 0 is likely to cause 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 Mbyte are preferred.