From: Mark Nelson Date: Wed, 7 Mar 2018 19:05:23 +0000 (-0600) Subject: Make HighPriPool funcs const and part of cache interface. X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=6f3db3fe4b67335e94640280dc992a9fc88a05e1;p=rocksdb.git Make HighPriPool funcs const and part of cache interface. Signed-off-by: Mark Nelson --- diff --git a/cache/lru_cache.cc b/cache/lru_cache.cc index 7b360389..44763c31 100644 --- a/cache/lru_cache.cc +++ b/cache/lru_cache.cc @@ -175,7 +175,7 @@ size_t LRUCacheShard::TEST_GetLRUSize() { return lru_size; } -double LRUCacheShard::GetHighPriPoolRatio() { +double LRUCacheShard::GetHighPriPoolRatio() const{ MutexLock l(&mutex_); return high_pri_pool_ratio_; } @@ -449,12 +449,12 @@ size_t LRUCacheShard::GetPinnedUsage() const { return usage_ - lru_usage_; } -size_t LRUCacheShard::GetHighPriPoolCapacity() { +size_t LRUCacheShard::GetHighPriPoolCapacity() const { MutexLock l(&mutex_); return high_pri_pool_capacity_; } -size_t LRUCacheShard::GetHighPriPoolUsage() { +size_t LRUCacheShard::GetHighPriPoolUsage() const { MutexLock l(&mutex_); return high_pri_pool_usage_; } @@ -525,7 +525,7 @@ size_t LRUCache::TEST_GetLRUSize() { return lru_size_of_all_shards; } -size_t LRUCache::GetHighPriPoolCapacity() { +size_t LRUCache::GetHighPriPoolCapacity() const { size_t size = 0; for (int i = 0; i < num_shards_; i++) { size += shards_[i].GetHighPriPoolCapacity(); @@ -533,7 +533,7 @@ size_t LRUCache::GetHighPriPoolCapacity() { return size; } -size_t LRUCache::GetHighPriPoolUsage() { +size_t LRUCache::GetHighPriPoolUsage() const { size_t size = 0; for (int i = 0; i < num_shards_; i++) { size += shards_[i].GetHighPriPoolUsage(); @@ -541,7 +541,7 @@ size_t LRUCache::GetHighPriPoolUsage() { return size; } -double LRUCache::GetHighPriPoolRatio() { +double LRUCache::GetHighPriPoolRatio() const { double result = 0.0; if (num_shards_ > 0) { result = shards_[0].GetHighPriPoolRatio(); diff --git a/cache/lru_cache.h b/cache/lru_cache.h index bb8c2477..9c41f490 100644 --- a/cache/lru_cache.h +++ b/cache/lru_cache.h @@ -206,12 +206,10 @@ class ALIGN_AS(CACHE_LINE_SIZE) LRUCacheShard : public CacheShard { // not threadsafe size_t TEST_GetLRUSize(); - // Retrieve pool capacities and usages. Protected with mutex_. - size_t GetHighPriPoolCapacity(); - size_t GetHighPriPoolUsage(); - - // Retrives high pri pool ratio - double GetHighPriPoolRatio(); + // Retrieve pool capacities/usages/ratio. Protected with mutex_. + virtual size_t GetHighPriPoolCapacity() const; + virtual size_t GetHighPriPoolUsage() const; + virtual double GetHighPriPoolRatio() const; private: void LRU_Remove(LRUHandle* e); @@ -292,15 +290,12 @@ class LRUCache : public ShardedCache { virtual size_t GetCharge(Handle* handle) const override; virtual uint32_t GetHash(Handle* handle) const override; virtual void DisownData() override; + virtual size_t GetHighPriPoolCapacity() const; + virtual size_t GetHighPriPoolUsage() const; + virtual double GetHighPriPoolRatio() const; // Retrieves number of elements in LRU, for unit test purpose only size_t TEST_GetLRUSize(); - // Retrieves high pri pool ratio - size_t GetHighPriPoolCapacity(); - // Retrieves high pri pool capacty - size_t GetHighPriPoolUsage(); - // Retrieves high pri pool ratio - double GetHighPriPoolRatio(); private: LRUCacheShard* shards_; diff --git a/include/rocksdb/cache.h b/include/rocksdb/cache.h index da3b934d..ad82cdbc 100644 --- a/include/rocksdb/cache.h +++ b/include/rocksdb/cache.h @@ -193,6 +193,12 @@ class Cache { // returns the maximum configured capacity of the cache virtual size_t GetCapacity() const = 0; + // returns the capacity of the high priority pool + virtual size_t GetHighPriPoolCapacity() const { + // default implementation returns 0 + return 0; + } + // returns the memory size for the entries residing in the cache. virtual size_t GetUsage() const = 0; @@ -202,6 +208,18 @@ class Cache { // returns the memory size for the entries in use by the system virtual size_t GetPinnedUsage() const = 0; + // returns the memory size for the entries in the high priority pool + virtual size_t GetHighPriPoolUsage() const { + // default implementation returns 0 + return 0; + } + + // returns the ratio of memory usaged by the high priority pool + virtual double GetHighPriPoolRatio() const { + // default implementation returns 0 + return 0; + } + // Call this on shutdown if you want to speed it up. Cache will disown // any underlying data and will not free it on delete. This call will leak // memory - call this only if you're shutting down the process.