rocksdb/cache
Guido Tagliavini Ponce 9d7de6517c Towards a production-quality ClockCache (#10418)
Summary:
In this PR we bring ClockCache closer to production quality. We implement the following changes:
1. Fixed a few bugs in ClockCache.
2. ClockCache now fully supports ``strict_capacity_limit == false``: When an insertion over capacity is commanded, we allocate a handle separately from the hash table.
3. ClockCache now runs on almost every test in cache_test. The only exceptions are a test where either the LRU policy is required, and a test that dynamically increases the table capacity.
4. ClockCache now supports dynamically decreasing capacity via SetCapacity. (This is easy: we shrink the capacity upper bound and run the clock algorithm.)
5. Old FastLRUCache tests in lru_cache_test.cc are now also used on ClockCache.

As a byproduct of 1. and 2. we are able to turn on ClockCache in the stress tests.

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

Test Plan:
- ``make -j24 USE_CLANG=1 COMPILE_WITH_ASAN=1 COMPILE_WITH_UBSAN=1 check``
- ``make -j24 USE_CLANG=1 COMPILE_WITH_TSAN=1 check``
- ``make -j24 USE_CLANG=1 COMPILE_WITH_ASAN=1 COMPILE_WITH_UBSAN=1 CRASH_TEST_EXT_ARGS="--duration=960 --cache_type=clock_cache" blackbox_crash_test_with_atomic_flush``
- ``make -j24 USE_CLANG=1 COMPILE_WITH_TSAN=1 CRASH_TEST_EXT_ARGS="--duration=960 --cache_type=clock_cache" blackbox_crash_test_with_atomic_flush``

Reviewed By: pdillinger

Differential Revision: D38170673

Pulled By: guidotag

fbshipit-source-id: 508987b9dc9d9d68f1a03eefac769820b680340a
2022-07-26 17:42:03 -07:00
..
cache.cc Enable SecondaryCache::CreateFromString to create sec cache based on the uri for CompressedSecondaryCache (#10132) 2022-06-10 12:23:10 -07:00
cache_bench.cc Add (& fix) some simple source code checks (#8821) 2021-09-07 21:19:27 -07:00
cache_bench_tool.cc Account for DB ID in stress testing block cache keys (#10388) 2022-07-25 13:03:55 -07:00
cache_entry_roles.cc Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
cache_entry_roles.h Expose CacheEntryRole and map keys for block cache stat collections (#9838) 2022-04-14 09:38:55 -07:00
cache_entry_stats.h New stable, fixed-length cache keys (#9126) 2021-12-16 17:15:13 -08:00
cache_helpers.h Eliminate the copying of blobs when serving reads from the cache (#10297) 2022-07-06 18:57:29 -07:00
cache_key.cc Enhance new cache key testing & comments (#9329) 2022-02-04 14:15:58 -08:00
cache_key.h Fix key size in cache_bench (#10234) 2022-06-23 11:26:50 -07:00
cache_reservation_manager.cc Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
cache_reservation_manager.h Account memory of FileMetaData in global memory limit (#9924) 2022-06-14 13:06:40 -07:00
cache_reservation_manager_test.cc Have Cache use Status::MemoryLimit (#10262) 2022-07-06 14:41:46 -07:00
cache_test.cc Towards a production-quality ClockCache (#10418) 2022-07-26 17:42:03 -07:00
charged_cache.cc Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
charged_cache.h Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
clock_cache.cc Towards a production-quality ClockCache (#10418) 2022-07-26 17:42:03 -07:00
clock_cache.h Towards a production-quality ClockCache (#10418) 2022-07-26 17:42:03 -07:00
compressed_secondary_cache.cc Add the secondary cache information into LRUCache:: GetPrintableOptions (#10346) 2022-07-13 12:30:44 -07:00
compressed_secondary_cache.h Prevent double caching in the compressed secondary cache (#9747) 2022-04-11 13:28:33 -07:00
compressed_secondary_cache_test.cc Enable SecondaryCache::CreateFromString to create sec cache based on the uri for CompressedSecondaryCache (#10132) 2022-06-10 12:23:10 -07:00
fast_lru_cache.cc Towards a production-quality ClockCache (#10418) 2022-07-26 17:42:03 -07:00
fast_lru_cache.h Clock cache (#10273) 2022-06-29 21:50:39 -07:00
lru_cache.cc Support using secondary cache with the blob cache (#10349) 2022-07-16 03:54:37 -07:00
lru_cache.h Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00
lru_cache_test.cc Towards a production-quality ClockCache (#10418) 2022-07-26 17:42:03 -07:00
sharded_cache.cc Update Cache::Release param from force_erase to erase_if_last_ref (#9728) 2022-03-22 10:22:18 -07:00
sharded_cache.h Charge blob cache usage against the global memory limit (#10321) 2022-07-18 23:26:57 -07:00