Solaris Tunable Parameters Reference Manual

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