Recommended tuning for NFS-Ganesha version 3 and version 4

Veritas Access supports both the NFS kernel-based server and the NFS-Ganesha server in a mutually exclusive way. The NFS kernel-based server supports NFS version 3 and version 4. The NFS-Ganesha server also supports both NFS version 3 and NFS version 4.

See Using the NFS-Ganesha server.

The NFS-Ganesha server does not run in the kernel, instead NFS-Ganesha runs in user space on the NFS server. This means that the NFS-Ganesha server processes can be affected by system resource limitations as any other user space process can be affected. There are some NFS-server operating system tuning values that you should modify to ensure that the NFS-Ganesha server performance is not unduly affected. You use the NFS client mount option version to determine whether NFS version 3 or NFS version 4 is used. On the NFS client, you can select either the version=3 or the version=4 mount option. The NFS client is unaware of whether the NFS server is using kernel-based NFS or NFS-Ganesha. Only if NFS-Ganesha is enabled in Veritas Access, a client can perform an NFS mount using the mount option of version=4.

When you start a system, kswapd_init() calls a kernel thread that is called kswapd, which continuously executes the function kswapd() in mm/vmscan.c that usually sleeps. The kswapd daemon is responsible for reclaiming pages when memory is running low. kswapd performs most of the tasks that are needed to maintain the page cache correctly, shrink slab caches, and swap out processes if necessary. kswapd keeps freeing pages until the pages_high watermark is reached. Under extreme memory pressure, processes do the work of kswapd synchronously by calling balance_classzone(), which calls the try_to_free_pages_zone().

When there is memory pressure, pages are claimed using two different methods.

The NFS-Ganesha user process can be affected when kswapd fails to free up enough memory. To alleviate the possibility of the NFS-Ganesha process from doing the work of kswapd, Veritas recommends increasing the value of the Linux virtual machine tunable min_free_kbytes.

Example of a default auto-tuned value:

sysctl -a | grep vm.min_free 
vm.min_free_kbytes = 90112

You use min_free_kbytes to force the Linux VM (virtual memory management) to keep a minimum number of kilobytes free. The VM uses this number to compute a watermark value for each lowmem zone in the system.

Table: Recommended tuning parameters for NFS version 3 and version 4

Option

Description

NFS mount options

File system mount options for the NFS client:

  • version=3/4

  • nordirplus

  • sharecache

NFS server export options

NFS server export options:

  • rw

  • sync

  • no_root_squash

Jumbo frames

A jumbo frame is an Ethernet frame with a payload greater than the standard maximum transmission unit (MTU) of 1,500 bytes. Enabling jumbo frames improves network performance in I/O intensive workloads. If jumbo frames are supported by your network, and if you wish to use jumbo frames, Veritas recommends using a jumbo frame size of 5000.

min_free_kbytes

On server nodes with 96 GB RAM or more, the recommended value of min_free_kbytes is 1048576 (=1 GB). On server nodes using the minimum of 32 GB RAM, the minimum recommended value of min_free_kbytes is 524288 (=512 MB).