On 3/11/22 2:06 PM, Thiago Becker wrote:
Recent changes in the linux kernel caused NFS readahead to default to 128 from the previous default of 15 * rsize. This causes performance penalties to some read-heavy workloads, which can be fixed by tuning the readahead for that given mount. Specifically, the read troughput on a sec=krb5p mount drops by 50-75% when comparing the default readahead with a readahead of 15360. Previous discussions: https://lore.kernel.org/linux-nfs/20210803130717.2890565-1-trbecker@xxxxxxxxx/ I attempted to add a non-kernel option to mount.nfs, and it was rejected. https://lore.kernel.org/linux-nfs/20210811171402.947156-1-trbecker@xxxxxxxxx/ Attempted to add a mount option to the kernel, rejected as well. I had started a separate tool to set the readahead of BDIs, but the scope is specifically for NFS, so I would like to get the community feeling for having this in nfs-utils. This patch series introduces nfs-readahead-udev, a utility to automatically set NFS readahead when NFS is mounted. The utility is triggered by udev when a new BDI is added, returns to udev the value of the readahead that should be used. The tool currently supports setting read ahead per mountpoint, nfs major version, or by a global default value. Thiago Becker (7): Create nfs-readahead-udev readahead: configure udev readahead: create logging facility readahead: only set readahead for nfs devices. readahead: create the configuration file readahead: add mountpoint and fstype options readahead: documentation .gitignore | 6 + configure.ac | 4 + tools/Makefile.am | 2 +- tools/nfs-readahead-udev/99-nfs_bdi.rules.in | 1 + tools/nfs-readahead-udev/Makefile.am | 26 +++ tools/nfs-readahead-udev/config_parser.c | 25 +++ tools/nfs-readahead-udev/config_parser.h | 14 ++ tools/nfs-readahead-udev/list.h | 48 ++++ tools/nfs-readahead-udev/log.h | 16 ++ tools/nfs-readahead-udev/main.c | 211 ++++++++++++++++++ .../nfs-readahead-udev/nfs-readahead-udev.man | 47 ++++ tools/nfs-readahead-udev/parser.y | 85 +++++++ tools/nfs-readahead-udev/readahead.conf | 15 ++ tools/nfs-readahead-udev/scanner.l | 19 ++ tools/nfs-readahead-udev/syslog.c | 47 ++++ 15 files changed, 565 insertions(+), 1 deletion(-) create mode 100644 tools/nfs-readahead-udev/99-nfs_bdi.rules.in create mode 100644 tools/nfs-readahead-udev/Makefile.am create mode 100644 tools/nfs-readahead-udev/config_parser.c create mode 100644 tools/nfs-readahead-udev/config_parser.h create mode 100644 tools/nfs-readahead-udev/list.h create mode 100644 tools/nfs-readahead-udev/log.h create mode 100644 tools/nfs-readahead-udev/main.c create mode 100644 tools/nfs-readahead-udev/nfs-readahead-udev.man create mode 100644 tools/nfs-readahead-udev/parser.y create mode 100644 tools/nfs-readahead-udev/readahead.conf create mode 100644 tools/nfs-readahead-udev/scanner.l create mode 100644 tools/nfs-readahead-udev/syslog.c
My apologies for waiting late on this... I was on PTO. I really don't like the name of the is command. It does not follow any of the naming conventions we used in the past... Can you please rename the command to nfsrahead. tia, steved.