CN114995751B - 一种通用缓存替换方法及系统 - Google Patents
一种通用缓存替换方法及系统 Download PDFInfo
- Publication number
- CN114995751B CN114995751B CN202210576451.4A CN202210576451A CN114995751B CN 114995751 B CN114995751 B CN 114995751B CN 202210576451 A CN202210576451 A CN 202210576451A CN 114995751 B CN114995751 B CN 114995751B
- Authority
- CN
- China
- Prior art keywords
- cache
- sequence
- time
- cache replacement
- hit rate
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000008569 process Effects 0.000 claims abstract description 23
- 230000002787 reinforcement Effects 0.000 claims abstract description 23
- 238000013528 artificial neural network Methods 0.000 claims abstract description 14
- 230000008859 change Effects 0.000 claims description 38
- 238000012549 training Methods 0.000 claims description 38
- 230000009471 action Effects 0.000 claims description 30
- 230000006870 function Effects 0.000 claims description 29
- 230000015654 memory Effects 0.000 claims description 13
- 238000004364 calculation method Methods 0.000 claims description 10
- 238000010606 normalization Methods 0.000 claims description 6
- 230000006835 compression Effects 0.000 claims description 4
- 238000007906 compression Methods 0.000 claims description 4
- 238000004458 analytical method Methods 0.000 abstract description 2
- 238000000605 extraction Methods 0.000 abstract 2
- 238000012545 processing Methods 0.000 description 7
- 238000011160 research Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000010801 machine learning Methods 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 239000002360 explosive Substances 0.000 description 4
- 238000013480 data collection Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000012163 sequencing technique Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 230000010485 coping Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 230000007787 long-term memory Effects 0.000 description 1
- 238000013178 mathematical model Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 230000006403 short-term memory Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明提供一种通用缓存替换方法及系统,包括:收集当前各种相关请求至缓存的I/O序列;将I/O序列输入到训练好的缓存分布预测器,以预测当前序列下应该采用何种缓存替换策略的概率;缓存分布预测器主要是以深度强化学习算法DDPG为基础,内部的神经网络在输入阶段对I/O序列在时序特征和统计特征上的分析;时序特征的提取主要是采用LSTM来实现,统计特征的提取主要是通过分析I/O序列本身反映出诸如最大最小以及均值等统计信息。本发明结合I/O序列的多维特征分析和深度强化学习算法来指导缓存应该选择何种缓存替换策略来完成缓存的替换过程,在无需应用层信息的情况下高效完成缓存的替换过程,降低了系统在复杂环境下部署的难度。
Description
技术领域
本发明属于计算机存储领域,更具体地,涉及一种通用缓存替换方法及系统。
背景技术
缓存替换策略是研究在特定的条件下选择缓存中的一个块或者位置单元剔除出缓存。设计出高性能且适合各种应用场景的缓存替换策略依旧是存储工作者们热衷的研究内容之一。如何利用有限的缓存空间去尽量减少缓存缺失带来的影响是研究缓存替换策略的研究目的。通常情况下缓存的大小要远小于工作负载的总大小,且有限的缓存空间能够很大程度上影响缓存的命中率。
最近最少使用算法LRU(Least Recently Used)和最近最不常用算法LFU(LeastFrequently Used)作为两种经典的缓存替换算法,由于原理简单且性能稳定,目前已被广泛使用。其中LRU算法主要识别I/O序列中存在关于局部性的特点,而LFU算法主要识别I/O序列中存在关于频率的信息,这些内容均广泛存在于很多应用场景下生成的I/O序列。早期研究工作大多数分为两个流派,其一是通过分析I/O序列本身的相关特点去重新设计一个全新的缓存替换算法例如ARC(Adaptive Replacement Cache)和LIRS(Low Inter-reference Rencency Set)等,这些策略有个共同的特点是均为启发式的方法,性能开销较小但策略的适应性较差。随着机器学习技术在各个领域的应用,另外一个流派是通过分析在特定应用场景下I/O序列的相关特征来对请求进行分类,从而提升缓存的性能。
但这些方法大多都依赖于特定的场景例如有些方法仅考虑在CPU缓存上进行应用,这需要通过分析其中特有的程序计数器来完成对缓存的替换过程。除此以外,这些方法通常在单一类型的I/O序列下有着非常高的缓存命中率,但在面对复杂的I/O序列时显得无能为力。因为现代的I/O序列呈现出爆发性多用户的特点,如果不针对I/O序列更近一步的分析是很难通过传统的启发式方法来找到其中可能存在的规律。这些问题进一步限制了传统的启发式方法和机器学习方法的使用,进而导致大部分模型在真实场景下使用受限。
发明内容
针对现有技术的缺陷,本发明的目的在于提供一种通用缓存替换方法及系统,旨在解决之前许多研究工作采用启发式的方式去设计全新的缓存替换方法,并通过单纯分析单个进程或者用户产生的I/O序列特征来完成缓存替换过程的挑战,然而这种方式已经不在适用于当前爆发性多用户场景下的缓存替换任务。
为实现上述目的,第一方面,本发明提供了一种通用缓存替换方法,包括如下步骤:
收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列;
将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:LSTM网络、DNN网络以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种算法中选取:最近最少使用算法LRU和最近最不常用算法LFU。
在一个可选的示例中,该方法还包括如下步骤:
在训练缓存分布预测器的过程中,基于各个时间段内采用的缓存替换策略和对应的奖励值,对所述缓存分布预测器的神经网络参数进行调整;所述奖励值基于不同时间段的命中率变化情况确定,命中率越高,奖励值越大。
在一个可选的示例中,所述缓存分布预测器的训练数据存储在经验回放池中;
所述经验回放池中的训练数据通过状态窗口、动作窗口以及奖励函数收集和计算;所述奖励函数用于计算在缓存分布预测器给出缓存替换策略所对应的奖励值,所述状态窗口用于存放I/O序列,所述动作窗口用于存放历史选用的缓存策略。
在一个可选的示例中,采用奖励函数得到缓存替换策略的奖励值,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定t-1时刻至t时刻的缓存命中率初始时刻至t时刻的缓存命中率 表示初始时刻的I/O序列,表示在t-1时刻的I/O序列,表示在t时刻的I/O序列,0表示初始时刻,表示I/O序列从t-1时刻至t时刻的变化,CRP表示待测试的缓存替换策略;
基于设置的基线缓存替换策略计算在不同时间范围内缓存命中率的变化情况: 表示缓存命中率从t-1时刻至t时刻的变化量,当时,Catcher表示待优化的缓存替换策略,baseline是设置的基线缓存替换策略;所述基线缓存替换策略为预设的作为对比的缓存替换策略;计算初始时刻至t时刻的缓存命中率变化情况: 表示缓存命中率从初始时刻至t时刻的变化量,当时,
根据不同时间段内的命中率变化情况计算在t-1时刻选取的缓存替换策略的奖励值rt-1;具体公式为:
其中α和β是平衡因子。
在一个可选的示例中,所述基线缓存替换策略在某一时刻只能选择LRU或LFU中的一种作为基线策略,具体选择哪一种算法的公式为:
在一个可选的示例中,所述特征函数用于提取当前I/O序列的统计特征,具体为:
计算I/O序列的一阶差分;计算所述一阶差分关于统计信息的十个特征包括:平均值、方差、标准差、一阶差分绝对和、傅里叶变换系数、基于Lempel-Ziv压缩算法计算复杂度估计、高于均值的个数、低于均值的个数、均值上的最长连续自列长度和序列中多次出现的所有值的总和。
在一个可选的示例中,对特征值进行标准化和归一化,得到当前I/O序列应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略,具体为:
将所述DDPG的输出值output通过公式:进行标准化和归一化,得到选择LRU或者LFU的概率值PLRU~LFU;
生成一个介于0~1之间大小的随机实数Rand;
如果Rand的大小介于0~PLRU~LFU,选择LRU作为缓存的替换策略,如果Rand大小介于PLRU~LFU~1选择LFU作为缓存的替换策略。
第二方面,本发明提供了一种通用缓存替换系统,包括:
I/O序列收集单元,用于收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列;
替换策略预测单元,用于将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:LSTM网络、DNN网络以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,并对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种策略中选取:最近最少使用算法LRU和最近最不常用算法LFU。
在一个可选的示例中,该系统还包括:
预测器训练单元,用于在训练缓存分布预测器的过程中,基于各个时间段内采用的缓存替换策略和对应的奖励值,对所述缓存分布预测器的神经网络参数进行调整;所述奖励值基于不同时间段的命中率变化情况确定,命中率越高,奖励值越大。
在一个可选的示例中,所述预测器训练单元采用奖励函数得到缓存替换策略的奖励值,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定t-1时刻至t时刻的缓存命中率初始时刻至t时刻的缓存命中率 表示初始时刻的I/O序列,表示在t-1时刻的I/O序列,表示在t时刻的I/O序列,0表示初始时刻,表示I/O序列从t-1时刻至t时刻的变化,CRP表示待测试的缓存替换策略;
基于设置的基线缓存替换策略计算在不同时间范围内缓存命中率的变化情况: 表示缓存命中率从t-1时刻至t时刻的变化量,当时,Catcher表示待优化的缓存替换策略,baseline是设置的基线缓存替换策略;所述基线缓存替换策略为预设的作为对比的缓存替换策略;计算初始时刻至t时刻的缓存命中率变化情况: 表示缓存命中率从初始时刻至t时刻的变化量,当时,
根据不同时间段内的命中率变化情况计算在t-1时刻选取的缓存替换策略的奖励值rt-1;具体公式为:
其中α和β是平衡因子。
总体而言,通过本发明所构思的以上技术方案与现有技术相比,具有以下有益效果:
(1)本发明所提供的通用缓存替换方法及系统,利用两种不同的缓存替换策略LRU和LFU来完成缓存的管理过程。为了能够挖掘出请求序列与LRU和LFU之间的关系和区别,构建了马尔科夫的决策模型,并使用强化学习技术来探索最佳的决策过程。除此以外为了能更加清晰地描述请求序列的变化情况,使用深度学习技术来完成对I/O序列的处理和计算,从而提高了模型应对复杂工作负载的能力,并进一步提升预测器的性能。更重要的是LRU和LFU本身在进行缓存替换时保证了简单和高效,因此模型在实际使用时的算法复杂度并不高,可以很好地嵌入到任何需要缓存的场景。
(2)本发明所提供的通用缓存替换方法及系统,模型整体的训练和预测过程是一种端到端形式地存在,这意味着模型训练时是不会受到不同阶段输出结果的影响,而是直接进行目标状态的训练,从而得到最后的结果。这种做法不仅降低了模型在各个训练阶段的难度,还能极大减少模型训练的中间过程,从而使得本发明训练得到的预测器能够一步到位。
(3)本发明所提供的通用缓存替换方法及系统,提供了一种有效的奖励函数,这使得模型实现端到端成为可能。该奖励函数不仅考虑了模型在当前时刻与基线策略的性能对比,还考虑了过去时间范围内与基线策略之间的差距。通过引入两个平衡因子来引导奖励函数的优化方向。这种有效的奖励函数不仅能够让模型在探索未知领域的决策过程时更加高效和快速,也能够提升模型在进行替换时做决策的有效性,更能够加速模型的训练过程。
(4)本发明所提供的通用缓存替换方法及系统,由于采用的是一种在线收集和训练的模式,因此每次仅需要保存一段时间内的请求I/O序列信息。除此以外,经验回放池所保留的训练数据有一定的上限,因此模型整体上存储开销相较于传统的机器学习方法和启发式方法相比大大降低。模型整体的实施部署上,采用在线学习方法,使得更适合于运用在请求密集型和爆发型的应用场景当中。
(5)本发明所提供的通用缓存替换方法及系统,深度强化学习算法不依赖于具体的预测模型,也可以使用AC,TD3和PPO等常见或主流的深度强化学习算法作为缓存预测器。并且I/O序列的特征选择也存在一定的灵活性,可以根据实际的需求来改变特征的类型,从而达到理想的结果。本发明在处理I/O序列的方法上具有较好的统一性,不仅能够处理缓存当中的相关问题,还可以应用在其他一些决策问题上,模型整体也具有良好的通用性。
附图说明
图1是本发明实施例提供的一种通用缓存替换方法流程图;
图2是本发明实施例提供的缓存分布预测器的训练流程图;
图3是本发明实施例提供的另一种通用缓存替换方法流程图;
图4是本发明实施例提供的一种通用缓存替换系统架构图;
图5是本发明实施例提供的另一种通用缓存替换系统架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
针对现有技术的缺陷,本发明的目的在于提供一种通用缓存替换方法及系统,旨在解决缓存替换策略是计算机系统中提高系统性能的重要方式的主要问题,当前许多研究工作采用启发式方法去设计全新的缓存替换算法,通过单纯分析单个进程或者单个用户产生的I/O序列来完成缓存替换过程。然而这种方式已经不在适用于当前爆发性多用户场景下的缓存替换任务,I/O序列的复杂性使得我们找到其中存在可见的启发式规律变得不是很现实,并且构建一套理论数学模型也是十分繁杂的任务。
需要说明的是,缓存替换方法的设计一直是存储工作者们热衷的研究内容之一。如何利用有限的缓存空间去尽量减少缓存缺失带来的影响是研究缓存替换策略的研究目的。之前大部分的研究工作均聚焦于每个单独的块在缓存中的特点,并通过启发式或者机器学习方法来完成对缓存替换算法的设计。然而这些算法均使用较为简单的启发式和机器学习方法,因此无法更深层次去挖掘已有缓存替换策略本身的特点,这体现在面对更复杂的工作负载时表现较差等。针对以上问题,本发明提供了一种基于深度强化学习的通用缓存替换方法及系统,其基本思路在于:通过学习请求分布与不同类型的替换策略之间的关系,允许模型在更具表现力的I/O特征上直接对替换策略进行端到端训练;这在过程中本发明需要建立起不同策略与数据分布之间的关系,以此完成缓存替换任务;除此以外本发明还重新定义了状态变量,使得模型能够充分学习到在多用户条件下的I/O序列的分布特点,并且经验回放池中的状态之间满足独立同分布假设;对来自公共数据集上的实验结果表明,与一些启发式算法和最新的缓存替换方法相比,本发明可以实现更好的结果。
针对现有技术的缺陷和改进需求,本发明提供了一种通用缓存替换方法及系统,其目的在于,系统能够直接学习到不同缓存替换策略与请求分布之间的关系,并实现自动根据请求分布的变化来调整使用不同的缓存策略,能较好完成在各种场景下的缓存替换任务。
图1是本发明实施例提供的通用缓存替换方法流程图;如图1所示,包括如下步骤:
S101,收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列;
S102,将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:长短时记忆神经网络LSTM、深度神经网络DNN以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种策略中选取:最近最少使用算法LRU和最近最不常用算法LFU。
图2是本发明实施例提供的缓存分布预测器的训练流程图;如图2所示,包括如下步骤:
S201,得到经验回放池中的训练数据;所述经验回放池中的训练数据包括通过奖励函数、状态窗口和动作窗口收集的大量训练数据;每个训练数据表示在一个时刻下关于I/O序列的状态样例;
S202,将收集的I/O序列数据按照时间顺序依次输入到状态窗口和动作窗口;
S203,根据已经收集到的状态数据根据数量大小平均分为两份,每一份表示当前I/O序列的一个状态,因此一共有两个相邻的前后状态;采用奖励函数得到动作窗口中收集到的当前I/O序列中关于缓存决策的奖励值;根据两个状态数据,一个动作状态数据和奖励值组成一个元组,将该元组加入至所述经验回放池中的训练数据;
S204,将所述经验回放池中的训练数据分配至深度强化学习算法进行训练,在训练的过程中还需要对状态数据进行第二次转换,得到相应状态数据关于时间的统计特征,这些特征包括最大最小值以及均值等统计信息;最终训练得到缓存分布预测器。
在一个可选的示例中,所述采用奖励函数得到动作窗口中收集到的当前I/O序列中关于缓存决策的奖励值,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定在当前动作窗口下的命中率 表示在t时刻的状态,表示状态从t-1时刻至t时刻时的变化,CRP表示待测试的缓存替换策略,N表示动作窗口中元素的数量,hit表示其中一次请求到达缓存时的命中情况,命中时为+1,否则为0;
基于设置的基线缓存替换策略计算在不同时间范围内命中率的变化情况;具体公式为:当时,Catcher表示提出的待优化的缓存替换策略,具体地,之前训练得到的策略或者t-1时刻采取的策略都可以称之为待优化策略,baseline是设置的基线缓存替换策略;除了计算从t-1时刻至t时刻的变化以外,还需要计算初始时刻至当前时刻t的命中率变化;同理具体公式为:当时,0表示初始时刻;
基于不同时刻的命中率变化情况可以计算得到相应的奖励值;具体公式为:
其中α和β是平衡因子,用于平衡在不同时间段内命中率的变化情况。
在一个可选的示例中,所述在训练的过程中还需要对状态数据进行第二次转换,得到相应状态数据关于时间的统计特征,具体为:
将状态数据按照每个请求的时间顺序进行排序,并计算得到相应的一阶差分;计算该一阶差分关于统计信息的十个特征包括:平均值、方差、标准差、一阶差分绝对和、傅里叶变换系数、基于Lempel-Ziv压缩算法计算复杂度估计、高于均值的个数、低于均值的个数、均值上的最长连续自列长度和序列中多次出现的所有值的总和。
在一个可选的示例中,所述基线缓存替换策略包括最近最少使用算法LRU和最近最不常用算法LFU;
基线缓存替换策略在某一时刻只能选择LRU或者LFU算法中的一种作为基线策略,具体选择哪一种算法的公式为:
在一个可选的示例中,所述预测当前序列下应该采用何种缓存替换策略的概率,具体为:
从状态窗口中收集当前时刻的状态,并将该状态值输入到深度强化学习算法中,得到对应输出;
将深度强化学习算法的输出通过公式:进行标准化和归一化,其中output是深度强化学习的输出,通过该式得到选择LRU或者LFU的概率值PLRU~LFU,注意PLRU~LFU的大小介于0~1之间;
产生一个介于0~1之间大小的随机实数Rand;
如果Rand的大小介于0~PLRU~LFU,就选择LRU作为缓存的替换策略,否则选择LFU(Rand大小介于PLRU~LFU~1)。
在实际应用中,本发明提到的缓存可以是CPU和其他处理器层面的缓存系统,也有可以是web服务器缓存或者云缓存等多种应用场景下使用的缓存;对于各种缓存应用场景,本发明所提供的通用缓存替换方法及系统均使用。
在一个更为具体的实施例中,本发明所提供的通用缓存替换方法,如图3所示,该方法包括如下步骤:
(1)不断收集当前请求的I/O序列并按照时间顺序输入,利用设置的时间窗口来完成指标的计算;
时间窗口包含状态窗口和动作窗口;真实的应用场景各种应用和用户的请求产生过程,大多是以流的形式不断生成,之后根据时间顺序将数据填充至一对窗口中,这包括状态窗口SW与动作窗口AW;其中动作窗口中的数据来源于状态窗口的部分信息。
在一个可选的实施方式中,步骤(1)具体包括:
首先填充状态窗口,当状态窗口被填满之后,将状态窗口内的I/O序列按照时间顺序平均分为四份,取中间两份填充至动作窗口;当状态窗口内的数据发生了更新,动作窗口内的数据也相应地进行更新。
状态窗口和动作窗口的大小通常是按照经验值来设定,通常情况下默认值可以设置状态窗口的大小为缓存大小的两倍,动作窗口大小为缓存的大小,如果在缓存大小比较小的场景例如应用在边缘计算的场景下,状态窗口的大小可以相应的变大,而动作窗口的大小通常是状态窗口大小的一半。
状态窗口每次仅接受一个请求,并将该请求按照时间顺序输入到状态窗口内,此时如果状态窗口已满,就必须剔除时间最久的一个请求信息。为保证收集到的数据不会有较大的冗余度,可以设置动作窗口的更新频率为在状态窗口收集到一定数量的请求后再进行更新,通常情况下可以设置为100个请求数;
(2)根据状态窗口收集到的状态数据,我们计算相应序列的时间的统计特征;
在一个可选的实施方式中,步骤(2)具体包括:
根据已经收集到的状态数据按照数量大小平均分为两份,每一份表示当前I/O序列的一个状态,因此一共有两个相邻的前后状态。
将状态数据按照每个请求的时间顺序进行排序,并计算得到相应的一阶差分;计算该一阶差分关于统计信息的十个特征包括:平均值、方差、标准差、一阶差分绝对和、傅里叶变换系数、基于Lempel-Ziv压缩算法计算复杂度估计、高于均值的个数、低于均值的个数、均值上的最长连续自列长度和序列中多次出现的所有值的总和;
这里选择的特征是考虑到如果直接学习原始序列的分布,就代表着当前请求序列中前后元素之间是相互关联的。在单用户场景下这种假设成立,但是真实的缓存环境非常复杂,多用户多应用的场景更加普遍,因此设置这些特征的主要目的是为了识别出当前I/O序列中可能存在的用户数量。如果条件允许也可以添加更多有关时间序列的统计特征,从而提高对多用户负载的识别能力;
(3)根据动作窗口内的动作数据,计算得到动作状态数据;
其中,动作状态数据是当前动作窗口内,在缓存未命中时选择LRU缓存替换策略的比例,该比例值也反映了LFU缓存替换策略的比例;
除此以外,根据当前动作窗口内记录的信息计算奖励值r,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定在当前动作窗口下的命中率 表示在t时刻的状态,表示状态从t-1时刻至t时刻时的变化,CRP表示待测试的缓存替换策略,N表示动作窗口中元素的数量,hit表示其中一次请求到达缓存时的命中情况,命中时为+1,否则为0;
基于设置的基线缓存替换策略计算在不同时间范围内命中率的变化情况;具体公式为:当时,Catcher表示提出的待优化的缓存替换策略,baseline是设置的基线缓存替换策略;除了计算从t-1时刻至t时刻的变化以外,还需要计算初始时刻至当前时刻t的命中率变化;同理具体公式为:当时,0表示初始时刻;
基于不同时刻的命中率变化情况可以计算得到相应的奖励值;具体公式为:
其中α和β是平衡因子,用于平衡在不同时间段内命中率的变化情况,默认情况下α和β分别设置为5和2,实际使用时也可以根据环境需求重新配置α和β的大小,在进行α和β最佳参数搜索时建议满足α>β和0<α,β<10这两个限制条件,通过此技巧可以加速搜索的效率和速度。
(4)对上述得到的经验回放池中的样例交给对应的深度强化学习算法进行训练学习,得到缓存分布预测器;
该深度强化学习的结构建议包含全连接神经网络和能够处理时序序列的神经网络,全连接神经网络主要用来对(2)中收集得到的时间的统计特征进行计算,而处理时序序列的神经网络主要对状态窗口内的数据进行进行处理;
根据业务应用场景的不同,全连接神经网络和处理时序序列的神经网络的层数均可以任意选择,通常情况下建议不超过4层,而具有处理时序序列的神经网络可以选择LSTM等模型;另外深度强化学习算法可以选择使用AC,DDPG,TD3和PPO等常见或主流的模型作为学习器。
(5)利用训练好的缓存分布预测器对外提供缓存管理和替换服务;
在一个可选的实施方式中,步骤(5)包括:
(51)从状态窗口中收集当前时刻的状态,并将该状态值输入到深度强化学习算法中,得到对应输出;
(52)将深度强化学习算法的输出通过公式:进行标准化和归一化,其中output是深度强化学习的输出,通过该式得到选择LRU或者LFU的概率值PLRU~LFU,注意PLRU~LFU的大小介于0~1之间;
(53)产生一个介于0~1之间大小的随机实数Rand;
(54)如果Rand的大小介于0~PLRU~LFU,就选择LRU作为缓存的替换策略,否则选择LFU(Rand大小介于PLRU~LFU~1);
在选择基替换策略的时候,默认情况下是LRU和LFU,如果应用场景具有其他的特征,也可以选择其他不同类型的基缓存替换算法,但建议新选择的替换算法要与其他的基缓存替换算法在算法特性上满足正交性。
按照本发明的另一方面,提供了一种通用缓存替换系统,用于实现上述通用缓存替换方法,如图4所示,该替换系统包括:用户、缓存、状态数据收集、缓存分布预测器学习模块以及缓存管理与控制模块;
用户根据应用场景的不同可能是具体的用户,也有可能是不同进程和应用;
缓存是位于底层存储和上层服务之间的中间件,用于接受上层用户的I/O请求,并向下提供存储服务;
状态数据收集模块用于将缓存内的一段时间得到的I/O请求按照时间顺序整理,之后依次放入设定好大小的状态窗口和动作窗口,并按照一定的要求组合成合适的样例集;
缓存分布预测器学习模块主要是通过从状态数据收集端得到相应的训练数据,并采用深度强化学习算法进行学习和训练,得到相应的预测器;
缓存管理与控制模块主要根据选择的基缓存替换策略来决定某次缓存发生缺失时,缓存应该按照哪一种缓存替换策略来管理缓存。
图5是本发明实施例提供的另一种通用缓存替换系统架构图,如图5所示,该预测系统包括:
I/O序列收集单元510,用于收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列。
替换策略预测单元520,用于将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:LSTM网络、DNN网络以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,并对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种策略中选取:最近最少使用算法LRU和最近最不常用算法LFU。
预测器训练单元530,用于在训练缓存分布预测器的过程中,基于各个时间段内采用的缓存替换策略和对应的奖励值,对所述缓存分布预测器的参数进行调整;所述奖励值基于不同时间段的命中率变化情况确定,命中率越高,奖励值越大。
本发明能够很好解决当前多用户场景下I/O请求的分布预测和缓存的管理等问题,并提升缓存的命中率,实现缓存针对多租户和爆发性请求分布的自适应能力。
可以理解的是,图5中各个单元的详细功能实现可参见前述方法实施例中的介绍,在此不做赘述。
本领域的技术人员容易理解,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种通用缓存替换方法,其特征在于,包括如下步骤:
收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列;
将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:LSTM网络、DNN网络以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种算法中选取:最近最少使用算法LRU和最近最不常用算法LFU;在训练缓存分布预测器的过程中,基于各个时间段内采用的缓存替换策略和对应的奖励值,对所述缓存分布预测器的神经网络参数进行调整;所述奖励值基于不同时间段的命中率变化情况确定,命中率越高,奖励值越大。
2.根据权利要求1所述的方法,其特征在于,所述缓存分布预测器的训练数据存储在经验回放池中;
所述经验回放池中的训练数据通过状态窗口、动作窗口以及奖励函数收集和计算;所述奖励函数用于计算在缓存分布预测器给出缓存替换策略所对应的奖励值,所述状态窗口用于存放I/O序列,所述动作窗口用于存放历史选用的缓存策略。
3.根据权利要求2所述的方法,其特征在于,采用奖励函数得到缓存替换策略的奖励值,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定t-1时刻至t时刻的缓存命中率初始时刻至t时刻的缓存命中率表示初始时刻的I/O序列,表示在t-1时刻的I/O序列,表示在t时刻的I/O序列,0表示初始时刻,表示I/O序列从t-1时刻至t时刻的变化,CRP表示待测试的缓存替换策略;
基于设置的基线缓存替换策略计算在不同时间范围内缓存命中率的变化情况:表示缓存命中率从t-1时刻至t时刻的变化量,当时,Catcher表示待优化的缓存替换策略,baseline是设置的基线缓存替换策略;所述基线缓存替换策略为预设的作为对比的缓存替换策略;计算初始时刻至t时刻的缓存命中率变化情况:表示缓存命中率从初始时刻至t时刻的变化量,当时,
根据不同时间段内的命中率变化情况计算在t-1时刻选取的缓存替换策略的奖励值rt-1;具体公式为:
其中α和β是平衡因子。
4.根据权利要求3所述的方法,其特征在于,所述基线缓存替换策略在某一时刻只能选择LRU或LFU中的一种作为基线策略,具体选择哪一种算法的公式为:
5.根据权利要求1至4任一项所述的方法,其特征在于,所述特征函数用于提取当前I/O序列的统计特征,具体为:
计算I/O序列的一阶差分;计算所述一阶差分关于统计信息的十个特征包括:平均值、方差、标准差、一阶差分绝对和、傅里叶变换系数、基于Lempel-Ziv压缩算法计算复杂度估计、高于均值的个数、低于均值的个数、均值上的最长连续自列长度和序列中多次出现的所有值的总和。
6.根据权利要求1所述的方法,其特征在于,对特征值进行标准化和归一化,得到当前I/O序列应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略,具体为:
将所述DDPG的输出值output通过公式:进行标准化和归一化,得到选择LRU或者LFU的概率值PLRU~LFU;
生成一个介于0~1之间大小的随机实数Rand;
如果Rand的大小介于0~PLRU~LFU,选择LRU作为缓存的替换策略,如果Rand大小介于PLRU~LFU~1选择LFU作为缓存的替换策略。
7.一种通用缓存替换系统,其特征在于,包括:
I/O序列收集单元,用于收集当前时间段内各种请求至缓存的I/O序列;按请求的时间顺序将请求的地址排序得到所述I/O序列;
替换策略预测单元,用于将I/O序列输入到训练好的缓存分布预测器,以预测在当前I/O序列下应该采用何种缓存替换策略,使得缓存的命中率得到进一步提升;所述缓存分布预测器为深度强化学习架构DDPG,其包括:LSTM网络、DNN网络以及特征函数;所述LSTM网络用于提取当前I/O序列的时序特征,所述特征函数用于提取当前I/O序列的统计特征;所述DNN用于基于所述时序特征和统计特征的拼接特征进行更深层次的计算得到最终DDPG的输出值,并对输出值进行标准化和归一化,得到在当前I/O序列下应该采用何种缓存替换策略的概率,并基于所述概率给出对应的缓存替换策略;所述缓存替换策略从以下两种策略中选取:最近最少使用算法LRU和最近最不常用算法LFU;
预测器训练单元,用于在训练缓存分布预测器的过程中,基于各个时间段内采用的缓存替换策略和对应的奖励值,对所述缓存分布预测器的神经网络参数进行调整;所述奖励值基于不同时间段的命中率变化情况确定,命中率越高,奖励值越大。
8.根据权利要求7所述的系统,其特征在于,所述预测器训练单元采用奖励函数得到缓存替换策略的奖励值,具体为:
基于I/O序列中每个请求到达缓存时缓存的命中情况,确定t-1时刻至t时刻的缓存命中率初始时刻至t时刻的缓存命中率表示初始时刻的I/O序列,表示在t-1时刻的I/O序列,表示在t时刻的I/O序列,0表示初始时刻,表示I/O序列从t-1时刻至t时刻的变化,CRP表示待测试的缓存替换策略;
基于设置的基线缓存替换策略计算在不同时间范围内缓存命中率的变化情况:表示缓存命中率从t-1时刻至t时刻的变化量,当时,Catcher表示待优化的缓存替换策略,baseline是设置的基线缓存替换策略;所述基线缓存替换策略为预设的作为对比的缓存替换策略;计算初始时刻至t时刻的缓存命中率变化情况:表示缓存命中率从初始时刻至t时刻的变化量,当时,
根据不同时间段内的命中率变化情况计算在t-1时刻选取的缓存替换策略的奖励值rt-1;具体公式为:
其中α和β是平衡因子。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210576451.4A CN114995751B (zh) | 2022-05-25 | 2022-05-25 | 一种通用缓存替换方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210576451.4A CN114995751B (zh) | 2022-05-25 | 2022-05-25 | 一种通用缓存替换方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114995751A CN114995751A (zh) | 2022-09-02 |
CN114995751B true CN114995751B (zh) | 2024-08-09 |
Family
ID=83028658
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210576451.4A Active CN114995751B (zh) | 2022-05-25 | 2022-05-25 | 一种通用缓存替换方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114995751B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395221A (zh) * | 2020-11-20 | 2021-02-23 | 华中科技大学 | 一种基于mlc stt-ram的能耗特性的缓存替换方法及设备 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11403525B2 (en) * | 2020-06-01 | 2022-08-02 | Dell Products, L.P. | Using reinforcement learning to dynamically tune cache policy parameters |
-
2022
- 2022-05-25 CN CN202210576451.4A patent/CN114995751B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112395221A (zh) * | 2020-11-20 | 2021-02-23 | 华中科技大学 | 一种基于mlc stt-ram的能耗特性的缓存替换方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
CN114995751A (zh) | 2022-09-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106020715B (zh) | 存储池容量管理 | |
US9015083B1 (en) | Distribution of parameter calculation for iterative optimization methods | |
CN111881358B (zh) | 一种对象推荐系统、方法、装置、电子设备和存储介质 | |
CN110287010A (zh) | 一种面向Spark时间窗口数据分析的缓存数据预取方法 | |
CN112214689A (zh) | 基于社交网络中群体的影响力最大化方法及系统 | |
CN112667528A (zh) | 一种数据预取的方法及相关设备 | |
CN116112563A (zh) | 一种基于流行度预测的双策略自适应缓存替换方法 | |
CN107370807B (zh) | 基于透明服务平台数据访问的服务端及其缓存优化方法 | |
CN113176944A (zh) | 集群计算存储资源分配方法和装置 | |
CN115687304A (zh) | 一种Flink状态存储优化方法及装置 | |
CN117194502B (zh) | 一种基于长短期记忆网络的数据库内容缓存替换方法 | |
CN117971475A (zh) | 一种gpu算力池智能管理方法及系统 | |
CN114995751B (zh) | 一种通用缓存替换方法及系统 | |
JP2022530175A (ja) | エッジネットワーク環境におけるランダムフォレストアルゴリズムに基づくvodサービスキャッシュ置き換え方法 | |
CN113225380B (zh) | 一种基于谱聚类的内容分发网络缓存方法及系统 | |
CN111629217B (zh) | 边缘网络环境下基于XGBoost算法的VOD业务缓存优化方法 | |
CN113762972A (zh) | 数据存储控制方法及装置、电子设备、存储介质 | |
CN117892769B (zh) | 神经网络训练方法、显存调度方法、系统、设备和产品 | |
CN111127184A (zh) | 一种分布式组合信用评估方法 | |
CN112306641B (zh) | 一种用于虚拟机迁移模型的训练方法 | |
CN117350607B (zh) | 改进型knn算法模型的国际物流运输路径规划系统 | |
Torabi et al. | A Learning-Based Caching Mechanism for Edge Content Delivery | |
CN110933119B (zh) | 一种更新缓存内容的方法及设备 | |
Ma et al. | LearnedCache: A Locality-Aware Collaborative Data Caching by Learning Model | |
CN117033261A (zh) | 缓存分配方法、装置、设备、介质及程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |