return true;
}
-void LRUCacheShard::SetHighPriorityPoolRatio(double high_pri_pool_ratio) {
+void LRUCacheShard::SetHighPriPoolRatio(double high_pri_pool_ratio) {
MutexLock l(&mutex_);
high_pri_pool_ratio_ = high_pri_pool_ratio;
high_pri_pool_capacity_ = capacity_ * high_pri_pool_ratio_;
return result;
}
+void LRUCache::SetHighPriPoolRatio(double high_pri_pool_ratio) {
+ for (int i = 0; i < num_shards_; i++) {
+ shards_[i].SetHighPriPoolRatio(high_pri_pool_ratio);
+ }
+}
+
std::shared_ptr<Cache> NewLRUCache(const LRUCacheOptions& cache_opts) {
return NewLRUCache(cache_opts.capacity, cache_opts.num_shard_bits,
cache_opts.strict_capacity_limit,
virtual void SetStrictCapacityLimit(bool strict_capacity_limit) override;
// Set percentage of capacity reserved for high-pri cache entries.
- void SetHighPriorityPoolRatio(double high_pri_pool_ratio);
+ void SetHighPriPoolRatio(double high_pri_pool_ratio);
// Like Cache methods, but with an extra "hash" parameter.
virtual Status Insert(const Slice& key, uint32_t hash, void* value,
virtual size_t GetHighPriPoolCapacity() const;
virtual size_t GetHighPriPoolUsage() const;
virtual double GetHighPriPoolRatio() const;
-
+ virtual void SetHighPriPoolRatio(double high_pri_pool_ratio);
// Retrieves number of elements in LRU, for unit test purpose only
size_t TEST_GetLRUSize();
// capacity.
virtual void SetStrictCapacityLimit(bool strict_capacity_limit) = 0;
+ // Set the high priority pool ratio
+ virtual void SetHighPriPoolRatio(double high_pri_pool_ratio) {
+ // default implementation is noop
+ }
+
// Get the flag whether to return error on insertion when cache reaches its
// full capacity.
virtual bool HasStrictCapacityLimit() const = 0;