}
// 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";
dout(10) << "add_client_cap first cap, joining realm " << *containing_realm << dendl;
}
- mdcache->num_caps++;
if (client_caps.empty())
mdcache->num_inodes_with_caps++;
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;
}
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) :
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());
}
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;
}
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()
<< ", 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());
// 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
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)