{'fraction_non_alphanumeric': 0.02744546094299789, 'fraction_numerical': 0.0014074595355383533, 'mean_word_length': 5.103004291845494, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
SHARC: improving adaptive replacement cache with shadow recency cache management

Adaptive Replacement Cache (ARC) is a state-of-the-art cache replacement policy with a constant-time complexity per request. It uses a recency list and a frequency list to balance between access recency and access frequency. In this paper, we re-examine the ARC policy and demonstrate its weaknesses: 1) some entries in the recency list are not recent; and 2) the constraint of the recency list length limits the capability in identifying weak locality. We then propose a new policy, Shadow ARC (SHARC), to overcome those weaknesses with shadow recency cache management. In SHARC, we track the virtual time of the accesses. We allow the shadow recency cache to grow on demand, but proactively identify unpromising entries for eviction based on a comprehensive eviction criterion. While the criterion is calculated from the virtual time, we provide the theoretical justification that in scenarios of strong locality, it tightly bounds the recency distance of the entries. In scenarios of relatively weak locality, the criterion dynamically determines the size of the shadow recency cache based on the activeness of the frequency cache items and the promotion activities of the recency items. Experimental results indicate that SHARC outperforms the state-of-the-art policies of ARC, Low Inter-Reference Recency Set (LIRS), and Dynamic LIRS.