Содержащиеся в
Найти другие документы
Ресурсы поддержки
| Загрузить это руководство в формате PDF (772 КБ)
Chapter 3 NFS Tunable Parameters
This section describes the NFS tunable parameters. For information
on kernel tunables, see Chapter 2, Solaris Kernel Tunables. For information on TCP/IP
tunables, see Chapter 4, TCP/IP Tunable Parameters.
Tuning the NFS Environment
You can define these parameters in the /etc/system
file, which is read during the boot process. Each parameter can be identified
by the name of the kernel module that it is in and a parameter name that identifies
it. See Tuning a Solaris System for more information.
Note –
The names of the symbols, the modules that they reside in, and
the default values can change between releases. Check the documentation for
the version of the active SunOS release before making changes or applying
values from previous releases.
NFS Module Parameters
This section describes parameters relating to the NFS kernel module.
nfs:nfs3_pathconf_disable_cache
- Description
-
Controls the caching
of pathconf(2)
information for NFS Version 3 mounted file systems.
- Data Type
-
Integer (32–bit)
- Default
-
0 (caching enabled)
- Range
-
0 (caching enabled), 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, then use this parameter to disable caching
because there is no mechanism for the client to validate its cache entry.
- Stability Level
-
Evolving
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 by using these attributes.
The over-the-wire time stamp values are unsigned and 32–bits long, so
all values have been legal.
However, on a system running a 32–bit Solaris release, the time
stamp values are signed and 32–bits long. Thus, it would be possible
to have a time stamp representation that appeared to be prior to January 1,
1970, or pre-epoch.
The problem on a system running a 64–bit Solaris release is slightly
different. The time stamp values on the 64–bit Solaris release 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, one 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, but 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), 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 time stamp values on some
files to be set very far in the future or very far in the past. If access
to these files is desired using NFS mounted file systems, then set this parameter
to 1 to allow the time stamp values to be passed through unchecked.
- Stability Level
-
Evolving
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 to be too large
might result in real situations where a retransmission was required to not
be detected for long periods of time.
- Stability Level
-
Evolving
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 to be too large might result in real situations where
a retransmission was required to not be detected for long periods of time.
- Stability Level
-
Evolving
nfs:nfs_do_symlink_cache
- 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), 1 (caching
enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
If a server changes
the contents of a symbolic link file without updating the modification time
stamp on the file or if the granularity of the time stamp 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, thus making the changes visible to
applications running on the client immediately.
- Stability Level
-
Evolving
nfs:nfs3_do_symlink_cache
- 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), 1 (caching
enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
If a server changes
the contents of a symbolic link file without updating the modification time
stamp on the file or if the granularity of the time stamp 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, thus making the changes visible to
applications running on the client immediately.
- Stability Level
-
Evolving
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), 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
-
In a situation where
server response or network load varies rapidly, the dynamic retransmission
support might incorrectly increase RPC timeouts or reduce read and write transfer
sizes unnecessarily. Disabling this functionality might result in increased
throughput, but possibly, also increasing the visibility of the spikes due
to server response or network load.
- Stability Level
-
Evolving
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), 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
-
In a situation where
server response or network load varies rapidly, the dynamic retransmission
support might incorrectly increase RPC timeouts or reduce read and write transfer
sizes unnecessarily. Disabling this functionality might result in increased
throughput, but possibly, also increasing the visibility of the spikes due
to server response or network load.
- Stability Level
-
Evolving
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 filenames that were looked up, but not found. The cache is used
to avoid over the network lookup requests made for filenames that are already
known to not exist.
- Data Type
-
Integer (32–bit)
- Default
-
1 (enabled)
- Range
-
0 (disabled), 1 (enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
In order 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 by assuming 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, then use this parameter to disable the negative cache.
- Stability Level
-
Evolving
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 filenames that were looked up, but were not found. The cache
is used to avoid over-the-network lookup requests made for filenames that
are already known to not exist.
- Data Type
-
Integer (32–bit)
- Default
-
1 (enabled)
- Range
-
0 (disabled), 1 (enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
In order 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 by assuming 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, then use this parameter to disable the negative cache.
- Stability Level
-
Evolving
nfs:nfs_max_threads
- Description
-
Controls the number
of kernel threads that perform asynchronous I/O for the NFS version 2 client.
Since 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 which can be executed asynchronously are read for read-ahead,
readdir for readdir read-ahead, and write for putpage and pageio requests.
- 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
-
Change this parameter
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 to more effectively
utilize the available network bandwidth and client and server resources.
- Stability Level
-
Unstable
nfs:nfs3_max_threads
- Description
-
Controls the number
of kernel threads that perform asynchronous I/O for the NFS version 3 client.
Since 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
-
Change this parameter
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 to more effectively
utilize the available network bandwidth and the client and server resources.
- Stability 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
8192 bytes of file data.
- Data Type
-
Integer (32–bit)
- Default
-
4
- Range
-
0 to 231
- 1
- Units
-
Read-ahead requests
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Change this parameter
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 to more effectively utilize
the available network bandwidth and the client and server resources.
- Stability 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
32,768 bytes of file data.
- Data Type
-
Integer (32–bit)
- Default
-
4
- Range
-
0 to 231
- 1
- Units
-
Read-ahead requests
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Change this parameter
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 to more effectively utilize
the available network bandwidth and the client and server resources.
- Stability Level
-
Unstable
nfs:nrnode
- Description
-
Controls the size of
the rnode cache on the NFS client.
The rnode cache, used by both NFS version 2 and 3
clients, is the central data structure that describes a file on the NFS client.
It contains the file handle that identifies the file on the server and 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 keep a minimum number of rnodes
around 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% of available
memory.
- When to Change
-
Since 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, it might
be helpful to 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, it might be useful to set the value of nrnode to be a small number so that system memory can cache file
data instead of rnodes. Alternately, if the client is accessing
many small files, it might be helpful to set the value of nrnode large enough 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 instructs the client to only cache 1 rnode,
which means that it is reused frequently.
- Stability Level
-
Evolving
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 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 minimum
of either the size passed in by using the getdents(2) system call or by using NFS_MAXDATA, which is 8192 bytes.
- Data Type
-
Integer (32–bit)
- Default
-
0 (disabled)
- Range
-
0 (disabled), 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 are seen when trying to read directories. Enabling this parameter
might cause a slight performance drop for applications that read directories.
- Stability Level
-
Evolving
nfs:nfs_write_error_interval
- Description
-
Controls the time duration
in between logging ENOSPC and EDQUOT
write errors seen by the NFS client. It affects both NFS version 2 and 3 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.
- Stability Level
-
Evolving
nfs:nfs_write_error_to_cons_only
- Description
-
Controls whether NFS
write errors are logged to the system console and syslog
or to the system console only. It affects messages for both NFS version 2
and 3 clients.
- Data Type
-
Integer (32–bit)
- Default
-
0 (system console and syslog)
- Range
-
0 (system console and syslog), 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(1M) daemon. When this parameter is
enabled, messages are printed on the system console only and are not copied
to the syslog messages file.
- Stability Level
-
Evolving
nfs:nfs_disable_rddir_cache
- Description
-
Controls the use of
a cache to hold responses from NFS version 2 READDIR and
NFS Version 3 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), 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 both NFS version 2 and 3 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.
- Stability Level
-
Evolving
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 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 nfs3_max_transfer_size parameter. If larger transfers are desired, increase both parameters.
If smaller transfers are desired, then just reducing this parameter should
suffice.
- Stability Level
-
Unstable
nfs:nfs_async_clusters
- Description
-
Controls the mix of
asynchronous requests that are generated by the NFS version 2 client. There
are four types of asynchronous requests, 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 operation type in favor
of another.
However, 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 approximately 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 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
type to be processed before moving on to the next type. This effectively disables
the fairness portion of the algorithm.
- When to Change
-
Change this parameter
to increase the number of each type of asynchronous operation that is generated
before switching to the next type. This might help with server functionality
that depends upon clusters of operations coming from the client.
- Stability Level
-
Unstable
nfs:nfs3_async_clusters
- Description
-
Controls the mix of
asynchronous requests that are generated by the NFS version 3 client. There
are five types of asynchronous requests, 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 operation type in favor of
another.
However, 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 approximately 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 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
type to be processed before moving on to the next type. This effectively disables
the fairness portion of the algorithm.
- When to Change
-
Change this parameter
to increase the number of each type of asynchronous operation that is generated
before switching to the next type. This might help with server functionality
that depends upon clusters of operations coming from the client.
- Stability 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, and then 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 has the affect of having 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,
-
Or, by making them expire more slowly, thus avoiding thread
create and destroy overhead.
- Stability Level
-
Evolving
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,
but the hash queues used to index into it 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, which 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, and then hang while trying to do
so.
- When to Change
-
Examine the value
of this parameter if the basic assumption of one access cache entry per file
would be violated. This might be true for systems in a time sharing 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.
- Stability Level
-
Evolving
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 error, NFS3ERR_JUKEBOX, from a previous request.
The error, NFS3ERR_JUKEBOX, is generally returned from
the server when the file is temporarily unavailable for some reason. These
situations are 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. The value should be increased if the delays in making the file
available are long in order to reduce network overhead due to repeated retransmissions.
The value can also be decreased to reduce the delay in discovering that the
file has become available.
- Stability Level
-
Evolving
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 request that the
server returns as well as the maximum size of a request that the client generates.
- Data Type
-
Integer (32–bit)
- Default
-
32, 768 (32 kbytes)
- Range
-
0 to 231
- 1
- Units
-
Bytes
- Dynamic?
-
Yes
- Validation
-
None. Although setting
the maximum transfer size on the server to 0 will probably
either 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 large might result
in errors from UDP and communication problems between the client and the server.
- When to Change
-
Change this parameter
to tune the size of data being passed over the network. In general, the nfs3_bsize parameter should also be updated to reflect changes in
this parameter. For example, when attempting to reduce the default over-the-wire
transfer size to 8 kbytes, the value of both the nfs3_max_transfer_size and nfs3_bsize parameters should be changed
to 8192 to avoid using multiple operations, each reading or writing 8 kbytes.
Alternately, when attempting to increase the transfer size beyond 32 kbytes,
then nfs3_bsize should also be updated to reflect the increased
value, otherwise no change in the over-the-wire request size is seen.
- Stability Level
-
Unstable
nfssrv Module Parameters
This section describes NFS parameters for the nfssrv
module.
nfssrv:nfs_portmon
- Description
-
Controls some security
checking that the NFS server can do to attempt to enforce integrity on the
part of its clients. It can check to see whether the source port from which
a request was sent was a reserved port. This is a port
whose number is less than 1024. For BSD based systems, these ports are reserved
to processes being run by root. This checking can prevent users from writing
their own RPC-based applications to defeat the access checking that the NFS
client uses.
- Data Type
-
Integer (32–bit)
- Default
-
0 (checking disabled)
- Range
-
0 (checking disabled), 1 (checking
enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Use this parameter
to prevent malicious users from gaining access to files by using the NFS server
that they would not ordinarily have access to. However, the reserved
port notion is not universally supported. Thus, the security aspects
of the check are very weak. Also, not all NFS client implementations bind
their transport endpoints to a port number in the reserved range, so interoperability
problems might result if the checking is enabled.
- Stability Level
-
Evolving
nfssrv:rfs_write_async
- Description
-
Controls the behavior
of the NFS version 2 server when it processes WRITE requests.
The NFS version 2 protocol mandates that all modified data and metadata associated
with the WRITE request reside on stable storage before
the server can respond to the client. NFS version 2 WRITE
requests are limited to 8192 bytes of data. Thus, each WRITE
request might cause multiple small writes to the storage subsystem. This can
cause a performance problem.
One trick to accelerate NFS version 2 WRITEs is to
take advantage of a client behavior. Clients tend to send out WRITE requests in batches. The server can take advantage of this behavior
by clustering together the different WRITE requests into
a single request to the underlying file system. Thus, the data to be written
to the storage subsystem can be written in fewer, larger requests. This can
increase the throughput for WRITE requests tremendously.
- Data Type
-
Integer (32–bit)
- Default
-
1 (clustering enabled)
- Range
-
0 (clustering disabled), 1
(clustering enabled)
- Units
-
Boolean values
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Some very small NFS
clients, particularly PC clients, might not batch WRITE
requests. Thus, the behavior required from the clients might not exist, and
the clustering in the NFS version 2 server might just add overhead and slow
down performance instead of increasing it.
- Stability Level
-
Evolving
nfssrv:nfsauth_ch_cache_max
- Description
-
Controls the size of
the cache of client handles that contact the NFS authentication server. This
server authenticates NFS clients to determine whether they are allowed access
to the file handle that they are trying to use.
- Data Type
-
Integer (32–bit)
- Default
-
16
- Range
-
0 to 231
- 1
- Units
-
Client handles
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
This cache is not
dynamic, so attempts to allocate a client handle when all are busy will fail.
This results in requests being dropped by the NFS server because they could
not be authenticated. Most of the time, this is not a problem because the
NFS client just times out and retransmits the request. However, for soft-mounted
file systems on the client, the client might time out, not retry the request,
and then return an error to the application. This might have been avoided
by ensuring that the size of the cache on the server is large enough to handle
the load.
- Stability Level
-
Unstable
nfssrv:exi_cache_time
- Description
-
Controls the duration
of time that entries are held in the NFS authentication cache before being
purged due to memory pressure in the system.
- Data Type
-
Long integer (32 bits
on 32–bit platforms and 64 bits on 64–bit platforms)
- Default
-
3600 seconds (1 hour)
- 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
-
The size of the NFS
authentication cache can be adjusted by varying the minimum age of entries
that can get purged from the cache. The size of the cache should be controlled
so that it is not allowed to grow too large, thus using system resources
that are not allowed to be released due to this aging process.
- Stability Level
-
Evolving
rpcmod Module Parameters
This section describes NFS parameters for the rpcmod
module.
rpcmod:clnt_max_conns
- Description
-
Controls the number
of TCP connections that the NFS client uses when communicating with each NFS
server. The kernel RPC is constructed so that it can multiplex RPCs over a
single connection, but multiple connections can be used if desired.
- Data Type
-
Integer (32–bit)
- Default
-
1
- Range
-
1 to 231
- 1
- Units
-
Connections
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
In general, 1 connection
is sufficient to achieve full network bandwidth. However, if TCP cannot utilize
the bandwidth offered by the network in a single stream, then multiple connections
might increase the throughput between the client and the server.
Increasing the number of connections doesn't come for free though. The
price for increasing the number of connections is increased kernel resource
usage to keep track of each of the connections.
- Stability Level
-
Evolving
rpcmod:clnt_idle_timeout
- Description
-
Controls the duration
of time on the client that a connection between the client and server is allowed
to remain idle before being closed.
- Data Type
-
Long integer (32 bits
on 32–bit platforms and 64 bits on 64–bit platforms)
- Default
-
300,000 milliseconds (5
minutes)
- Range
-
0 to 231
- 1 on 32–bit platforms
0 to 263 - 1 on 64–bit platforms
- Units
-
Milliseconds
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Use this parameter
to change the time that idle connections are allowed to exist on the client
before being closed, if desired. You might might want to close connections
at a faster rate to avoid consuming system resources.
- Stability Level
-
Evolving
rpcmod:svc_idle_timeout
- Description
-
Controls the duration
of time on the server that a connection between the client and server is allowed
to remain idle before being closed.
- Data Type
-
Long integer (32 bits
on 32–bit platforms and 64 bits on 64–bit platforms)
- Default
-
360,000 milliseconds (6
minutes)
- Range
-
0 to 231
- 1 on 32–bit platforms
0 to 263 - 1 on 64–bit platforms
- Units
-
Milliseconds
- Dynamic?
-
Yes
- Validation
-
None
- When to Change
-
Use this parameter
to change the time that idle connections are allowed to exist on the server
before being closed, if desired. Close connections at a faster rate to avoid
consuming system resources, if desired.
- Stability Level
-
Evolving
rpcmod:svc_default_stksize
- Description
-
Sets the size of the
kernel stack for kernel RPC service threads.
- Data Type
-
Integer (32–bit)
- Default
-
The default is 0, which
means set the stack size to the system default.
- Range
-
0 to 231
- 1
- Units
-
Bytes
- Dynamic?
-
The stack size is set when
the thread is created. Therefore, changes to this parameter do not affect
existing threads but are applied to all new threads that are allocated.
- Validation
-
None
- When to Change
-
Possibly, very deep
call depths can cause the stack to overflow and cause red zone faults. The
combination of a fairly deep call depth for the transport, coupled with a
deep call depth for the local file system can cause NFS service threads to
overflow their stacks.
Set this parameter to a multiple of the hardware pagesize
on the platform.
- Stability Level
-
Evolving
rpcmod:svc_default_max_same_xprt
- Description
-
Controls the maximum
number of requests that are processed for each transport endpoint before switching
transport endpoints. The kernel RPC works by having a pool of service threads
and a pool of transport endpoints. Any one of the service threads can process
requests from any one of the transport endpoints. For performance, multiple
requests on each transport endpoint are consumed before switching to a different
transport endpoint. This approach offers performance benefits while avoiding
starvation.
- Data Type
-
Integer (32–bit)
- Default
-
8
- Range
-
0 to 231
- 1
- Units
-
Requests
- Dynamic?
-
Yes, but the maximum number
of requests to process before switching transport endpoints is set when the
transport endpoint is configured into the kernel RPC subsystem. Changes to
this parameter only affect new transport endpoints, not existing ones.
- Validation
-
None
- When to Change
-
Tune this number
so that services can take advantage of client behaviors such as the clustering
that accelerate NFS version 2 WRITE requests. It is possible
that increasing this parameter results in the server being better able to
take advantage of client behaviors.
- Stability Level
-
Evolving
rpcmod:maxdupreqs
- Description
-
Controls the size of
the duplicate request cache that detect RPC level retransmissions on connectionless
transports. This cache is indexed by the client network address and the RPC
procedure number, program number, version number, and the transaction ID.
This cache avoids processing of retransmitted requests that might be non-idempotent.
- Data Type
-
Integer (32–bit)
- Default
-
1024
- Range
-
1 to 231
- 1
- Units
-
Requests
- Dynamic?
-
The cache is dynamically
sized, but the hash queues that provide fast access to the cache are statically
sized. Making the cache very large might result in long search times to find
entries in the cache.
Do not set the value of this parameter to 0. It prevents the NFS server
from handling non-idempotent requests.
- Validation
-
None
- When to Change
-
Examine the value
of this parameter if false failures are being seen by NFS clients. For example,
if an attempt to create a directory fails, but the directory is actually created,
it is possible that a retransmitted MKDIR request was not
detected by the server.
The size of the cache should match the load on the server. The cache
records non-idempotent requests and so only needs to track a portion of the
total requests. It does need to hold the information long enough to be able
to detect a retransmission on the part of the client. Typically, the client
timeout for connectionless transports is relatively short, starting at about
1 second and increasing to about 20 seconds.
- Stability Level
-
Unstable
rpcmod:cotsmaxdupreqs
- Description
-
Controls the size of
the duplicate request cache that detects RPC level retransmissions on connection
oriented transports. This cache is indexed by the client network address and
the RPC procedure number, program number, version number, and the transaction
ID. This cache avoids processing of retransmitted requests that might be non-idempotent.
- Data Type
-
Integer (32–bit)
- Default
-
1024
- Range
-
1 to 231
- 1
- Units
-
Requests
- Dynamic?
-
Yes
- Validation
-
The cache is dynamically
sized, but the hash queues that provide fast access to the cache are statically
sized. Making the cache very large might result in long search times to find
entries in the cache.
Do not set the value of this parameter to 0. It prevents the NFS server
from handling non-idempotent requests.
- When to Change
-
Examine the value
of this parameter if false failures are being seen by NFS clients. For example,
if an attempt to create a directory fails, but the directory is actually created,
it is possible that a retransmitted MKDIR request was not
detected by the server.
The size of the cache should match the load on the server. The cache
records non-idempotent requests and so only needs to track a portion of the
total requests. It does need to hold the information long enough to be able
to detect a retransmission on the part of the client. Typically, the client
timeout for connection oriented transports is very long, about 1 minute. Thus,
entries need to stay in the cache for fairly long times.
- Stability Level
-
Unstable
|