From: Kees Monshouwer Date: Mon, 26 Sep 2016 18:30:20 +0000 (+0200) Subject: remove unnecessary locking in packetcache X-Git-Tag: auth-4.0.2~19^2~7 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5656e1271b2355919261ed5b479f7ea0d3e1d75e;p=thirdparty%2Fpdns.git remove unnecessary locking in packetcache --- diff --git a/pdns/packetcache.cc b/pdns/packetcache.cc index 9e49cb7a27..9ec03e0286 100644 --- a/pdns/packetcache.cc +++ b/pdns/packetcache.cc @@ -376,25 +376,10 @@ map PacketCache::getCounts() return ret; } -int PacketCache::size() -{ - uint64_t ret=0; - for(auto& mc : d_maps) { - ReadLock l(&mc.d_mut); - ret+=mc.d_map.size(); - } - return ret; -} /** readlock for figuring out which iterators to delete, upgrade to writelock when actually cleaning */ void PacketCache::cleanup() { - d_statnumentries->store(0); - for(auto& mc : d_maps) { - ReadLock l(&mc.d_mut); - - *d_statnumentries+=mc.d_map.size(); - } unsigned int maxCached=::arg().asNum("max-cache-entries"); unsigned int toTrim=0; @@ -415,7 +400,7 @@ void PacketCache::cleanup() // cerr<<"cacheSize: "<::type sequence_t; @@ -436,16 +421,12 @@ void PacketCache::cleanup() if(lookedAt > lookAt / d_maps.size()) break; } - //totErased += erased; + totErased += erased; } // if(totErased) // cerr<<"erased: "<store(0); - for(auto& mc : d_maps) { - ReadLock l(&mc.d_mut); - *d_statnumentries+=mc.d_map.size(); - } + *d_statnumentries-=totErased; DLOG(L<<"Done with cache clean"<& entry, int zoneID=-1); - int size(); //!< number of entries in the cache + int size() { return *d_statnumentries; } //!< number of entries in the cache void cleanupIfNeeded() { if(!(++d_ops % 300000)) {