Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adaptive LRU window #55

Merged
merged 32 commits into from
Oct 29, 2024
Merged

Adaptive LRU window #55

merged 32 commits into from
Oct 29, 2024

Conversation

Yiling-J
Copy link
Owner

@Yiling-J Yiling-J commented Oct 25, 2024

Theine previously used a per-shard FIFO approach for the window segment in W-TinyLFU, which had a few advantages but several drawbacks:

Advantages:

  • Improved write performance, as each shard could immediately and concurrently drop entries if their frequency was not high enough.

Disadvantages:

  • The fixed size of the shard FIFO limited Theine's ability to adapt. It could only adjust how easily entries moved to the main cache by adding or subtracting a uint8 when comparing frequencies. This range was too narrow, making the adaptation more random than truly adaptive.
  • The shard FIFO added alot complexity, making the code harder to read and optimize.
  • The different implementation made it difficult to compare hit ratios with Caffeine and verify correctness.

This PR:

This update replaces the per-shard FIFO with an adaptive LRU window, similar to Caffeine. It also includes updated benchmarks for hit ratios across different workloads.

@Yiling-J
Copy link
Owner Author

@ben-manes Since Theine now uses the same adaptive W-TinyLFU as Caffeine, I ran the Caffeine simulator on OLTP and Gradle build traces to verify correctness. There were some slight differences, which I think are due to randomness and small implementation details (e.g., different buffer sizes, Theine's use of auto-resizing sketches, etc.). I also ran tests on some larger traces, but only with Theine.

Do you have any suggestions for additional steps to further verify correctness?

oltp:
Theine | 24.36 | 33.41 | 36.78 | 40.19 | 41.56 | 42.93 | 45.00 | 46.03 |
Caffeine | 24.28 | 33.16 | 37.58 | 39.66 | 41.86 | 43.58 | 44.88 | 45.93 |

gradle build:
Theine | 60.83 | 73.93 | 80.82 | 83.80 |
Caffeine | 61.84 | 75.14 | 81.71 | 83.87 |

@ben-manes
Copy link

ben-manes commented Oct 26, 2024

Sure, its what I refer to as my adaptive stress test. It sandwiches an MRU biased trace between an LRU biased one, forcing the cache to reconfigure itself. I run it at 512 since I needed to find traces that were compatible and had extremes, and these were the two most skewed ones.

corda:trace_vaultservice_large.gz
lirs:loop.trace.gz
lirs:loop.trace.gz
lirs:loop.trace.gz
lirs:loop.trace.gz
lirs:loop.trace.gz
corda:trace_vaultservice_large.gz
results
╔════════════════════════════════════════════════╤══════════╤═══════════╤═══════════╤═══════════╤═══════════╤═══════════╤════════════╤══════════╤════════════╤══════════╗
║ Policy                                         │ Hit Rate │ Miss Rate │ Hits      │ Misses    │ Requests  │ Evictions │ Admit rate │ Adaption │ Steps      │ Time     ║
╠════════════════════════════════════════════════╪══════════╪═══════════╪═══════════╪═══════════╪═══════════╪═══════════╪════════════╪══════════╪════════════╪══════════╣
║ adaptive.Arc                                   │ 19.90 %  │ 80.10 %   │ 1,248,019 │ 5,024,125 │ 6,272,144 │ 5,023,613 │            │ -12.00 % │ 6,272,144  │ 764.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ adaptive.Car                                   │ 19.90 %  │ 80.10 %   │ 1,247,980 │ 5,024,164 │ 6,272,144 │ 5,023,652 │            │          │ 12,543,668 │ 888.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ adaptive.Cart                                  │ 19.89 %  │ 80.11 %   │ 1,247,638 │ 5,024,506 │ 6,272,144 │ 5,023,994 │            │          │ 7,520,907  │ 882.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ greedy-dual.Camp                               │ 19.90 %  │ 80.10 %   │ 1,248,212 │ 5,023,932 │ 6,272,144 │ 5,023,420 │            │          │            │ 1.033 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ greedy-dual.GDWheel                            │ 19.90 %  │ 80.10 %   │ 1,248,212 │ 5,023,932 │ 6,272,144 │ 5,023,420 │            │          │ 6,272,144  │ 1.030 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ greedy-dual.Gdsf                               │ 19.73 %  │ 80.27 %   │ 1,237,211 │ 5,034,933 │ 6,272,144 │ 5,034,421 │ 100.00 %   │          │            │ 3.230 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.ClockPro                                   │ 36.88 %  │ 63.12 %   │ 2,312,854 │ 3,959,290 │ 6,272,144 │ 3,958,778 │            │          │ 6,272,144  │ 1.832 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.ClockProPlus                               │ 19.90 %  │ 80.10 %   │ 1,247,866 │ 5,024,278 │ 6,272,144 │ 5,023,766 │            │          │ 6,272,144  │ 1.879 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.ClockProSimple                             │ 11.31 %  │ 88.69 %   │ 709,521   │ 5,562,623 │ 6,272,144 │ 5,562,623 │            │          │ 17,566,569 │ 815.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.DClock (active: 50%)                       │ 19.90 %  │ 80.10 %   │ 1,248,374 │ 5,023,770 │ 6,272,144 │ 5,023,258 │            │          │ 6,272,144  │ 684.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.DClock (active: 99%)                       │ 0.02 %   │ 99.98 %   │ 1,462     │ 6,270,682 │ 6,272,144 │ 6,270,170 │            │          │ 6,272,144  │ 981.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.Frd                                        │ 19.80 %  │ 80.20 %   │ 1,241,920 │ 5,030,224 │ 6,272,144 │ 5,029,712 │            │          │ 8,989,630  │ 971.9 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ irr.Lirs                                       │ 20.16 %  │ 79.84 %   │ 1,264,261 │ 5,007,883 │ 6,272,144 │ 5,007,371 │            │          │ 8,782,107  │ 1.111 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Clock                                   │ 19.90 %  │ 80.10 %   │ 1,248,180 │ 5,023,964 │ 6,272,144 │ 5,023,452 │            │          │ 8,768,344  │ 1.089 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Clock_Clairvoyant                       │ 40.29 %  │ 59.71 %   │ 2,527,140 │ 3,745,004 │ 6,272,144 │ 3,744,492 │ 50.08 %    │          │ 11,326,264 │ 2.678 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Clock_TinyLfu                           │ 19.07 %  │ 80.93 %   │ 1,195,943 │ 5,076,201 │ 6,272,144 │ 5,075,689 │ 12.52 %    │          │ 8,663,888  │ 909.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Fifo                                    │ 19.90 %  │ 80.10 %   │ 1,248,214 │ 5,023,930 │ 6,272,144 │ 5,023,418 │            │          │ 7,520,358  │ 936.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Fifo_Clairvoyant                        │ 40.30 %  │ 59.70 %   │ 2,527,689 │ 3,744,455 │ 6,272,144 │ 3,743,943 │ 50.03 %    │          │ 8,799,833  │ 2.897 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Fifo_TinyLfu                            │ 21.78 %  │ 78.22 %   │ 1,365,825 │ 4,906,319 │ 6,272,144 │ 4,905,807 │ 9.50 %     │          │ 7,637,969  │ 1.140 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lfu                                     │ 0.02 %   │ 99.98 %   │ 1,518     │ 6,270,626 │ 6,272,144 │ 6,270,114 │            │          │ 6,272,144  │ 1.419 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lfu_Clairvoyant                         │ 18.88 %  │ 81.12 %   │ 1,184,222 │ 5,087,922 │ 6,272,144 │ 5,087,410 │ 5.37 %     │          │ 6,272,144  │ 3.335 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lfu_TinyLfu                             │ 0.14 %   │ 99.86 %   │ 9,023     │ 6,263,121 │ 6,272,144 │ 6,262,609 │ 0.19 %     │          │ 6,272,144  │ 1.170 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lru                                     │ 19.90 %  │ 80.10 %   │ 1,248,212 │ 5,023,932 │ 6,272,144 │ 5,023,420 │            │          │ 7,520,356  │ 894.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lru_Clairvoyant                         │ 40.30 %  │ 59.70 %   │ 2,527,673 │ 3,744,471 │ 6,272,144 │ 3,743,959 │ 50.03 %    │          │ 8,799,817  │ 3.727 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Lru_TinyLfu                             │ 21.76 %  │ 78.24 %   │ 1,365,047 │ 4,907,097 │ 6,272,144 │ 4,906,585 │ 9.54 %     │          │ 7,637,191  │ 1.498 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mfu                                     │ 19.90 %  │ 80.10 %   │ 1,248,214 │ 5,023,930 │ 6,272,144 │ 5,023,418 │            │          │ 6,272,144  │ 1.195 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mfu_Clairvoyant                         │ 40.30 %  │ 59.70 %   │ 2,527,704 │ 3,744,440 │ 6,272,144 │ 3,743,928 │ 50.03 %    │          │ 6,272,144  │ 3.188 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mfu_TinyLfu                             │ 20.98 %  │ 79.02 %   │ 1,316,000 │ 4,956,144 │ 6,272,144 │ 4,955,632 │ 3.39 %     │          │ 6,272,144  │ 1.422 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mru                                     │ 0.02 %   │ 99.98 %   │ 1,032     │ 6,271,112 │ 6,272,144 │ 6,270,600 │            │          │ 6,273,176  │ 1.253 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mru_Clairvoyant                         │ 0.62 %   │ 99.38 %   │ 38,621    │ 6,233,523 │ 6,272,144 │ 6,233,011 │ 4.61 %     │          │ 6,310,765  │ 3.940 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Mru_TinyLfu                             │ 0.02 %   │ 99.98 %   │ 1,389     │ 6,270,755 │ 6,272,144 │ 6,270,243 │ 0.14 %     │          │ 6,273,533  │ 1.300 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.MultiQueue                              │ 19.90 %  │ 80.10 %   │ 1,248,210 │ 5,023,934 │ 6,272,144 │ 5,023,422 │            │          │ 6,272,144  │ 1.644 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.S4Lru                                   │ 19.90 %  │ 80.10 %   │ 1,248,182 │ 5,023,962 │ 6,272,144 │ 5,023,450 │            │          │ 6,272,144  │ 961.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.S4Lru_Clairvoyant                       │ 40.25 %  │ 59.75 %   │ 2,524,784 │ 3,747,360 │ 6,272,144 │ 3,746,848 │ 49.99 %    │          │ 6,272,144  │ 2.903 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.S4Lru_TinyLfu                           │ 21.59 %  │ 78.41 %   │ 1,353,953 │ 4,918,191 │ 6,272,144 │ 4,917,679 │ 8.54 %     │          │ 6,272,144  │ 1.484 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.SegmentedLru                            │ 9.48 %   │ 90.52 %   │ 594,349   │ 5,677,795 │ 6,272,144 │ 5,677,283 │            │          │ 6,272,144  │ 953.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.SegmentedLru_Clairvoyant                │ 38.32 %  │ 61.68 %   │ 2,403,263 │ 3,868,881 │ 6,272,144 │ 3,868,369 │ 43.64 %    │          │ 6,272,144  │ 3.409 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.SegmentedLru_TinyLfu                    │ 20.71 %  │ 79.29 %   │ 1,298,765 │ 4,973,379 │ 6,272,144 │ 4,972,867 │ 3.43 %     │          │ 6,272,144  │ 1.078 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ linked.Sieve                                   │ 0.02 %   │ 99.98 %   │ 1,515     │ 6,270,629 │ 6,272,144 │ 6,270,118 │            │          │ 6,272,649  │ 879.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ opt.Clairvoyant                                │ 40.30 %  │ 59.70 %   │ 2,527,704 │ 3,744,440 │ 6,272,144 │ 3,743,928 │            │          │            │ 3.599 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ opt.Unbounded                                  │ 80.08 %  │ 19.92 %   │ 5,022,919 │ 1,249,225 │ 6,272,144 │ 0         │            │          │ 6,272,144  │ 1.022 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Cache2k                                │ 0.01 %   │ 99.99 %   │ 595       │ 6,271,549 │ 6,272,144 │ 6,271,037 │            │          │            │ 4.631 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Caffeine                               │ 39.35 %  │ 60.65 %   │ 2,468,290 │ 3,803,854 │ 6,272,144 │ 3,803,342 │            │          │            │ 3.497 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Coherence (Hybrid)                     │ 7.29 %   │ 92.71 %   │ 457,080   │ 5,815,064 │ 6,272,144 │ 5,814,596 │            │          │            │ 6.968 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Coherence (Lfu)                        │ 7.42 %   │ 92.58 %   │ 465,520   │ 5,806,624 │ 6,272,144 │ 5,806,112 │            │          │            │ 7.542 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Coherence (Lru)                        │ 26.24 %  │ 73.76 %   │ 1,645,548 │ 4,626,596 │ 6,272,144 │ 4,626,084 │            │          │            │ 6.575 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Ehcache3                               │ 22.18 %  │ 77.82 %   │ 1,391,311 │ 4,880,833 │ 6,272,144 │ 4,880,321 │            │          │            │ 10.07 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.ExpiringMap (Lru)                      │ 19.90 %  │ 80.10 %   │ 1,248,212 │ 5,023,932 │ 6,272,144 │ 5,023,420 │            │          │            │ 2.514 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Guava                                  │ 19.90 %  │ 80.10 %   │ 1,248,214 │ 5,023,930 │ 6,272,144 │ 5,023,418 │            │          │            │ 2.270 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Hazelcast (Lfu)                        │ 22.41 %  │ 77.59 %   │ 1,405,617 │ 4,866,527 │ 6,272,144 │ 4,866,015 │            │          │            │ 10.53 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Hazelcast (Lru)                        │ 25.43 %  │ 74.57 %   │ 1,594,974 │ 4,677,170 │ 6,272,144 │ 4,676,658 │            │          │            │ 9.361 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.Hazelcast (Random)                     │ 25.43 %  │ 74.57 %   │ 1,595,134 │ 4,677,010 │ 6,272,144 │ 4,676,498 │            │          │            │ 7.812 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.TCache (Lfu)                           │ 25.61 %  │ 74.39 %   │ 1,606,067 │ 4,666,077 │ 6,272,144 │ 4,665,594 │            │          │            │ 19.55 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ product.TCache (Lru)                           │ 28.84 %  │ 71.16 %   │ 1,809,170 │ 4,462,974 │ 6,272,144 │ 4,462,502 │            │          │            │ 13.94 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Fifo                           │ 19.91 %  │ 80.09 %   │ 1,249,063 │ 5,023,081 │ 6,272,144 │ 5,022,569 │            │          │ 46,452,696 │ 3.680 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Fifo_Clairvoyant               │ 40.30 %  │ 59.70 %   │ 2,527,703 │ 3,744,441 │ 6,272,144 │ 3,743,929 │ 50.03 %    │          │ 36,223,576 │ 5.377 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Fifo_TinyLfu                   │ 19.77 %  │ 80.23 %   │ 1,240,239 │ 5,031,905 │ 6,272,144 │ 5,031,393 │ 16.90 %    │          │ 46,523,288 │ 3.890 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Hyperbolic                     │ 22.77 %  │ 77.23 %   │ 1,428,272 │ 4,843,872 │ 6,272,144 │ 4,843,360 │            │          │ 45,019,024 │ 4.203 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Hyperbolic_Clairvoyant         │ 34.53 %  │ 65.47 %   │ 2,165,727 │ 4,106,417 │ 6,272,144 │ 4,105,905 │ 36.48 %    │          │ 39,119,384 │ 5.179 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Hyperbolic_TinyLfu             │ 19.09 %  │ 80.91 %   │ 1,197,173 │ 5,074,971 │ 6,272,144 │ 5,074,459 │ 11.75 %    │          │ 46,867,816 │ 4.491 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lfu                            │ 22.88 %  │ 77.12 %   │ 1,435,083 │ 4,837,061 │ 6,272,144 │ 4,836,549 │            │          │ 44,964,536 │ 3.786 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lfu_Clairvoyant                │ 34.53 %  │ 65.47 %   │ 2,165,984 │ 4,106,160 │ 6,272,144 │ 4,105,648 │ 36.49 %    │          │ 39,117,328 │ 6.672 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lfu_TinyLfu                    │ 19.61 %  │ 80.39 %   │ 1,229,770 │ 5,042,374 │ 6,272,144 │ 5,041,862 │ 10.54 %    │          │ 46,607,040 │ 4.407 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lru                            │ 19.91 %  │ 80.09 %   │ 1,249,019 │ 5,023,125 │ 6,272,144 │ 5,022,613 │            │          │ 46,453,048 │ 3.028 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lru_Clairvoyant                │ 40.30 %  │ 59.70 %   │ 2,527,701 │ 3,744,443 │ 6,272,144 │ 3,743,931 │ 50.03 %    │          │ 36,223,592 │ 5.985 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Lru_TinyLfu                    │ 15.06 %  │ 84.94 %   │ 944,661   │ 5,327,483 │ 6,272,144 │ 5,326,971 │ 21.61 %    │          │ 48,887,912 │ 4.580 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mfu                            │ 30.25 %  │ 69.75 %   │ 1,897,602 │ 4,374,542 │ 6,272,144 │ 4,374,030 │            │          │ 41,264,384 │ 3.827 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mfu_Clairvoyant                │ 38.28 %  │ 61.72 %   │ 2,400,764 │ 3,871,380 │ 6,272,144 │ 3,870,868 │ 47.77 %    │          │ 37,239,088 │ 5.542 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mfu_TinyLfu                    │ 17.18 %  │ 82.82 %   │ 1,077,358 │ 5,194,786 │ 6,272,144 │ 5,194,274 │ 13.15 %    │          │ 47,826,336 │ 4.639 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mru                            │ 20.85 %  │ 79.15 %   │ 1,308,008 │ 4,964,136 │ 6,272,144 │ 4,963,624 │            │          │ 45,981,136 │ 4.267 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mru_Clairvoyant                │ 29.07 %  │ 70.93 %   │ 1,823,543 │ 4,448,601 │ 6,272,144 │ 4,448,089 │ 34.52 %    │          │ 41,856,856 │ 6.100 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Mru_TinyLfu                    │ 14.65 %  │ 85.35 %   │ 918,860   │ 5,353,284 │ 6,272,144 │ 5,352,772 │ 7.17 %     │          │ 49,094,320 │ 4.916 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Random                         │ 25.61 %  │ 74.39 %   │ 1,606,601 │ 4,665,543 │ 6,272,144 │ 4,665,031 │            │          │ 6,272,144  │ 1.322 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Random_Clairvoyant             │ 38.99 %  │ 61.01 %   │ 2,445,329 │ 3,826,815 │ 6,272,144 │ 3,826,303 │ 47.03 %    │          │ 6,272,144  │ 3.354 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sampled.sampled.Random_TinyLfu                 │ 19.39 %  │ 80.61 %   │ 1,216,193 │ 5,055,951 │ 6,272,144 │ 5,055,439 │ 16.60 %    │          │ 6,272,144  │ 1.278 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.FeedbackTinyLfu                         │ 28.80 %  │ 71.20 %   │ 1,806,495 │ 4,465,649 │ 6,272,144 │ 4,465,137 │ 40.23 %    │          │ 6,272,144  │ 1.372 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.FeedbackWindowTinyLfu (1%)              │ 38.70 %  │ 61.30 %   │ 2,427,393 │ 3,844,751 │ 6,272,144 │ 3,844,239 │ 4.62 %     │          │ 6,272,144  │ 1.362 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.FullySegmentedWindowTinyLfu (1%)        │ 20.47 %  │ 79.53 %   │ 1,283,869 │ 4,988,275 │ 6,272,144 │ 4,987,763 │ 3.38 %     │          │ 6,272,144  │ 1.062 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.HillClimberWindowTinyLfu (indicator 1%) │ 5.11 %   │ 94.89 %   │ 320,273   │ 5,951,871 │ 6,272,144 │ 5,951,359 │ 2.88 %     │ 2.00 %   │ 6,272,144  │ 2.484 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.HillClimberWindowTinyLfu (simple 1%)    │ 30.02 %  │ 69.98 %   │ 1,883,031 │ 4,389,113 │ 6,272,144 │ 4,388,601 │ 4.26 %     │ -1.00 %  │ 6,272,144  │ 1.151 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.LruWindowTinyLfu (1%)                   │ 21.47 %  │ 78.53 %   │ 1,346,816 │ 4,925,328 │ 6,272,144 │ 4,924,816 │ 9.52 %     │          │ 6,272,144  │ 1.798 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.RandomWindowTinyLfu (1%)                │ 19.29 %  │ 80.71 %   │ 1,209,958 │ 5,062,186 │ 6,272,144 │ 5,061,674 │ 16.28 %    │          │ 6,272,144  │ 1.680 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.S4WindowTinyLfu (1%)                    │ 21.30 %  │ 78.70 %   │ 1,335,946 │ 4,936,198 │ 6,272,144 │ 4,935,686 │ 8.34 %     │          │ 6,272,144  │ 1.569 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.TinyCache                               │ 25.69 %  │ 74.31 %   │ 1,611,119 │ 4,661,025 │ 6,272,144 │ 4,660,513 │            │          │            │ 1.604 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.TinyCache_GhostCache                    │ 19.75 %  │ 80.25 %   │ 1,238,676 │ 5,033,468 │ 6,272,144 │ 280,677   │            │          │            │ 3.173 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.WindowTinyCache                         │ 21.99 %  │ 78.01 %   │ 1,379,182 │ 4,892,962 │ 6,272,144 │ 4,892,898 │            │          │            │ 4.187 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ sketch.WindowTinyLfu (1%)                      │ 20.46 %  │ 79.54 %   │ 1,283,377 │ 4,988,767 │ 6,272,144 │ 4,988,255 │ 3.40 %     │          │ 6,272,144  │ 1.665 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ two-queue.S3Fifo                               │ 19.90 %  │ 80.10 %   │ 1,248,216 │ 5,023,928 │ 6,272,144 │ 5,023,416 │            │          │ 11,295,560 │ 1.222 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ two-queue.TuQueue                              │ 19.90 %  │ 80.10 %   │ 1,248,174 │ 5,023,970 │ 6,272,144 │ 5,023,458 │            │          │ 6,272,144  │ 889.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼───────────┼───────────┼───────────┼───────────┼────────────┼──────────┼────────────┼──────────╢
║ two-queue.TwoQueue                             │ 19.90 %  │ 80.10 %   │ 1,248,216 │ 5,023,928 │ 6,272,144 │ 5,023,159 │            │          │ 6,272,144  │ 1.100 s  ║
╚════════════════════════════════════════════════╧══════════╧═══════════╧═══════════╧═══════════╧═══════════╧═══════════╧════════════╧══════════╧════════════╧══════════╝

The smaller version of that is less useful, but also worthwhile as another sanity check.

corda:trace_vaultservice_large.gz
lirs:loop.trace.gz
corda:trace_vaultservice_large.gz
results
╔════════════════════════════════════════════════╤══════════╤═══════════╤═════════╤═════════╤══════════╤═══════════╤════════════╤══════════╤═══════════╤══════════╗
║ Policy                                         │ Hit Rate │ Miss Rate │ Hits    │ Misses  │ Requests │ Evictions │ Admit rate │ Adaption │ Steps     │ Time     ║
╠════════════════════════════════════════════════╪══════════╪═══════════╪═════════╪═════════╪══════════╪═══════════╪════════════╪══════════╪═══════════╪══════════╣
║ adaptive.Arc                                   │ 11.64 %  │ 88.36 %   │ 90,426  │ 686,478 │ 776,904  │ 685,966   │            │ -42.00 % │ 776,904   │ 174.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ adaptive.Car                                   │ 11.64 %  │ 88.36 %   │ 90,413  │ 686,491 │ 776,904  │ 685,979   │            │          │ 1,553,273 │ 165.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ adaptive.Cart                                  │ 11.69 %  │ 88.31 %   │ 90,815  │ 686,089 │ 776,904  │ 685,577   │            │          │ 868,361   │ 172.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ greedy-dual.Camp                               │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │           │ 334.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ greedy-dual.GDWheel                            │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 171.9 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ greedy-dual.Gdsf                               │ 12.40 %  │ 87.60 %   │ 96,341  │ 680,563 │ 776,904  │ 680,051   │ 100.00 %   │          │           │ 694.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.ClockPro                                   │ 44.01 %  │ 55.99 %   │ 341,887 │ 435,017 │ 776,904  │ 434,505   │            │          │ 776,904   │ 245.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.ClockProPlus                               │ 11.63 %  │ 88.37 %   │ 90,391  │ 686,513 │ 776,904  │ 686,001   │            │          │ 776,904   │ 351.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.ClockProSimple                             │ 11.54 %  │ 88.46 %   │ 89,670  │ 687,234 │ 776,904  │ 687,234   │            │          │ 2,238,524 │ 179.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.DClock (active: 50%)                       │ 11.68 %  │ 88.32 %   │ 90,724  │ 686,180 │ 776,904  │ 685,668   │            │          │ 776,904   │ 133.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.DClock (active: 99%)                       │ 0.21 %   │ 99.79 %   │ 1,638   │ 775,266 │ 776,904  │ 774,754   │            │          │ 776,904   │ 153.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.Frd                                        │ 41.12 %  │ 58.88 %   │ 319,476 │ 457,428 │ 776,904  │ 456,916   │            │          │ 1,141,800 │ 205.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ irr.Lirs                                       │ 32.49 %  │ 67.51 %   │ 252,388 │ 524,516 │ 776,904  │ 524,004   │            │          │ 1,119,116 │ 164.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Clock                                   │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 957,673   │ 130.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Clock_Clairvoyant                       │ 44.50 %  │ 55.50 %   │ 345,698 │ 431,206 │ 776,904  │ 430,694   │ 31.80 %    │          │ 1,468,133 │ 210.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Clock_TinyLfu                           │ 27.93 %  │ 72.07 %   │ 217,023 │ 559,881 │ 776,904  │ 559,369   │ 14.17 %    │          │ 1,210,873 │ 177.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Fifo                                    │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 867,372   │ 110.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Fifo_Clairvoyant                        │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │ 31.70 %    │          │ 1,122,860 │ 202.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Fifo_TinyLfu                            │ 33.71 %  │ 66.29 %   │ 261,878 │ 515,026 │ 776,904  │ 514,514   │ 6.54 %     │          │ 1,038,782 │ 161.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lfu                                     │ 0.20 %   │ 99.80 %   │ 1,530   │ 775,374 │ 776,904  │ 774,862   │            │          │ 776,904   │ 154.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lfu_Clairvoyant                         │ 17.19 %  │ 82.81 %   │ 133,533 │ 643,371 │ 776,904  │ 642,859   │ 4.77 %     │          │ 776,904   │ 211.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lfu_TinyLfu                             │ 0.38 %   │ 99.62 %   │ 2,968   │ 773,936 │ 776,904  │ 773,424   │ 0.44 %     │          │ 776,904   │ 192.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lru                                     │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 867,372   │ 136.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lru_Clairvoyant                         │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │ 31.70 %    │          │ 1,122,860 │ 222.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Lru_TinyLfu                             │ 33.63 %  │ 66.37 %   │ 261,257 │ 515,647 │ 776,904  │ 515,135   │ 6.83 %     │          │ 1,038,161 │ 182.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mfu                                     │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 143.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mfu_Clairvoyant                         │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │ 31.70 %    │          │ 776,904   │ 277.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mfu_TinyLfu                             │ 18.77 %  │ 81.23 %   │ 145,806 │ 631,098 │ 776,904  │ 630,586   │ 1.54 %     │          │ 776,904   │ 181.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mru                                     │ 0.13 %   │ 99.87 %   │ 1,029   │ 775,875 │ 776,904  │ 775,363   │            │          │ 777,933   │ 123.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mru_Clairvoyant                         │ 1.26 %   │ 98.74 %   │ 9,812   │ 767,092 │ 776,904  │ 766,580   │ 4.26 %     │          │ 786,716   │ 234.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Mru_TinyLfu                             │ 0.14 %   │ 99.86 %   │ 1,085   │ 775,819 │ 776,904  │ 775,307   │ 0.17 %     │          │ 777,989   │ 165.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.MultiQueue                              │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 291.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.S4Lru                                   │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 150.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.S4Lru_Clairvoyant                       │ 44.51 %  │ 55.49 %   │ 345,828 │ 431,076 │ 776,904  │ 430,564   │ 31.69 %    │          │ 776,904   │ 246.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.S4Lru_TinyLfu                           │ 33.53 %  │ 66.47 %   │ 260,465 │ 516,439 │ 776,904  │ 515,927   │ 6.30 %     │          │ 776,904   │ 169.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.SegmentedLru                            │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 134.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.SegmentedLru_Clairvoyant                │ 44.40 %  │ 55.60 %   │ 344,938 │ 431,966 │ 776,904  │ 431,454   │ 31.63 %    │          │ 776,904   │ 232.9 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.SegmentedLru_TinyLfu                    │ 32.71 %  │ 67.29 %   │ 254,104 │ 522,800 │ 776,904  │ 522,288   │ 2.69 %     │          │ 776,904   │ 176.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ linked.Sieve                                   │ 0.20 %   │ 99.80 %   │ 1,527   │ 775,377 │ 776,904  │ 774,866   │            │          │ 777,413   │ 119.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ opt.Clairvoyant                                │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │            │          │           │ 658.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ opt.Unbounded                                  │ 88.23 %  │ 11.77 %   │ 685,425 │ 91,479  │ 776,904  │ 0         │            │          │ 776,904   │ 101.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Cache2k                                │ 1.55 %   │ 98.45 %   │ 12,024  │ 764,880 │ 776,904  │ 764,368   │            │          │           │ 1.053 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Caffeine                               │ 41.39 %  │ 58.61 %   │ 321,533 │ 455,371 │ 776,904  │ 454,859   │            │          │           │ 1.745 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Coherence (Hybrid)                     │ 9.55 %   │ 90.45 %   │ 74,194  │ 702,710 │ 776,904  │ 702,208   │            │          │           │ 1.386 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Coherence (Lfu)                        │ 9.55 %   │ 90.45 %   │ 74,195  │ 702,709 │ 776,904  │ 702,208   │            │          │           │ 1.468 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Coherence (Lru)                        │ 20.71 %  │ 79.29 %   │ 160,865 │ 616,039 │ 776,904  │ 615,532   │            │          │           │ 1.275 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Ehcache3                               │ 16.26 %  │ 83.74 %   │ 126,344 │ 650,560 │ 776,904  │ 650,048   │            │          │           │ 2.219 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.ExpiringMap (Lru)                      │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │           │ 282.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Guava                                  │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │           │ 775.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Hazelcast (Lfu)                        │ 31.63 %  │ 68.37 %   │ 245,705 │ 531,199 │ 776,904  │ 530,687   │            │          │           │ 1.321 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Hazelcast (Lru)                        │ 28.15 %  │ 71.85 %   │ 218,708 │ 558,196 │ 776,904  │ 557,684   │            │          │           │ 1.450 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.Hazelcast (Random)                     │ 28.20 %  │ 71.80 %   │ 219,059 │ 557,845 │ 776,904  │ 557,333   │            │          │           │ 1.471 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.TCache (Lfu)                           │ 30.47 %  │ 69.53 %   │ 236,738 │ 540,166 │ 776,904  │ 539,655   │            │          │           │ 1.073 s  ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ product.TCache (Lru)                           │ 35.18 %  │ 64.82 %   │ 273,282 │ 503,622 │ 776,904  │ 503,120   │            │          │           │ 874.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Fifo                           │ 11.67 %  │ 88.33 %   │ 90,640  │ 686,264 │ 776,904  │ 685,752   │            │          │ 6,262,920 │ 327.9 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Fifo_Clairvoyant               │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │ 31.70 %    │          │ 4,220,392 │ 325.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Fifo_TinyLfu                   │ 29.92 %  │ 70.08 %   │ 232,463 │ 544,441 │ 776,904  │ 543,929   │ 16.23 %    │          │ 5,128,336 │ 333.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Hyperbolic                     │ 30.15 %  │ 69.85 %   │ 234,240 │ 542,664 │ 776,904  │ 542,152   │            │          │ 5,114,120 │ 350.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Hyperbolic_Clairvoyant         │ 43.15 %  │ 56.85 %   │ 335,223 │ 441,681 │ 776,904  │ 441,169   │ 28.57 %    │          │ 4,306,256 │ 383.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Hyperbolic_TinyLfu             │ 29.57 %  │ 70.43 %   │ 229,707 │ 547,197 │ 776,904  │ 546,685   │ 12.00 %    │          │ 5,150,384 │ 400.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lfu                            │ 30.35 %  │ 69.65 %   │ 235,753 │ 541,151 │ 776,904  │ 540,639   │            │          │ 5,102,016 │ 350.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lfu_Clairvoyant                │ 43.13 %  │ 56.87 %   │ 335,060 │ 441,844 │ 776,904  │ 441,332   │ 28.55 %    │          │ 4,307,560 │ 455.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lfu_TinyLfu                    │ 30.41 %  │ 69.59 %   │ 236,281 │ 540,623 │ 776,904  │ 540,111   │ 10.36 %    │          │ 5,097,792 │ 367.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lru                            │ 11.66 %  │ 88.34 %   │ 90,612  │ 686,292 │ 776,904  │ 685,780   │            │          │ 6,263,144 │ 373.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lru_Clairvoyant                │ 44.53 %  │ 55.47 %   │ 345,956 │ 430,948 │ 776,904  │ 430,436   │ 31.69 %    │          │ 4,220,392 │ 324.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Lru_TinyLfu                    │ 22.28 %  │ 77.72 %   │ 173,123 │ 603,781 │ 776,904  │ 603,269   │ 24.53 %    │          │ 5,603,056 │ 423.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mfu                            │ 30.83 %  │ 69.17 %   │ 239,503 │ 537,401 │ 776,904  │ 536,889   │            │          │ 5,072,016 │ 254.4 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mfu_Clairvoyant                │ 41.65 %  │ 58.35 %   │ 323,569 │ 453,335 │ 776,904  │ 452,823   │ 30.00 %    │          │ 4,399,488 │ 357.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mfu_TinyLfu                    │ 23.66 %  │ 76.34 %   │ 183,844 │ 593,060 │ 776,904  │ 592,548   │ 12.02 %    │          │ 5,517,288 │ 335.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mru                            │ 25.63 %  │ 74.37 %   │ 199,133 │ 577,771 │ 776,904  │ 577,259   │            │          │ 5,394,976 │ 326.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mru_Clairvoyant                │ 31.79 %  │ 68.21 %   │ 247,010 │ 529,894 │ 776,904  │ 529,382   │ 23.75 %    │          │ 5,011,960 │ 376.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Mru_TinyLfu                    │ 20.52 %  │ 79.48 %   │ 159,416 │ 617,488 │ 776,904  │ 616,976   │ 6.34 %     │          │ 5,712,712 │ 389.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Random                         │ 24.83 %  │ 75.17 %   │ 192,877 │ 584,027 │ 776,904  │ 583,515   │            │          │ 776,904   │ 146.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Random_Clairvoyant             │ 44.27 %  │ 55.73 %   │ 343,955 │ 432,949 │ 776,904  │ 432,437   │ 31.30 %    │          │ 776,904   │ 201.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sampled.sampled.Random_TinyLfu                 │ 29.36 %  │ 70.64 %   │ 228,086 │ 548,818 │ 776,904  │ 548,306   │ 16.49 %    │          │ 776,904   │ 191.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.FeedbackTinyLfu                         │ 39.13 %  │ 60.87 %   │ 304,017 │ 472,887 │ 776,904  │ 472,375   │ 30.22 %    │          │ 776,904   │ 223.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.FeedbackWindowTinyLfu (1%)              │ 43.54 %  │ 56.46 %   │ 338,283 │ 438,621 │ 776,904  │ 438,109   │ 3.93 %     │          │ 776,904   │ 215.6 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.FullySegmentedWindowTinyLfu (1%)        │ 32.35 %  │ 67.65 %   │ 251,366 │ 525,538 │ 776,904  │ 525,026   │ 2.67 %     │          │ 776,904   │ 212.5 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.HillClimberWindowTinyLfu (indicator 1%) │ 12.49 %  │ 87.51 %   │ 97,069  │ 679,835 │ 776,904  │ 679,323   │ 2.37 %     │ 3.00 %   │ 776,904   │ 431.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.HillClimberWindowTinyLfu (simple 1%)    │ 42.02 %  │ 57.98 %   │ 326,445 │ 450,459 │ 776,904  │ 449,947   │ 4.20 %     │ 35.00 %  │ 776,904   │ 200.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.LruWindowTinyLfu (1%)                   │ 32.90 %  │ 67.10 %   │ 255,576 │ 521,328 │ 776,904  │ 520,816   │ 7.13 %     │          │ 776,904   │ 185.1 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.RandomWindowTinyLfu (1%)                │ 29.43 %  │ 70.57 %   │ 228,678 │ 548,226 │ 776,904  │ 547,714   │ 16.03 %    │          │ 776,904   │ 180.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.S4WindowTinyLfu (1%)                    │ 33.09 %  │ 66.91 %   │ 257,115 │ 519,789 │ 776,904  │ 519,277   │ 6.39 %     │          │ 776,904   │ 184.3 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.TinyCache                               │ 24.93 %  │ 75.07 %   │ 193,715 │ 583,189 │ 776,904  │ 582,677   │            │          │           │ 239.8 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.TinyCache_GhostCache                    │ 31.72 %  │ 68.28 %   │ 246,439 │ 530,465 │ 776,904  │ 29,522    │            │          │           │ 516.0 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.WindowTinyCache                         │ 35.60 %  │ 64.40 %   │ 276,582 │ 500,322 │ 776,904  │ 500,258   │            │          │           │ 640.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ sketch.WindowTinyLfu (1%)                      │ 32.39 %  │ 67.61 %   │ 251,670 │ 525,234 │ 776,904  │ 524,722   │ 2.66 %     │          │ 776,904   │ 225.9 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ two-queue.S3Fifo                               │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 1,462,828 │ 254.2 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ two-queue.TuQueue                              │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,924   │            │          │ 776,904   │ 169.7 ms ║
╟────────────────────────────────────────────────┼──────────┼───────────┼─────────┼─────────┼──────────┼───────────┼────────────┼──────────┼───────────┼──────────╢
║ two-queue.TwoQueue                             │ 11.64 %  │ 88.36 %   │ 90,468  │ 686,436 │ 776,904  │ 685,668   │            │          │ 776,904   │ 222.5 ms ║
╚════════════════════════════════════════════════╧══════════╧═══════════╧═════════╧═════════╧══════════╧═══════════╧════════════╧══════════╧═══════════╧══════════╝

For a large LRU-biased traces, the twitter cluster52 is a good choice. A remote cache for social media is very recency biased, as that confirmed what the memcached authors had said for many years but no one offered traces for proof until then. My recollection is Caffeine was a close match to LRU, which was nice since it was robust on a trace that I hadn't designed with.

I always wanted to try adjusting the algorithm to use small sample periods with large steps and decay the step size while increasing the sample period. I figured this would make it more aggressively experimental early on, which might be especially helpful on tiny cache sizes (e.g. 100) or large ones that may correct too slowly. Given how much work it takes to evaluate workloads to avoid regressions and no user complaints with a problematic trace, I never experimented beyond basic toying.

Semi-related would be to include jitter, if you haven't already. That was to protect against a theoretical attack, but the TencentPhoto trace at 1M showed an improved hit rate. I don't know if that was a observing synthetic work in the wild, like an attack would be, or if somehow that really was a valid case, but it was good to see the policy handled hostile patterns correctly.

@Yiling-J
Copy link
Owner Author

@ben-manes I ran the adaptive test suite, and the result was 37.8%, slightly lower than Caffeine. then I tested with the vault-large trace only, the hit ratio was still about 2% lower. After some investigation I think the difference is because Theine only updates the policy when one of the read buffers is full. But on the write side, a buffered channel is used, and it updates the policy almost in real-time when concurrency is low.

In contrast, seems Caffeine buffers both reads and writes, and maintenance always drains the read buffer first.

@ben-manes
Copy link

That still sounds great! There will always be variance so a small loss could be a small win in a different trace. As long as it’s at or near the top score, then it’s very good and you should feel satisfied in your accomplishment.

Does it make sense to mirror caffeine’s maintenance flow or does your approach better in terms of Go’s characteristics?

Caffeine can use fine grained hash table locking so the write contention is localized, allowing parallel writing. The write buffer absorbs a burst of activity, since writing is relatively rare compared to reads, so I assume that a full buffer with back pressure is very rarely needed. Since all maintenance is scheduled under an exclusive lock, and that is fast as O(1), I didn’t see a reason to not drain all pending work per invocation.

@Yiling-J
Copy link
Owner Author

I tried simply draining the read buffer first in each policy Set, but it seems the hit ratio doesn't change much. I believe there are some trivial details I haven't noticed yet, but debugging them isn't easy.

Mirroring Caffeine’s maintenance flow seems like a great choice. One reason I use a buffered channel is to ensure writes are synchronized with the policy quickly, even when writing is rare, while still utilizing a buffer for heavy concurrent writes. This also makes writing tests easier. I think Caffeine also tries to schedule maintenance proactively after each write? @ben-manes

@ben-manes
Copy link

Correct. A write is applied directly to the hash table, inserted into the write buffer, and then a maintenance is immediately scheduled. That is done uses a bounded queue (ring buffer), a try-lock and state machine, and submitting a task to an Executor. For unit tests the executor is set to invoke the task immediately on the same thread which disables any async/concurrent processing, which likewise simplifies the tests. By default it submits to the JVM-wide threadpool and users can configure onto Java's newer virtual threads (their goroutines).

The scheduling is a bit complex but hopefully not too confusing. There are three main parts:

  • The state machine (idle, required, process_to_idle, processing_to_required) avoids unnecessary task scheduling
  • The entry lifecycle (alive, retired, dead) to keep the hash table and policy eventually consistent
  • A "weight" and "policy weight" to handle an entry's size changing while it shuffles between LRU queues

A quick glance and you might see if the doorkeeper is causing some problems? I don't use it since (a) before adaptivity it was too aggressive in simulations for lru traces, (b) I didn't know a good rule-of-thumb for sizing the two sketches as it varies with overall size, (c) it didn't seem as useful for an on-heap cache where massive caches are native to avoid GC, fragmentation, and object bloat concerns.

@Yiling-J
Copy link
Owner Author

the doorkeeper is causing some problems

The doorkeeper is an option and is always disabled when running benchmarks. I think I'll leave the difference for now because the main goal of this PR is to implement an Adaptive LRU window, and the hit ratio results for some traces have clearly improved.
The next step might be to refactor the write buffer and maintenance first; perhaps after that is done the hit ratio will also improve further.

@Yiling-J Yiling-J marked this pull request as ready for review October 29, 2024 01:06
@Yiling-J Yiling-J merged commit e0555fa into main Oct 29, 2024
22 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants