Managing NFS and KRPC Kernel Configuration in HP-UX11i v3 (March 2013)
2.4.5 rpc_svc_cpu_binding
Description
The rpc_svc_cpu_binding tunable specifies whether NFS/TCP service threads are bound to specific
CPUs or can bind to any available CPU. When enabled, the server attempts to bind the NFS service
threads to the CPU responsible for servicing the interrupt of the network card on which the NFS
request arrived. By doing so the same CPU, processes the NFS request from the time it arrives at the
server's network interface until the NFS reply is sent back to the client.
In many environments, allowing a single CPU to manage the entire NFS request provides significant
CPU cache coherency benefits and improves overall NFS performance. By default, no attempt is
made to schedule the NFS service threads on specific CPUs. The spawned service thread can be
scheduled on any available CPU and the thread can be switched to another CPU at any time while
processing the NFS request.
For example, if CPU0 is assigned the interrupt of the network interface that an NFS request arrives on,
it processes the inbound network packet. However, the NFS service thread that processes the NFS
request itself, whether this is a READ, a WRITE, a LOOKUP, or others might be bound to a different
CPU - say CPU1.
This switching of CPUs can result in a CPU cache miss. In many environments this CPU cache miss
penalty is negligible and does not affect overall NFS performance. However, on large-scale NFS
servers (servers having many CPUs, network adapters, and servicing many NFS clients) the cache
miss penalties can be significant and these servers might see a performance benefit by enabling the
rpc_svc_cpu_binding tunable to improve the memory cache behavior.
Tested Values
Default: 0 (CPU bind functionality is disabled)
Min: 0
Max: 1 (CPU bind functionality is enabled)
Restrictions on Changing
The rpc_svc_cpu_binding tunable is dynamic. System reboot is not required to activate a change
made to this tunable.
Note: Once the tunable is enabled, all the NFS server
threads that service client requests exhibit CPU bind
functionality immediately. If the tunable is disabled, the NFS
server threads working on the existing TCP connections
continue to exhibit bind functionality until the TCP
connections are either closed or timed out
.
Modifying the Value
Enable this tunable to force the spawned service thread to bind and run on the CPU where the
network packet is processed as part of the network stack. This action reduces the cache miss
penalties. This contributes to the overall performance, specifically in environments where high-end
servers with multiple network interface cards and CPUs service a large number of client requests.