Whamcloud - gitweb
LU-15246 ptlrpc: per-device adaptive timeout parameters 98/45598/38
authorLei Feng <flei@whamcloud.com>
Thu, 18 Nov 2021 00:34:46 +0000 (08:34 +0800)
committerOleg Drokin <green@whamcloud.com>
Wed, 25 Oct 2023 18:04:55 +0000 (18:04 +0000)
commit0f2bc318d7a31d6a8960ab1e198d2bc686132b8f
tree2cba689f81a464b9d69e42a16d1bd7ae4cae30f3
parent71f8e5d6506fb36d56d03024f68da23de84d92d3
LU-15246 ptlrpc: per-device adaptive timeout parameters

When a client is mounting multiple filesystems with different
MGSes setting global parameters at_min, at_max, etc., then the
settings from one filesystem's MGS config will also apply to RPCs
sent for the OSC, MDC, and MGC devices on the other filesystem(s).
Typically the settings of the last filesystem to mount on the client
override the earlier values, and there is no way to separate them.

Moving the parameters to be per-device values allows them to be
set independently for each set of client devices, so that the
client can interact properly with each set of servers.  This allows
e.g. different timeouts for local and remote mounts, or for flash
and HDD filesystems that have different load and performance.

Add per-device adaptive timeout parameters that can optionally
replace global parameters of the same name:

    at_min     -> *.<fsname>*.at_min
    at_max     -> *.<fsname>*.at_max
    at_history -> *.<fsname>*.at_history
    ldlm_enqeue_min -> *.<fsname>*.ldlm_enqueue_min

These parameters should always be set with fsname in the device
name, rather than pure wildcard '*' device names, or it will be
be same as the global parameters in the end (settings from one
MGS will apply to devices on other filesystems).  That is a bug
in how "lctl set_param -P" works, but will be fixed separately.

Signed-off-by: Lei Feng <flei@whamcloud.com>
Change-Id: I5b04c9aa53a446fb5a78bfaff372b4f236c9eb8a
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/45598
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Andreas Dilger <adilger@whamcloud.com>
Reviewed-by: Mikhail Pershin <mpershin@whamcloud.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
30 files changed:
lustre/include/lprocfs_status.h
lustre/include/lustre_dlm.h
lustre/include/lustre_import.h
lustre/include/lustre_net.h
lustre/include/obd.h
lustre/ldlm/ldlm_lib.c
lustre/ldlm/ldlm_lockd.c
lustre/ldlm/ldlm_request.c
lustre/ldlm/ldlm_resource.c
lustre/mdc/lproc_mdc.c
lustre/mdt/mdt_handler.c
lustre/mdt/mdt_lproc.c
lustre/mgc/lproc_mgc.c
lustre/mgc/mgc_internal.h
lustre/mgc/mgc_request.c
lustre/mgs/lproc_mgs.c
lustre/obdclass/class_obd.c
lustre/obdclass/lprocfs_status.c
lustre/ofd/lproc_ofd.c
lustre/osc/lproc_osc.c
lustre/osc/osc_cache.c
lustre/ptlrpc/client.c
lustre/ptlrpc/import.c
lustre/ptlrpc/lproc_ptlrpc.c
lustre/ptlrpc/niobuf.c
lustre/ptlrpc/pinger.c
lustre/ptlrpc/service.c
lustre/quota/qmt_handler.c
lustre/quota/qsd_internal.h
lustre/tests/conf-sanity.sh