How to increase the number of threads created by the NFS daemon in RHEL 4, 5, 6, 7 and 8?

Solution Verified - Updated -

Environment

  • Red Hat Enterprise Linux 4
  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 8

Issue

  • In case of a NFS server with a high load, it may be advisable to increase the number of the threads created during the nfsd server start up.
  • How to increase the threads created by nfs daemon in Red Hat Enterprise Linux?
  • RPCNFSDCOUNT
  • nfs thread count / nfsd thread count

Resolution

Red Hat Enterprise Linux 4, 5, 6 and Red Hat Enterprise Linux 7 (deprecated).

Edit the following line in /etc/sysconfig/nfs

RPCNFSDCOUNT=8

RPCNFSDCOUNT is the number of threads that will be started. Increase this to start more threads.

Red Hat Enterprise Linux 7 (current) and Red Hat Enterprise Linux 8

Edit the following line in /etc/nfs.conf

[nfsd]
threads=8

Increasing the number on this line will increase the number of threads started.

  • To bring the configuration changes into affect the NFS service needs to be restarted:
# systemctl restart nfs-server.service
  • For RHEL 6
# service nfs restart
  • NOTE:- Make sure that NFS shares are unmounted from the clients before restarting the nfs-server.service to
    avoid stale issues.

Diagnostic Steps

NOTE: The following is only applicable to RHEL versions prior to RHEL 6. Beginning with RHEL 6, the thread stats are no longer updated, and are always zero. See Why does value for busy threads in 'th'(thread) line remains zero in /proc/net/rpc/nfsd? for further details.

To check if there are enough threads started, execute the following command:

cat /proc/net/rpc/nfsd

Review the following line:

th 16 0 2.610 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000 0.000

The first number is the total number of NFS server threads started. The second number indicates whether at any time all of the threads were running at once. The remaining numbers are a thread count time histogram.

You may use a script similar to the following to monitor thread usage over time:

while :
do
    date
    grep "^th" /proc/net/rpc/nfsd
    sleep 300
done

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

Comments