Whamcloud - gitweb
LU-17428 ldlm: reduce default lru_max_age 82/53682/9
authorAndreas Dilger <adilger@whamcloud.com>
Tue, 16 Jan 2024 06:28:01 +0000 (23:28 -0700)
committerOleg Drokin <green@whamcloud.com>
Fri, 30 Aug 2024 06:02:35 +0000 (06:02 +0000)
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 <adilger@whamcloud.com>
Change-Id: I93e288491c868b79162620336830290a85529f0d
Reviewed-on: https://review.whamcloud.com/c/fs/lustre-release/+/53682
Tested-by: jenkins <devops@whamcloud.com>
Tested-by: Maloo <maloo@whamcloud.com>
Reviewed-by: Timothy Day <timday@amazon.com>
Reviewed-by: Patrick Farrell <patrick.farrell@oracle.com>
Reviewed-by: Oleg Drokin <green@whamcloud.com>
lustre/include/lustre_dlm.h
lustre/ldlm/ldlm_reclaim.c
lustre/ldlm/ldlm_resource.c

index 2a44221..0103244 100644 (file)
@@ -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.
index 4728c6c..e4c4bb1 100644 (file)
@@ -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)
 {
index c3eab28..167ae0d 100644 (file)
@@ -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) {