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)
1417314170void 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 ();
0 commit comments