zoukankan      html  css  js  c++  java
  • 基于Alluxio内存文件系统的缓存策略

    Alluxio是一种基于内存的分布式文件系统,支持不同的缓存替换策略,来替换内存中的文件快。Alluxio中的文件时以文件块形式组织,其中文件通过自己实现的inode数据结构记录文件属性并索引。

    下面首先介绍几种不同的缓存策略,这些缓存策略被广泛的应用在web,数据库,文件系统中。

    1 基于访问频率的缓存策略

    这种缓存策略是根据缓存单位的(在Alluxio中是文件块Block)访问频率来进行缓存调度,最常用的策略是LFU(Least Frequently Used)策略。该策略每次淘汰访问频率最低的缓存单位。但是如果一个文件块很早时被经常访问,但最近一段时间访问频率很低,那总访问频率依然很高,无法被淘汰。LIRS( Low Inter-Reference Set)策略淘汰具有最长访问间隔的单位,当缓存单位被访问时,会更新访问间隔,一般最近被频繁访问的文件块都具有较短的访问间隔。2Q与 LRU-2策略每次淘汰倒数第二次被访问的时间距离现在最久的缓存项。这些基于访问频率的缓存策略都考虑了访问时间对访问频率的影响,但这些策略对时间局部性良好的访问次序,效果不是很好。

    2 基于访问时间的缓存策略

    下面考虑访问时间对缓存策略考量的影响,这种缓存策略是考虑或主要考虑缓存单元的访问时间,被广泛使用的策略是LRU缓存策略,这种策略淘汰最久没被访问的缓存块。FIFO淘汰按先进先出策略淘汰,MRU则淘汰最近被访问的文件块。这些缓存策略未考虑访问频率的影响,所以效果也不是很好。

    3 对访问时间和访问频率共同考虑的访问策略

    LRFU( Least Recently Frequently Used)每次淘汰具有最小 CRF( Combined Recency and Frequency)值的缓存项,CRF值同时考虑了访问时间和访问频率,ARC( Adaptive Replacement Cache)使用了两个队列,其中一个队列管理访问顺序,另一个队列管理访问频率,队列大小可以自适应调整。但是,这两种策略在针对循环访问时,效果远差于MRU 与 LIRS。

    对缓存策略的调度

    鉴于每种缓存策略都适应于不同的访问场景,通常文件系统需要一种缓存策略调度算法来针对不同访问场景,进行缓存策略切换。主要包括以下几种场景

    基于缓存空间划分的并行调度

    在一段程序运行过程中,数据的访问可能是具有一定规律的,所以有研究者提出可以将缓存空间划分为不同的部分,针对不同部分采用不同的缓存策略,形成多缓存策略的并行调度。
    UBM策略首先分析文件的数据访问方式,判断文件时循环,顺序或是其他方式被访问的,并针对这三种访问方式,将缓存空间划分为三部分,并通过最大增益值计算调整缓存空间分配比例。每部分分别采用LRU或者MRU策略。但是当面临多线程或多进程访问时,文件访问方式很难被识别。AMP和PCC策略分析程序调用关系,以操作系统的程序计数器为粒度,判断程序片段的访问顺序。但是会产生额外的计算开销。Karma策略会首先获取应用提示,并针对提示从而提前获取数据访问信息,计算最大增益,获取最优调度策略。

    针对访问模式变化的串行调度策略

    因为针对数据分区的调度方式存在诸多不足,有研究者提出了针对数据访问模式的调度策略,如使用隐马尔可夫模型和神经网络从文件层面分析数据的访问模式,包括顺序读,有规律跳读,无规律跳读等方式,根据上述方式确定MRU,LRU等调度算法选择,但面对复杂的数据访问模式应对效果较差,SOAP以固定时间间隔为单位动态收集数据访问记录,从而模拟各个候选策略,计算固定时间间隔内的命中率,选择命中率最高的缓存策略,但时间间隔选取不当会影响结果,而且上一时间间隔命中率高的算法在下一时间间隔命中率未必高。

    其他调度方式

    例如ACME方式,同时启动多个附带权重的缓存策略,当需要替换缓存块时,每个策略对候选淘汰缓存块进行投票,投票少的缓存块被淘汰,而且ACME算法会应用机器学习的方法对权重进行动态调整

    下一章介绍Alluxio的缓存调度方式。

  • 相关阅读:
    理解构造器
    if与switch的性能比较
    Java对象的内存(一)
    shell编程_条件判断if
    shell编程_基础&变量
    集群架构篇:Nginx架构演进<拆分数据库 多台web节点共享静态资源>
    集群架构篇:Nginx流行架构LNMP
    集群架构篇:Nginx常用模块
    LInux系统@安装CentOS7虚拟机
    docker pull越来越慢的解决方法
  • 原文地址:https://www.cnblogs.com/lichongjie/p/7128355.html
Copyright © 2011-2022 走看看