Project

General

Profile

Bug #22410

Updated by Mark Kogan over 6 years ago

Details and analysis: 

 valgrind massif shown the following information: 
 <pre> 
 --------------------------------------------------------------------------------               
   n          time(i)           total(B)     useful-heap(B) extra-heap(B)      stacks(B)                
 --------------------------------------------------------------------------------               
  65 4,708,134,638,372      2,339,301,056      2,141,918,346     197,382,710              0             
 91.56% (2,141,918,346B) (heap allocation functions) malloc/new/new[], --alloc-fns, etc.        
 ->37.62% (880,128,000B) 0x4A439E: RGWChainedCacheImpl<bucket_info_entry>::chain_cb(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void*) (new_alloca 
 | ->37.62% (880,128,000B) 0x5C13DF: ObjectCache::chain_cache_entry(std::__cxx11::list<rgw_cache_entry_info*, std::allocator<rgw_cache_entry_info*> >&, RGWChainedCache::Entry*) (rgw_cache.cc 
 |     ->37.62% (880,128,000B) 0x4486DC: RGWRados::get_bucket_info(RGWObjectCtx&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_st... 
 </pre> 

 Added a log in chain_cb(() (rgw_rados.h) 
 <pre> 
 void chain_cb(const string& key, void *data) override { 
     T *entry = static_cast<T *>(data); 
     RWLock::WLocker wl(lock); 

     lsubdout(g_ceph_context, rgw, 10) 
	     << "#DEBUG# " << __func__ << " key='" << key << "' entries.size()=" << entries.size() << dendl; 

     entries[key].first = *entry; 
     if (expiry.count() > 0) { 
       entries[key].second = ceph::coarse_mono_clock::now(); 
     } 
   } 
 </pre> 

 And indeed saw that the entries.size() was increasing above _conf->rgw_cache_lru_size (10000) 

 2017-12-12 03:38:46.426 4a5d1700 10 #DEBUG# chain_cb key='mycontainers754053' entries.size()=754053 
 


Back