Skip to content

Commit 7752cee

Browse files
athanatosronen-fr
authored andcommitted
mds/MDCache: avoid using static variables in check_memory_usage
We're going to add this functionality to other components, simplify this one first to match. Signed-off-by: Samuel Just <[email protected]> Signed-off-by: Shreekara <[email protected]> (cherry picked from commit f337bda)
1 parent a6e2a7c commit 7752cee

File tree

2 files changed

+19
-13
lines changed

2 files changed

+19
-13
lines changed

src/mds/MDCache.cc

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,6 @@
4646
#include "msg/Message.h"
4747
#include "msg/Messenger.h"
4848

49-
#include "common/MemoryModel.h"
5049
#include "common/errno.h"
5150
#include "common/perf_counters.h"
5251
#include "common/safe_io.h"
@@ -7813,12 +7812,10 @@ void MDCache::trim_client_leases()
78137812
}
78147813
}
78157814

7816-
void MDCache::check_memory_usage()
7815+
void MDCache::check_memory_usage(const MemoryModel::mem_snap_t &baseline)
78177816
{
7818-
static MemoryModel mm(g_ceph_context);
7819-
static MemoryModel::mem_snap_t last;
7820-
mm.sample(&last);
7821-
static MemoryModel::mem_snap_t baseline = last;
7817+
MemoryModel mm(g_ceph_context);
7818+
mm.sample();
78227819

78237820
// check client caps
78247821
ceph_assert(CInode::count() == inode_map.size() + snap_inode_map.size() + num_shadow_inodes);
@@ -7827,17 +7824,17 @@ void MDCache::check_memory_usage()
78277824
caps_per_inode = (double)Capability::count() / (double)CInode::count();
78287825

78297826
dout(2) << "Memory usage: "
7830-
<< " total " << last.get_total()
7831-
<< ", rss " << last.get_rss()
7832-
<< ", heap " << last.get_heap()
7827+
<< " total " << mm.last.get_total()
7828+
<< ", rss " << mm.last.get_rss()
7829+
<< ", heap " << mm.last.get_heap()
78337830
<< ", baseline " << baseline.get_heap()
78347831
<< ", " << num_inodes_with_caps << " / " << CInode::count() << " inodes have caps"
78357832
<< ", " << Capability::count() << " caps, " << caps_per_inode << " caps per inode"
78367833
<< dendl;
78377834

78387835
mds->update_mlogger();
7839-
mds->mlogger->set(l_mdm_rss, last.get_rss());
7840-
mds->mlogger->set(l_mdm_heap, last.get_heap());
7836+
mds->mlogger->set(l_mdm_rss, mm.last.get_rss());
7837+
mds->mlogger->set(l_mdm_heap, mm.last.get_heap());
78417838
}
78427839

78437840

@@ -14173,6 +14170,14 @@ bool MDCache::is_ready_to_trim_cache(void)
1417314170
void MDCache::upkeep_main(void)
1417414171
{
1417514172
std::unique_lock lock(upkeep_mutex);
14173+
14174+
// get initial sample upon thread creation
14175+
MemoryModel::mem_snap_t baseline;
14176+
{
14177+
MemoryModel mm(g_ceph_context);
14178+
mm.sample(&baseline);
14179+
}
14180+
1417614181
while (!upkeep_trim_shutdown.load()) {
1417714182
auto now = clock::now();
1417814183
auto since = now-upkeep_last_trim;
@@ -14183,7 +14188,7 @@ void MDCache::upkeep_main(void)
1418314188
lock.lock();
1418414189
if (upkeep_trim_shutdown.load())
1418514190
return;
14186-
check_memory_usage();
14191+
check_memory_usage(baseline);
1418714192
if (mds->is_cache_trimmable()) {
1418814193
dout(20) << "upkeep thread trimming cache; last trim " << since << " ago" << dendl;
1418914194
bool active_with_clients = mds->is_active() || mds->is_clientreplay() || mds->is_stopping();

src/mds/MDCache.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <thread>
2121

2222
#include "common/DecayCounter.h"
23+
#include "common/MemoryModel.h"
2324
#include "include/common_fwd.h"
2425
#include "include/types.h"
2526
#include "include/filepath.h"
@@ -775,7 +776,7 @@ class MDCache {
775776
bool expire_recursive(CInode *in, expiremap& expiremap);
776777

777778
void trim_client_leases();
778-
void check_memory_usage();
779+
void check_memory_usage(const MemoryModel::mem_snap_t &baseline);
779780

780781
void shutdown_start();
781782
void shutdown_check();

0 commit comments

Comments
 (0)