• A
    Initial support for secondary cache in LRUCache (#8271) · feb06e83
    anand76 提交于
    Summary:
    Defined the abstract interface for a secondary cache in include/rocksdb/secondary_cache.h, and updated LRUCacheOptions to take a std::shared_ptr<SecondaryCache>. An item is initially inserted into the LRU (primary) cache. When it ages out and evicted from memory, its inserted into the secondary cache. On a LRU cache miss and successful lookup in the secondary cache, the item is promoted to the LRU cache. Only support synchronous lookup currently. The secondary cache would be used to implement a persistent (flash cache) or compressed cache.
    
    Tests:
    Results from cache_bench and db_bench don't show any regression due to these changes.
    
    cache_bench results before and after this change -
    Command
    ```./cache_bench -ops_per_thread=10000000 -threads=1```
    Before
    ```Complete in 40.688 s; QPS = 245774```
    ```Complete in 40.486 s; QPS = 246996```
    ```Complete in 42.019 s; QPS = 237989```
    After
    ```Complete in 40.672 s; QPS = 245869```
    ```Complete in 44.622 s; QPS = 224107```
    ```Complete in 42.445 s; QPS = 235599```
    
    db_bench results before this change, and with this change + https://github.com/facebook/rocksdb/issues/8213 and https://github.com/facebook/rocksdb/issues/8191 -
    Commands
    ```./db_bench  --benchmarks="fillseq,compact" -num=30000000 -key_size=32 -value_size=256 -use_direct_io_for_flush_and_compaction=true -db=/home/anand76/nvm_cache/db -partition_index_and_filters=true```
    
    ```./db_bench -db=/home/anand76/nvm_cache/db -use_existing_db=true -benchmarks=readrandom -num=30000000 -key_size=32 -value_size=256 -use_direct_reads=true -cache_size=1073741824 -cache_numshardbits=6 -cache_index_and_filter_blocks=true -read_random_exp_range=17 -statistics -partition_index_and_filters=true -threads=16 -duration=300```
    Before
    ```
    DB path: [/home/anand76/nvm_cache/db]
    readrandom   :      80.702 micros/op 198104 ops/sec;   54.4 MB/s (3708999 of 3708999 found)
    ```
    ```
    DB path: [/home/anand76/nvm_cache/db]
    readrandom   :      87.124 micros/op 183625 ops/sec;   50.4 MB/s (3439999 of 3439999 found)
    ```
    After
    ```
    DB path: [/home/anand76/nvm_cache/db]
    readrandom   :      77.653 micros/op 206025 ops/sec;   56.6 MB/s (3866999 of 3866999 found)
    ```
    ```
    DB path: [/home/anand76/nvm_cache/db]
    readrandom   :      84.962 micros/op 188299 ops/sec;   51.7 MB/s (3535999 of 3535999 found)
    ```
    
    Pull Request resolved: https://github.com/facebook/rocksdb/pull/8271
    
    Reviewed By: zhichao-cao
    
    Differential Revision: D28357511
    
    Pulled By: anand1976
    
    fbshipit-source-id: d1cfa236f00e649a18c53328be10a8062a4b6da2
    feb06e83
clock_cache.cc 30.1 KB