]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
mds: remove redundant mds object count tracking
authorPatrick Donnelly <pdonnell@redhat.com>
Fri, 24 Feb 2017 00:45:09 +0000 (19:45 -0500)
committerPatrick Donnelly <pdonnell@redhat.com>
Wed, 1 Mar 2017 16:54:57 +0000 (11:54 -0500)
Signed-off-by: Patrick Donnelly <pdonnell@redhat.com>
src/mds/Beacon.cc
src/mds/CInode.cc
src/mds/MDCache.cc
src/mds/MDCache.h
src/mds/MDSRank.cc

index 210de4ee6c7c86caa055c0d2963c0ea601a6feb8..16977f50a129bb68f65d7d5e24f68abc1e567e96 100644 (file)
@@ -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";
index 1f27f9a22220206a600225fbf452e7e47041dc31..9d76cffdd8bc9e1c0609b8bea424d47c5089c14b 100644 (file)
@@ -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;
index db750025ee81458f08c01686a3342cffbe9beecd..1c2eb3f12731ecd05f2a2b25aa003dde32ed8554 100644 (file)
@@ -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
index 8f0d4bb02e0809a4d2b0cd064b7cb10ad6b6db0a..ce3c995441289fc523c5c9b8b9ec601dcb0ac990 100644 (file)
@@ -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(); }
 
 
index 58a196985eb03f7aa27473813dedd1fa9d716c7a..e7da0aec4aaaae4634da05be12469185693f9c11 100644 (file)
@@ -476,7 +476,7 @@ bool MDSRank::_dispatch(Message *m, bool new_msg)
     set<mds_rank_t> 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)