All of lore.kernel.org
 help / color / mirror / Atom feed
From: Thiago Becker <tbecker@redhat.com>
To: linux-nfs@vger.kernel.org
Cc: steved@redhat.com, trond.myklebust@hammerspace.com,
	anna.schumaker@netapp.com, kolga@netapp.com,
	Thiago Becker <tbecker@redhat.com>
Subject: [RFC v2 PATCH 0/7] Introduce nfs-readahead-udev
Date: Fri, 11 Mar 2022 16:06:10 -0300	[thread overview]
Message-ID: <20220311190617.3294919-1-tbecker@redhat.com> (raw)

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@gmail.com/
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@gmail.com/
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

-- 
2.35.1


             reply	other threads:[~2022-03-11 19:06 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-11 19:06 Thiago Becker [this message]
2022-03-11 19:06 ` [RFC v2 PATCH 1/7] Create nfs-readahead-udev Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 2/7] readahead: configure udev Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 3/7] readahead: create logging facility Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 4/7] readahead: only set readahead for nfs devices Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 5/7] readahead: create the configuration file Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 6/7] readahead: add mountpoint and fstype options Thiago Becker
2022-03-11 19:06 ` [RFC v2 PATCH 7/7] readahead: documentation Thiago Becker
2022-03-17 15:37   ` Steve Dickson
2022-03-18 15:11     ` Thiago Becker
2022-03-15 11:54 ` [RFC v2 PATCH 0/7] Introduce nfs-readahead-udev Steve Dickson
2022-03-18 15:13   ` Thiago Becker

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220311190617.3294919-1-tbecker@redhat.com \
    --to=tbecker@redhat.com \
    --cc=anna.schumaker@netapp.com \
    --cc=kolga@netapp.com \
    --cc=linux-nfs@vger.kernel.org \
    --cc=steved@redhat.com \
    --cc=trond.myklebust@hammerspace.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.