From: Andreas Dilger Date: Tue, 16 Jan 2024 06:28:01 +0000 (-0700) Subject: LU-17428 ldlm: reduce default lru_max_age X-Git-Tag: 2.15.91~47 X-Git-Url: https://git.whamcloud.com/gitweb?a=commitdiff_plain;h=refs%2Fchanges%2F82%2F53682%2F9;p=fs%2Flustre-release.git 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 --- 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) {