-
Notifications
You must be signed in to change notification settings - Fork 17
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
Conversation
@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: gradle build: |
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.
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.
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. |
@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 |
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. |
I tried simply draining the read buffer first in each policy 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 |
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:
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. |
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. |
Theine previously used a per-shard FIFO approach for the window segment in W-TinyLFU, which had a few advantages but several drawbacks:
Advantages:
Disadvantages:
uint8
when comparing frequencies. This range was too narrow, making the adaptation more random than truly adaptive.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.