Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Instead of rigid LRU eviction, perform sampled LRU eviction. Sampled LRU eviction takes K random keys and picks the one with the lowest update timestamp. This way, even though the evicted element is not always the oldest in the whole cache, removes the necessity of maintaining a queue and reduces the contention caused by locking the queue. The K parameter is configurable, but the best performing value so far was 16 and it's used as the default one. The new eviction mechanism results in performance improvement in the cache eviction benchmarks: ``` read_only_accounts_cache/store/8 time: [1.9489 µs 1.9875 µs 2.0213 µs] change: [-74.816% -73.964% -73.105%] (p = 0.00 < 0.05) Performance has improved. read_only_accounts_cache/store/16 time: [2.0819 µs 2.1293 µs 2.1794 µs] change: [-86.636% -86.144% -85.625%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 4 (4.00%) high mild 1 (1.00%) high severe read_only_accounts_cache/store/32 time: [3.9828 µs 4.2358 µs 4.4943 µs] change: [-88.027% -87.208% -86.398%] (p = 0.00 < 0.05) Performance has improved. Found 1 outliers among 100 measurements (1.00%) 1 (1.00%) high mild read_only_accounts_cache/store/64 time: [13.119 µs 14.813 µs 16.806 µs] change: [-81.391% -78.786% -75.877%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 2 (2.00%) high mild 3 (3.00%) high severe Benchmarking read_only_accounts_cache_eviction_lo_hi/store/8: Collecting 100 samples in estimated 5.0133 s (268k itera time: [19.773 µs 19.966 µs 20.156 µs] change: [-34.871% -28.189% -22.243%] (p = 0.00 < 0.05) Performance has improved. Found 4 outliers among 100 measurements (4.00%) 2 (2.00%) high mild 2 (2.00%) high severe Benchmarking read_only_accounts_cache_eviction_lo_hi/store/16: Collecting 100 samples in estimated 5.0209 s (247k iter time: [20.194 µs 20.499 µs 20.805 µs] change: [-43.619% -40.284% -36.721%] (p = 0.00 < 0.05) Performance has improved. Found 4 outliers among 100 measurements (4.00%) 3 (3.00%) high mild 1 (1.00%) high severe Benchmarking read_only_accounts_cache_eviction_lo_hi/store/32: Collecting 100 samples in estimated 5.0245 s (207k iter time: [25.149 µs 25.889 µs 26.735 µs] change: [-57.519% -53.108% -49.152%] (p = 0.00 < 0.05) Performance has improved. Found 4 outliers among 100 measurements (4.00%) 3 (3.00%) high mild 1 (1.00%) high severe Benchmarking read_only_accounts_cache_eviction_lo_hi/store/64: Collecting 100 samples in estimated 5.1367 s (101k iter time: [42.863 µs 46.570 µs 50.567 µs] change: [-53.591% -45.954% -36.141%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 3 (3.00%) high mild 2 (2.00%) high severe Benchmarking read_only_accounts_cache_eviction_hi/store/8: Collecting 100 samples in estimated 5.0776 s (268k iteratio time: [19.697 µs 19.868 µs 20.026 µs] change: [-30.199% -26.774% -22.973%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 3 (3.00%) high mild 2 (2.00%) high severe Benchmarking read_only_accounts_cache_eviction_hi/store/16: Collecting 100 samples in estimated 5.0691 s (252k iteratiread_only_accounts_cache_eviction_hi/store/16 time: [20.536 µs 20.999 µs 21.486 µs] change: [-41.945% -36.618% -30.330%] (p = 0.00 < 0.05) Performance has improved. Found 7 outliers among 100 measurements (7.00%) 1 (1.00%) low mild 2 (2.00%) high mild 4 (4.00%) high severe Benchmarking read_only_accounts_cache_eviction_hi/store/32: Collecting 100 samples in estimated 5.1200 s (212k iteratiread_only_accounts_cache_eviction_hi/store/32 time: [22.710 µs 23.733 µs 24.866 µs] change: [-60.256% -57.228% -54.265%] (p = 0.00 < 0.05) Performance has improved. Found 7 outliers among 100 measurements (7.00%) 6 (6.00%) high mild 1 (1.00%) high severe Benchmarking read_only_accounts_cache_eviction_hi/store/64: Collecting 100 samples in estimated 5.0774 s (91k iteratioread_only_accounts_cache_eviction_hi/store/64 time: [44.758 µs 48.348 µs 52.139 µs] change: [-53.228% -47.455% -41.602%] (p = 0.00 < 0.05) Performance has improved. Found 5 outliers among 100 measurements (5.00%) 5 (5.00%) high mild ```
- Loading branch information