DECLARE_int32(top_level_index_pinning);
DECLARE_int32(partition_pinning);
DECLARE_int32(unpartitioned_pinning);
-DECLARE_bool(use_clock_cache);
+DECLARE_string(cache_type);
DECLARE_uint64(subcompactions);
DECLARE_uint64(periodic_compaction_seconds);
DECLARE_uint64(compaction_ttl);
"Type of pinning for unpartitioned metadata blocks (see `enum PinningTier` "
"in table.h)");
-DEFINE_bool(use_clock_cache, false,
- "Replace default LRU block cache with clock cache.");
+DEFINE_string(cache_type, "lru_cache", "Type of block cache.");
DEFINE_uint64(subcompactions, 1,
"Maximum number of subcompactions to divide L0-L1 compactions "
#include "util/compression.h"
#ifdef GFLAGS
+#include "cache/fast_lru_cache.h"
#include "db_stress_tool/db_stress_common.h"
#include "db_stress_tool/db_stress_compaction_filter.h"
#include "db_stress_tool/db_stress_driver.h"
if (capacity <= 0) {
return nullptr;
}
- if (FLAGS_use_clock_cache) {
+
+ if (FLAGS_cache_type == "clock_cache") {
auto cache = NewClockCache((size_t)capacity);
if (!cache) {
fprintf(stderr, "Clock cache not supported.");
exit(1);
}
return cache;
- } else {
+ } else if (FLAGS_cache_type == "fast_lru_cache") {
+ return NewFastLRUCache((size_t)capacity, num_shard_bits);
+ } else if (FLAGS_cache_type == "lru_cache") {
LRUCacheOptions opts;
opts.capacity = capacity;
opts.num_shard_bits = num_shard_bits;
}
#endif
return NewLRUCache(opts);
+ } else {
+ fprintf(stderr, "Cache type not supported.");
+ exit(1);
}
}
"use_direct_reads": lambda: random.randint(0, 1),
"use_direct_io_for_flush_and_compaction": lambda: random.randint(0, 1),
"mock_direct_io": False,
- "use_clock_cache": 0, # currently broken
+ "cache_type": lambda: random.choice(["fast_lru_cache", "lru_cache"]), # clock_cache is broken
"use_full_merge_v1": lambda: random.randint(0, 1),
"use_merge": lambda: random.randint(0, 1),
# 999 -> use Bloom API
"async_io": lambda: random.choice([0, 1]),
"wal_compression": lambda: random.choice(["none", "zstd"]),
"verify_sst_unique_id_in_manifest": 1, # always do unique_id verification
+ "secondary_cache_uri": "",
}
_TEST_DIR_ENV_VAR = 'TEST_TMPDIR'
if dest_params.get("two_write_queues") == 1:
dest_params["enable_pipelined_write"] = 0
if dest_params.get("best_efforts_recovery") == 1:
- dest_params["disable_wal"] = 1
- dest_params["atomic_flush"] = 0
- dest_params["enable_compaction_filter"] = 0
- dest_params["sync"] = 0
- dest_params["write_fault_one_in"] = 0
+ dest_params["disable_wal"] = 1
+ dest_params["atomic_flush"] = 0
+ dest_params["enable_compaction_filter"] = 0
+ dest_params["sync"] = 0
+ dest_params["write_fault_one_in"] = 0
+ if dest_params["secondary_cache_uri"] != "":
+ # Currently the only cache type compatible with a secondary cache is LRUCache
+ dest_params["cache_type"] = "lru_cache"
return dest_params