Add support for FastLRUCache in db_bench. (#10096)

Summary:
db_bench can now run with FastLRUCache.

Pull Request resolved: https://github.com/facebook/rocksdb/pull/10096

Test Plan:
- Temporarily add an ``assert(false)`` in the execution path that sets up the FastLRUCache. Run ``make -j24 db_bench``. Then test the appropriate code is used by running ``./db_bench -cache_type=fast_lru_cache`` and checking that the assert is called. Repeat for LRUCache.
- Verify that FastLRUCache (currently a clone of LRUCache) produces similar benchmark data than LRUCache, by comparing the outputs of ``./db_bench -benchmarks=fillseq,fillrandom,readseq,readrandom -cache_type=fast_lru_cache`` and ``./db_bench -benchmarks=fillseq,fillrandom,readseq,readrandom -cache_type=lru_cache``.

Reviewed By: gitbw95

Differential Revision: D36898774

Pulled By: guidotag

fbshipit-source-id: f9f6b6f6da124f88b21b3c8dee742fbb04eff773
main
Guido Tagliavini Ponce 3 years ago committed by Facebook GitHub Bot
parent 2b3c50c429
commit cf85607795
  1. 14
      tools/db_bench_tool.cc

@ -37,6 +37,7 @@
#include <thread> #include <thread>
#include <unordered_map> #include <unordered_map>
#include "cache/fast_lru_cache.h"
#include "db/db_impl/db_impl.h" #include "db/db_impl/db_impl.h"
#include "db/malloc_stats.h" #include "db/malloc_stats.h"
#include "db/version_set.h" #include "db/version_set.h"
@ -567,8 +568,7 @@ DEFINE_double(cache_high_pri_pool_ratio, 0.0,
"If > 0.0, we also enable " "If > 0.0, we also enable "
"cache_index_and_filter_blocks_with_high_priority."); "cache_index_and_filter_blocks_with_high_priority.");
DEFINE_bool(use_clock_cache, false, DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
"Replace default LRU block cache with clock cache.");
DEFINE_bool(use_compressed_secondary_cache, false, DEFINE_bool(use_compressed_secondary_cache, false,
"Use the CompressedSecondaryCache as the secondary cache."); "Use the CompressedSecondaryCache as the secondary cache.");
@ -2936,7 +2936,7 @@ class Benchmark {
if (capacity <= 0) { if (capacity <= 0) {
return nullptr; return nullptr;
} }
if (FLAGS_use_clock_cache) { if (FLAGS_cache_type == "clock_cache") {
auto cache = NewClockCache(static_cast<size_t>(capacity), auto cache = NewClockCache(static_cast<size_t>(capacity),
FLAGS_cache_numshardbits); FLAGS_cache_numshardbits);
if (!cache) { if (!cache) {
@ -2944,7 +2944,10 @@ class Benchmark {
exit(1); exit(1);
} }
return cache; return cache;
} else { } else if (FLAGS_cache_type == "fast_lru_cache") {
return NewFastLRUCache(static_cast<size_t>(capacity),
FLAGS_cache_numshardbits);
} else if (FLAGS_cache_type == "lru_cache") {
LRUCacheOptions opts( LRUCacheOptions opts(
static_cast<size_t>(capacity), FLAGS_cache_numshardbits, static_cast<size_t>(capacity), FLAGS_cache_numshardbits,
false /*strict_capacity_limit*/, FLAGS_cache_high_pri_pool_ratio, false /*strict_capacity_limit*/, FLAGS_cache_high_pri_pool_ratio,
@ -2993,6 +2996,9 @@ class Benchmark {
} }
return NewLRUCache(opts); return NewLRUCache(opts);
} else {
fprintf(stderr, "Cache type not supported.");
exit(1);
} }
} }

Loading…
Cancel
Save