自适应软件缓存管理 (3)

硬件CPU缓存领域中,最接近我们工作的是[28],它提出了一种在不同替换策略(LRU、LFU、FIFO、Random)间切换的自适应机制,但不能调节任何配置参数。

3 概述 W-TINYLFU 和FRD

正如上文提示的,W-TinyLFU包含三个组件:Main缓存,一个近似LFU的准入过滤器,称为TinyLFU,以及一个Windows缓存,如图1。新到的元素会被插入到Window缓存。原则上,它可以使用任何已有的策略进行维护,但在Caffeine实现中,Window缓存使用了LRU淘汰[23]。类似地,Main缓存可能会引入任何缓存管理框架,但Caffeine使用了SLRU淘汰策略。从Window缓存淘汰的元素以及从Main缓存淘汰的元素会进入TinyLFYU过滤器,后续会对二者的频率进行评估,并选择频率最高的插入/保持到Main缓存中。

自适应软件缓存管理

图1.W-TinyLFU框架:元素总是首先进入Windows缓存,从Windows缓存淘汰之后会进入Main缓存,此时会使用TinyLFU作为其准入过滤器。在这里,我们保留了[13]中的术语

可以将W-TinyLFU中Window缓存的大小设置为总缓存大小的0%-100%。W-TinyLFU的作者[13]经过大量负载实验后得出,将该值设置为1%可以获得最佳的命中率,这也是为什么Caffeine缓存库[23]将其作为默认配置的原因。然而,在一些严重偏向最近(访问)的负载中,需要将Window缓存的大小提升到20%-40%来媲美最佳备选方案(通常是LRU或ARC)。

通常使用sketch来实现用于评估访问频率的TinyLFU准入过滤器,如minimal increment counting Bloom filter [10]或count min sketch [11]。用于统计频率信息的采样大小S是缓存大小C的倍数。为了实现表项的过期功能,每达到S次访问后,计数器就会除以一个过期因子,该操作称为Reset[13]。默认情况下,过期因子为2,即,所有计数器都会在每个Reset操作时减半。由于访问频率为S/C的元素已经足够频繁,可以留在缓存中,因此计数器的最大值为S/C。

FRD [25]也将整个缓存区域划分为两部分,称为Temporal缓存和Actual缓存,每一部分都使用LRU进行管理。FRD会维护比较长的历史访问,类似其他框架中的幽灵表项。当出现缓存丢失时,如果访问的元素出现在历史记录中,则会将其插入到Actual缓存。否则,会将该新元素插入到Temporal缓存中。与W-TinyLFU类似,Temporal缓存和Actual缓存的比例是一个可调节的参数。经过测量,作者[25]建议将Temporal缓存的默认值设置为10%,并在后续工作中动态调节该值。与W-TinyLFU不同,FRD需要维护一个扩展的访问历史。

4 自适应缓存策略

本章中,我们会使用一些方法来派生出自适应缓存管理策略。我们讨论了熟知的爬山算法[26],以及新的、基于指示器的自适应框架的适应性。为了呈现具体的演示结果,在4.1章节中,首先调节W-TinyLFU 和 FRD的参数来对这些框架进行调节(当然,为了更好地处理基于最近(访问) vs 最常(访问)的负载,可以采用任何暴露了调参的框架)。然后在4.2章节中讨论自适应框架。

4.1 可调节参数

对于W-TinyLFU和FRD,我们暴露了动态调节Windows(或Temporal)缓存相对大小的接口(占总缓存的0-100%)。在W-TinyLFU中,我们还测验了动态校准TinyLFU准入过滤器使用的sketch参数(影响最常访问的元素的过期速度)。下面详细说明这些内容。

4.1.1 Window Cache 大小

当window(Temporal)缓存的淘汰策略是LRU时(例如Caffeine和FRD),如果window(Temporal)缓存较大,其整体行为将接近LRU。特别地,当window(Temporal)缓存占100%时,将完全成为LRU。相反,由于W-TinyLFU准入过滤器基于元素的过期频率,小的Window缓存将倾向于强调访问频率。类似地,在FRD中,Actual缓存用于保存常用元素,即,如果将main(Actual)缓存扩展到总缓存的100%,将在W-TinyLFU和FRD中获得以频率为导向的策略,参见图2。

自适应软件缓存管理

图2:调节W-TinyLFU和FRD:window缓存和main缓存的比例暗示了在最近(访问)和最常(访问)上的取舍

4.1.2 W-TinyLFU Sketch 参数

W-TinyLFU准入过滤器有3个配置参数:(i)过期采样长度S,(ii)过期因子,每个Reset操作中的默认值为2,但可以扩大或缩小,(iii)每次访问元素时的增量,默认为1,也可以调节。

我们将一开始的采样长度设置为S。通过缩短S可以限制元素的最大频率个数,进而降低了不同元素之间的最大访问频率的差异,并加速了元素的过期进度(由于降低了最大值)。上述两种方式降低了访问频率的影响,使得过滤器更偏向最近(访问)。

增加过期因子可以划分Reset操作中的计数器,并加速过期,反之亦然。即增加因子会使过滤器倾向最近(访问),降低则会倾向最常(访问)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzzygy.html