From 357cae970c5c45e8d58574db3c38b60e22565b6d Mon Sep 17 00:00:00 2001 From: Andreas Dilger Date: Mon, 15 Jan 2024 23:28:01 -0700 Subject: [PATCH] LU-17428 ldlm: reduce default lru_max_age Decrease the default value of lru_max_age from 3900s to 600s. Otherwise, clients can accumulate too many old locks. Fixes: fe60e0135e ("LU-6529 ldlm: reclaim granted locks defensively") Signed-off-by: Andreas Dilger Change-Id: I93e288491c868b79162620336830290a85529f0d Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53682 Tested-by: jenkins Tested-by: Maloo Reviewed-by: Timothy Day Reviewed-by: Patrick Farrell Reviewed-by: Oleg Drokin --- lustre/include/lustre_dlm.h | 2 +- lustre/ldlm/ldlm_reclaim.c | 2 +- lustre/ldlm/ldlm_resource.c | 40 ++++++++++++++++++++-------------------- 3 files changed, 22 insertions(+), 22 deletions(-) diff --git a/lustre/include/lustre_dlm.h b/lustre/include/lustre_dlm.h index 2a44221..0103244 100644 --- a/lustre/include/lustre_dlm.h +++ b/lustre/include/lustre_dlm.h @@ -60,7 +60,7 @@ extern struct kset *ldlm_svc_kset; #define OBD_LDLM_DEVICENAME "ldlm" #define LDLM_DEFAULT_LRU_SIZE (100 * num_online_cpus()) -#define LDLM_DEFAULT_MAX_ALIVE 3900 /* 3900 seconds ~65 min */ +#define LDLM_DEFAULT_LRU_MAX_AGE 600 /* 600 seconds = 10 min */ #define LDLM_CTIME_AGE_LIMIT (10) /* if client lock is unused for that time it can be cancelled if any other * client shows interest in that lock, e.g. glimpse is occured. diff --git a/lustre/ldlm/ldlm_reclaim.c b/lustre/ldlm/ldlm_reclaim.c index 4728c6c..e4c4bb1 100644 --- a/lustre/ldlm/ldlm_reclaim.c +++ b/lustre/ldlm/ldlm_reclaim.c @@ -212,7 +212,7 @@ static void ldlm_reclaim_res(struct ldlm_namespace *ns, int *count, #define LDLM_RECLAIM_BATCH 512 #define LDLM_RECLAIM_AGE_MIN (300 * NSEC_PER_SEC) -#define LDLM_RECLAIM_AGE_MAX (LDLM_DEFAULT_MAX_ALIVE * NSEC_PER_SEC * 3 / 4) +#define LDLM_RECLAIM_AGE_MAX (LDLM_DEFAULT_LRU_MAX_AGE * NSEC_PER_SEC * 3/4) static inline s64 ldlm_reclaim_age(void) { diff --git a/lustre/ldlm/ldlm_resource.c b/lustre/ldlm/ldlm_resource.c index c3eab28..167ae0d 100644 --- a/lustre/ldlm/ldlm_resource.c +++ b/lustre/ldlm/ldlm_resource.c @@ -980,26 +980,26 @@ struct ldlm_namespace *ldlm_namespace_new(struct obd_device *obd, char *name, atomic_set(&ns->ns_bref, 0); init_waitqueue_head(&ns->ns_waitq); - ns->ns_max_nolock_size = NS_DEFAULT_MAX_NOLOCK_BYTES; - ns->ns_contention_time = NS_DEFAULT_CONTENTION_SECONDS; - ns->ns_contended_locks = NS_DEFAULT_CONTENDED_LOCKS; - - ns->ns_max_parallel_ast = LDLM_DEFAULT_PARALLEL_AST_LIMIT; - ns->ns_nr_unused = 0; - ns->ns_max_unused = LDLM_DEFAULT_LRU_SIZE; - ns->ns_cancel_batch = LDLM_DEFAULT_LRU_SHRINK_BATCH; - ns->ns_recalc_pct = LDLM_DEFAULT_SLV_RECALC_PCT; - ns->ns_max_age = ktime_set(LDLM_DEFAULT_MAX_ALIVE, 0); - ns->ns_ctime_age_limit = LDLM_CTIME_AGE_LIMIT; - ns->ns_dirty_age_limit = ktime_set(LDLM_DIRTY_AGE_LIMIT, 0); - ns->ns_timeouts = 0; - ns->ns_orig_connect_flags = 0; - ns->ns_connect_flags = 0; - ns->ns_stopping = 0; - ns->ns_dump_stack_on_error = 0; - ns->ns_reclaim_start = 0; - ns->ns_last_pos = &ns->ns_unused_list; - ns->ns_flags = 0; + ns->ns_connect_flags = 0; + ns->ns_orig_connect_flags = 0; + ns->ns_nr_unused = 0; + ns->ns_last_pos = &ns->ns_unused_list; + ns->ns_max_unused = LDLM_DEFAULT_LRU_SIZE; + ns->ns_cancel_batch = LDLM_DEFAULT_LRU_SHRINK_BATCH; + ns->ns_recalc_pct = LDLM_DEFAULT_SLV_RECALC_PCT; + ns->ns_max_age = ktime_set(LDLM_DEFAULT_LRU_MAX_AGE, 0); + ns->ns_timeouts = 0; + ns->ns_ctime_age_limit = LDLM_CTIME_AGE_LIMIT; + ns->ns_dirty_age_limit = ktime_set(LDLM_DIRTY_AGE_LIMIT, 0); + ns->ns_contended_locks = NS_DEFAULT_CONTENDED_LOCKS; + ns->ns_contention_time = NS_DEFAULT_CONTENTION_SECONDS; + ns->ns_max_nolock_size = NS_DEFAULT_MAX_NOLOCK_BYTES; + ns->ns_max_parallel_ast = LDLM_DEFAULT_PARALLEL_AST_LIMIT; + ns->ns_stopping = 0; + ns->ns_rpc_recalc = 0; + ns->ns_dump_stack_on_error = 0; + ns->ns_reclaim_start = 0; + ns->ns_flags = 0; rc = ldlm_namespace_sysfs_register(ns); if (rc) { -- 1.8.3.1