From: Patrick Donnelly Date: Fri, 24 Feb 2017 00:45:09 +0000 (-0500) Subject: mds: remove redundant mds object count tracking X-Git-Tag: v12.0.1~151^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=8f5691e4c56293c70de462f1b5a7082b07e22809;p=ceph.git mds: remove redundant mds object count tracking Signed-off-by: Patrick Donnelly --- diff --git a/src/mds/Beacon.cc b/src/mds/Beacon.cc index 210de4ee6c7c..16977f50a129 100644 --- a/src/mds/Beacon.cc +++ b/src/mds/Beacon.cc @@ -483,10 +483,10 @@ void Beacon::notify_health(MDSRank const *mds) } // Report if we have significantly exceeded our cache size limit - if (mds->mdcache->get_num_inodes() > + if (CInode::count() > g_conf->mds_cache_size * g_conf->mds_health_cache_threshold) { std::ostringstream oss; - oss << "Too many inodes in cache (" << mds->mdcache->get_num_inodes() + oss << "Too many inodes in cache (" << CInode::count() << "/" << g_conf->mds_cache_size << "), " << mds->mdcache->num_inodes_with_caps << " inodes in use by clients, " << mds->mdcache->get_num_strays() << " stray files"; diff --git a/src/mds/CInode.cc b/src/mds/CInode.cc index 1f27f9a22220..9d76cffdd8bc 100644 --- a/src/mds/CInode.cc +++ b/src/mds/CInode.cc @@ -2773,7 +2773,6 @@ Capability *CInode::add_client_cap(client_t client, Session *session, SnapRealm dout(10) << "add_client_cap first cap, joining realm " << *containing_realm << dendl; } - mdcache->num_caps++; if (client_caps.empty()) mdcache->num_inodes_with_caps++; @@ -2815,7 +2814,6 @@ void CInode::remove_client_cap(client_t client) item_open_file.remove_myself(); // unpin logsegment mdcache->num_inodes_with_caps--; } - mdcache->num_caps--; //clean up advisory locks bool fcntl_removed = fcntl_locks ? fcntl_locks->remove_all_from(client) : false; diff --git a/src/mds/MDCache.cc b/src/mds/MDCache.cc index db750025ee81..1c2eb3f12731 100644 --- a/src/mds/MDCache.cc +++ b/src/mds/MDCache.cc @@ -180,7 +180,6 @@ MDCache::MDCache(MDSRank *m) : } num_inodes_with_caps = 0; - num_caps = 0; max_dir_commit_size = g_conf->mds_dir_max_commit_size ? (g_conf->mds_dir_max_commit_size << 20) : @@ -227,7 +226,7 @@ void MDCache::log_stat() mds->logger->set(l_mds_inodes_bottom, lru.lru_get_bot()); mds->logger->set(l_mds_inodes_pin_tail, lru.lru_get_pintail()); mds->logger->set(l_mds_inodes_with_caps, num_inodes_with_caps); - mds->logger->set(l_mds_caps, num_caps); + mds->logger->set(l_mds_caps, Capability::count()); } @@ -268,7 +267,7 @@ void MDCache::add_inode(CInode *in) base_inodes.insert(in); } - if (get_num_inodes() > + if (CInode::count() > g_conf->mds_cache_size * g_conf->mds_health_cache_threshold) { exceeded_size_limit = true; } @@ -7351,10 +7350,10 @@ void MDCache::check_memory_usage() static MemoryModel::snap baseline = last; // check client caps - int num_inodes = inode_map.size(); + assert(CInode::count() == inode_map.size()); float caps_per_inode = 0.0; - if (num_inodes) - caps_per_inode = (float)num_caps / (float)num_inodes; + if (CInode::count()) + caps_per_inode = (float)Capability::count() / (float)CInode::count(); dout(2) << "check_memory_usage" << " total " << last.get_total() @@ -7363,8 +7362,8 @@ void MDCache::check_memory_usage() << ", malloc " << last.malloc << " mmap " << last.mmap << ", baseline " << baseline.get_heap() << ", buffers " << (buffer::get_total_alloc() >> 10) - << ", " << num_inodes_with_caps << " / " << inode_map.size() << " inodes have caps" - << ", " << num_caps << " caps, " << caps_per_inode << " caps per inode" + << ", " << num_inodes_with_caps << " / " << CInode::count() << " inodes have caps" + << ", " << Capability::count() << " caps, " << caps_per_inode << " caps per inode" << dendl; mds->mlogger->set(l_mdm_rss, last.get_rss()); @@ -7383,7 +7382,7 @@ void MDCache::check_memory_usage() // now, free any unused pool memory so that our memory usage isn't // permanently bloated. if (exceeded_size_limit - && get_num_inodes() <= + && CInode::count() <= g_conf->mds_cache_size * g_conf->mds_health_cache_threshold) { // Only do this once we are back in bounds: otherwise the releases would // slow down whatever process caused us to exceed bounds to begin with diff --git a/src/mds/MDCache.h b/src/mds/MDCache.h index 8f0d4bb02e08..ce3c99544128 100644 --- a/src/mds/MDCache.h +++ b/src/mds/MDCache.h @@ -170,7 +170,6 @@ public: DecayRate decayrate; int num_inodes_with_caps; - int num_caps; unsigned max_dir_commit_size; @@ -260,7 +259,6 @@ public: public: - int get_num_inodes() { return inode_map.size(); } int get_num_dentries() { return lru.lru_get_size(); } diff --git a/src/mds/MDSRank.cc b/src/mds/MDSRank.cc index 58a196985eb0..e7da0aec4aaa 100644 --- a/src/mds/MDSRank.cc +++ b/src/mds/MDSRank.cc @@ -476,7 +476,7 @@ bool MDSRank::_dispatch(Message *m, bool new_msg) set s; if (!is_active()) break; mdsmap->get_mds_set(s, MDSMap::STATE_ACTIVE); - if (s.size() < 2 || mdcache->get_num_inodes() < 10) + if (s.size() < 2 || CInode::count() < 10) break; // need peers for this to work. if (mdcache->migrator->get_num_exporting() > g_conf->mds_thrash_exports * 5 || mdcache->migrator->get_export_queue_size() > g_conf->mds_thrash_exports * 10)