The NFS server (NFSD) improvements were merged today for the Linux 6.18 kernel. Most exciting is a new experimental feature that can help with scaling NFSD both for low-end/low-cost servers up through high-end larger server platforms.
The notable new NFSD experimental feature in Linux 6.18 is the ability to disable I/O caching. Oracle engineer and NFSD maintainer Chuck Lever explained in today’s pull request:
“Mike Snitzer has prototyped a mechanism for disabling I/O caching in NFSD. This is introduced in v6.18 as an experimental feature. This enables scaling NFSD in /both/ directions:
– NFS service can be supported on systems with small memory footprints, such as low-cost cloud instances
– Large NFS workloads will be less likely to force the eviction of server-local activity, helping it avoid thrashingJeff Layton contributed a number of fixes to the new attribute delegation implementation (based on a pending Internet RFC) that we hope will make attribute delegation reliable enough to enable by default, as it is on the Linux NFS client.”
The experimental feature for now is exposed via NFSD DebugFS with the “io_cache_read” and “io_cache_write” attributes to control page cache handling for read and write operations independently. Data read by NFSD can either be cached using the page cache or cached but removed from the page cache upon completion. Similarly the write cache allows any data written by NFSD to be cached using the page cache or cached but removed from the page cache upon completion. The default behavior for now with NFSD is unchanged.
More details on these Network File-System / NFSD changes for Linux 6.18 via this pull now merged to Linux Git.