From eb47e990c33843b9baa366e2b2a187439210e680 Mon Sep 17 00:00:00 2001 From: Patrick Donnelly Date: Tue, 5 Jan 2021 09:03:27 -0800 Subject: [PATCH] mds: avoid spurious sleeps Like trim_interval, don't sleep for small amounts of time. This avoids spurious sleeps like: 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s 2020-12-25T00:14:22.242+0000 7f6a95884700 20 mds.0.cache upkeep thread waiting interval 0.000000108s Also, fix the same issue in the Client. Fixes: https://tracker.ceph.com/issues/48753 Signed-off-by: Patrick Donnelly --- src/client/Client.cc | 2 +- src/mds/MDCache.cc | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/client/Client.cc b/src/client/Client.cc index d6ed10ab42501..a4d4d9eba6c4c 100644 --- a/src/client/Client.cc +++ b/src/client/Client.cc @@ -6526,7 +6526,7 @@ void Client::start_tick_thread() auto d_interval = clock::duration(cct->_conf.get_val("client_debug_inject_tick_delay")); auto interval = std::max(t_interval, d_interval); - if (likely(since >= interval)) { + if (likely(since >= interval*.90)) { tick(); last_tick = clock::now(); } else { diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index 7cfb3ff9154a3..1aea36e043092 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -190,7 +190,7 @@ MDCache::MDCache(MDSRank *m, PurgeQueue &purge_queue_) : } since = now-upkeep_last_release; auto release_interval = clock::duration(g_conf().get_val("mds_cache_release_free_interval")); - if (since >= release_interval) { + if (since >= release_interval*.90) { /* XXX not necessary once MDCache uses PriorityCache */ dout(10) << "releasing free memory" << dendl; ceph_heap_release_free_memory(); -- 2.39.5