CN101630291A - 虚拟存储***和方法 - Google Patents
虚拟存储***和方法 Download PDFInfo
- Publication number
- CN101630291A CN101630291A CN200910089182A CN200910089182A CN101630291A CN 101630291 A CN101630291 A CN 101630291A CN 200910089182 A CN200910089182 A CN 200910089182A CN 200910089182 A CN200910089182 A CN 200910089182A CN 101630291 A CN101630291 A CN 101630291A
- Authority
- CN
- China
- Prior art keywords
- data block
- request
- data
- tree
- relation information
- 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.)
- Granted
Links
Images
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及虚拟存储***及方法,***包括主缓存和预取缓存,主缓存和预取缓存,负载分析模块,用于收集到达***的应用负载,分析得出应用负载的数据块关系信息,发送数据块关系信息;数据预取模块,用于接收数据块关系信息,根据数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将待访问的数据从低速存储设备预取到预取缓存;缓存替换模块,用于接收数据块关系信息,接收应用层的输入输出请求,在主缓存、预取缓存和低速存储设备中查找并读取对应数据,并根据数据块关系信息预测数据块被预取的概率,按概率将数据块存储到主缓存的对应位置。本发明能够对复杂应用环境自适应,根据应用负载的变化而调整。
Description
技术领域
本发明涉及信息存储技术领域,尤其涉及虚拟存储***和方法。
背景技术
随着虚拟存储技术的不断发展,存储***逐渐成为网络服务器***的主要瓶颈。网络存储***主要通过虚拟存储技术向外部提供高性能的数据服务。传统的***通过对应用负载进行分析,在线根据负载的变化对***状态进行相应调整进行性能优化。对负载特征的描述包括区分读写操作、访问频率、应用需要的带宽和响应延迟、访问区域等。根据获取的负载特征可以对数据通路上的数据传输和存放策略进行设计,如缓存和磁盘调度,从而优化存储***的性能。
但是,传统的虚拟存储***的分析仅局限于简单特征描述或性能需求描述,存在以下问题:
存储***的应用具有多样性、复杂性和不稳定性,使用简单负载特征难以对其进行精确持久有效的描述,无法进一步发现应用负载的潜在语义特征,限制了存储***的优化潜力。
分析简单负载特征所使用的统计方法对复杂语义特征进行分析的开销难以被实际***接受。分析过程所占用的***资源和造成的开销远远超过优化带来的好处。
发明内容
本发明的目的在于,提供一种虚拟存储***和方法,能够对复杂应用环境自适应,根据应用负载的变化而调整。
本发明公开了一种虚拟存储***,所述***包括主缓存和预取缓存,
负载分析模块,用于收集到达所述***的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息;
数据预取模块,用于接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;
缓存替换模块,用于接收所述数据块关系信息,接收应用层的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到所述主缓存的对应位置。
所述低速存储设备为磁盘,所述***还包括,数据分布模块,用于接收所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个磁道的相邻扇区。
所述负载分析模块进一步用于接收应用层的输入输出请求,以收集到达所述***的应用负载;并对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
所述负载分析模块在对预设时长内的应用负载进行挖掘,获取所述数据块关系信息时进一步用于采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息的集合。
所述数据预取模块进一步用于在应用层的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
所述缓存替换模块进一步用于当应用层的一个输入输出请求到达时,根据所述输入输出请求的地址在所述主缓存中查找请求对应数据块,如果查找到,则将对应的数据块返回所述应用;如果未查找到对应的数据块,则从所述预取缓存或者通过所述数据分布模块从磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
所述缓存替换模块在根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置时进一步用于将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请求总数量的比例作为被预取的概率,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;如果所述概率小于第二阀值,则将所述数据块存放到最近最多使用端;如果所述概率在所述第一阀值和所述第二阀值之间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;所述第一阀值大于所述第二阀值。
所述数据分布模块还用于对于在多个数据块关系中存在的数据块,在磁盘上存放所述数据块多个副本;当接收到所述缓存替换模块或所述数据预取模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
所述负载分析模块还用于在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
本发明还公开了一种虚拟存储方法,所述方法包括:
步骤100,收集到达的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息;
步骤200,接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;
步骤300,接收所述数据块关系信息,接收应用层的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
所述低速存储设备为磁盘,
所述方法还包括:
步骤400,接收所述数据块关系信息,将一个数据块关系的数据块存放到磁盘上同一个磁道的相邻扇区。
所述步骤100进一步为,
步骤110,接收应用层的输入输出请求,以收集到达的应用负载;
步骤120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
所述步骤120进一步为,
步骤121,采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息的集合。
所述步骤200进一步为,
步骤210,在应用的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
所述步骤300进一步为,
步骤310,当应用的一个输入输出请求到达时,根据所述输入输出请求的地址在缓存中查找,如果查找到,则将对应的数据块返回所述应用;如果未查找到对应的数据块,则执行步骤320;
步骤320,从预取缓存或者从磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
所述步骤320进一步为,
步骤321,将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请求总数量的比例作为被预取的概率;
步骤322,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;
步骤323,如果所述概率小于第二阀值,则将所述数据块存放到最近最多使用端;
步骤324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;
所述第一阀值大于所述第二阀值。
所述步骤400还包括,
步骤410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述数据块多个副本;
步骤420,当接收到所述缓存替换模块或所述数据预取模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
所述步骤100还包括,
步骤130,在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
本发明有益效果在于,通过分析获得应用负载数据块关系信息,并根据该关系信息进行预取和存储,能够在复杂应用环境下自适应根据应用负载的变化对整条数据通路进行性能优化,提升存储***的性能;同时无需任何上层应用或者人为对存储***的设置,也无需对应用***进行任何假设,具有良好的通用性、透明性和可扩展性。
附图说明
图1是本发明虚拟存储***的结构图;
图2是本发明虚拟存储***的一个具体实施方式结构图;
图3是频繁模式树结构图;
图4是有效模式示意图;
图5是请求干涉噪音示意图;
图6是请求顺序噪音示意图;
图7是请求缺失噪音示意图;
图8是通过精确挖掘方法输出的频繁模式树结构图;
图9是本发明虚拟存储方法的流程图。
具体实施方式
下面结合附图,对本发明做进一步的详细描述。
图1是本发明***的结构图,本发明***包括:负载分析模块100、数据预取模块200、缓存替换模块300、数据分布模块400、主缓存500和预取缓存600。
数据块关系为应用的数据语义模式在存储***中的表现。在存储***中,多个数据块之间由于数据语义相关导致被相继访问,称这些数据块之间存在数据块关系。相比简单访问特征,数据块关系具有更多的数据块访问信息和更好的稳定性,而且不需要对数据块的时空分布做任何假设。
负载分析模块100,用于收集到达所述***的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息。
数据预取模块200,用于接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存600。
缓存替换模块300,用于接收所述数据块关系信息,接收应用的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存500的对应位置。
所述低速存储设备为磁盘,所述***还包括,数据分布模块400,用于接收所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个磁道的相邻扇区。
负载分析模块100与数据预取模块200、缓存替换模块300和数据分布模块400连接,对输入的数据流,将负载分析模块100的输出作为数据预取模块200、缓存替换模块300和数据分布模块400的输入。数据预取模块200和数据分布模块400连接,对输入的数据流,将数据预取模块200的输出作为数据分布模块400的输入;对输出的数据流,将数据分布模块400的输出作为数据预取模块200的输入。缓存替换模块300和数据分布模块400连接,对输入的数据流,将缓存替换模块300的输出作为数据分布模块400的输入;对输出的数据流,将数据分布模块400的输出作为缓存替换模块300的输入。
数据分布模块400在输入输出的情况下,负责将访问的逻辑地址映射为实际存放数据块的磁盘物理地址。负载分析模块100在每一个分析周期,对负载进行分析之后,数据分布模块400根据分析得到的数据块关系,将同一数据块关系中出现的数据块在磁盘上存放在相邻的位置。
图2为本发明的***具体实施方式的结构。
虚拟存储***包括负载分析模块100、数据预取模块200、缓存替换模块300和数据分布模块400、主缓存500和预取缓存600。应用请求通过标准块设备接口接入***的负载分析模块100、数据预取模块200和缓存替换模块300。
负载分析模块100,用于分析应用负载中的数据块关系信息。
负载分析模块100的输入为上层应用的I/O请求(输入输出请求),输出为数据块关系信息集合,例如一个频繁模式树(FP-Tree)。
例如,对于输入请求序列
S={abcdef…abcdef…abcdef…acbdef…abcdf…agd…agd};
输出的频繁模式树如图3所示。模式树中每一条从根结点到叶子结点的路径均表示一个频繁访问模式,在图3中,{a,b,c1,d1,e1,f1}为一个频繁访问模式,每个结点表示该模式上对应数据块的请求序列,如a,c1都为一个结点。从根结点到任意一个结点的路径为一个模式前缀,简称前缀,如{a,b,c1,d1}为一个前缀。
负载分析模块100收集到达存储***的应用负载,每隔一段预设时间便对之前一段时间内的应用负载进行挖掘,获取数据块关系信息。
现有技术中进行挖掘的方法包含多种,例如,深度优先搜索的频繁访问序列挖掘方法,Clospan方法。
Clospan方法通过数据库投影技术,将序列的后缀投影成一系列投影数据库,在这些投影数据库中找出局部的频繁模式,生成频繁模式树。Clospan对模式的后缀进行有条件的裁剪,在一定程度上避免了对重复分支的搜索。
在一个较佳的具体实施方式中,采用支持噪音过滤的数据块关系挖掘方法。
设D={b1,b2,…,bn}为所有数据块集合,访问流的源请求序列S={1,2,…m}。设i∈S,使得b(i)表示S第i个请求访问的数据块,b(i)∈D。设S的子序列s={r1,r2,…rl},其中1≤l≤m,1≤r1<r2…rl≤m且rk+1-rk≤max_step,其中max_step为给定的最大请求间隔。设B(s)={b(r1),b(r2),…,b(rl)}为一个有序列表。
最大请求间隔为模式序列相邻请求间的请求间隔临界值。
两个相距很远的请求,即使在源序列中出现多次也不能表现它们存在着相关性,也就无法用于指导优化。此外,由于多访问流的聚合,组成模式的请求不一定能连续到达存储***。因此,挖掘方法需要限制模式序列相邻请求间的最大请求间隔。
假设频繁访问序列中两个相邻数据块a,b的到达间隔成指数分布F(x)=1-e-λx,则对任意给定的概率p,存在
使得a出现后,b第一次出现在max_step之前的概率大于等于p。绝大多数情况下两个相关的数据块总出现在一定的间隔内。
频繁访问模式p={s1,s2,…sj},满足s1,s2,…sj为S的子序列,B(s1)=B(s2)=…=B(sj),且支持度sup(p)=j≥min_sup,其中min_sup为给定的最小支持度。
因为在源访问序列中,一个出现次数较少的访问子序列可能是由应用随机产生,通常不会再次重现,因此该子序列所访问的数据块存在相关的可能性不大。定义源序列中相同子序列出现的次数为该子序列的支持度。给定最小支持度,当一个子序列出现的次数不低于最小支持度时,称为一个频繁访问模式。
频繁访问模式挖掘为给定源请求序列S、最小支持度min_sup和最大请求间隔max_step,求频繁访问模式p的集合L。
为了便于表示,下文用B(s)表示s或者s所在的模式p。
由于模式序列访问的数据语义关系具有传递性,现有技术中频繁序列模式挖掘算法中的长模式均由两数据块相关集合扩展而来,对相邻请求间隔的限制,使得长模式能更好地描述数据块相关性。现有技术中频繁序列模式挖掘方法不设置模式序列的间隔,现有技术的C-Miner算法中设置了整个模式序列在访问流中所允许的最大间隔,max_gap。但是max_gap对不同长度的模式挖掘不具有适应性,会截断较长的模式,而在辨识短模式时过大的间隔又会引起大量的冗余搜索,影响挖掘效率。而采用max_step不会影响长模式的挖掘,并且在对短模式进行挖掘时避免了冗余的搜索开销。在较佳实施方式中通过设置最大请求间隔解决上述问题。
在生成频繁模式树的过程中,采用模糊挖掘方法,对已经挖掘得到的模式树结点请求集合的结点进行合并,减少噪音产生的冗余结点和模式。
现有技术中存在多种模糊挖掘方法,例如CloSpan对前缀具有包含关系的后缀分枝进行合并。ApproxMAP先对序列数据库中的序列进行聚类,然后在每一个类中分别进行挖掘,通过分治的方法减少挖掘的规模。TSP则只对前k个最频繁的序列模式进行挖掘。这些方法可以获得较好的挖掘性能,但模式信息的损失也较大。Mining Long Sequential Patterns in a NoisyEnvironment.,Proceedings of the 2002 ACM SIGMOD internationalconference on Management of data,Madison,Wisconsin,2002,406-417中提出了在噪音环境下进行高效挖掘的方法,它通过计算候选序列集合的兼容性矩阵,来评估两个序列可以连接的可能性,从而减少偶尔出现的噪音的影响。这种方法同样需要较大的空间存放矩阵。Mining compressedfrequent-pattern sets.Proceedings of the 31st internationalconference on Very large data bases,Trondheim,Norway,2005,709-720中比较两个模式及其交易列表,如果模式之间存在包含关系并且交易列表相似则可以对模式进行聚类。
在一个较佳的具体实施方式ClosSpan中,采用如下方法进行合并。
理想情况下,如果访问序列中的随机请求不产生偶然出现的模式,且应用发出的符合数据语义的请求序列均能在访问流中完整连续的出现,那么现有技术的挖掘方法产生的模式树,每一条从根结点到叶子结点的路径都表示一个完整独立的模式,因此可以高效地对其进行挖掘,完整体现数据语义相关的频繁访问模式称为有效模式,如图4所示。
本发明根据产生的原因和对挖掘的影响,噪音可以被分为以下四种类型:
请求间隔噪音,应用流的聚合使有效模式的请求间隔增大。由于挖掘算法需要限制模式序列的最大请求间隔,因此请求间隔的增大会导致有效模式被截断甚至淹没,这类噪音称为请求间隔噪音。例如,有效模式{abcde}被请求间隔噪音淹没,而只能挖掘得到数量更多的有效模式片段{ab}、{abcd}和{cde}。
请求干涉噪音,同一个数据块往往存在多种访问语义,可能在多个模式中出现或者被随机地访问到。对这些数据块的访问会对模式挖掘产生干扰。如图5所示,有效模式序列{acde}和{abcd}相互干涉,产生了伪模式{ad}。这类伪模式大多是正常模式的子模式。并且,伪模式{ad}还会作为候选前缀被继续扩展,导致冗余的搜索。
请求顺序噪音,一些数据块之间具有非顺序敏感的数据块关系。有的应用不限制相关数据块的访问顺序,例如数据库的一个表可以以不同的索引方式被遍历。还有一些应用,符合语义相关的数据块访问由多个结点协作完成,使得数据块访问请求的到达顺序随机产生。对相同数据块进行不同顺序的访问,会使挖掘算法认为存在多种频繁访问模式。如图6所示,对数据块b和c的请求随机到达,产生了相似的模式序列{abcde}、{abde}和{acde}。
请求缺失噪音:应用***的缓存对具有时间局部性的数据块请求进行过滤,同时也过滤掉有效模式序列中的一些请求,导致同一数据块关系产生不同的访问序列。如图7所示,由于对数据块c的请求被缓存命中而没有在第一个序列片断中出现,因此在挖掘得到有效模式{abcde}之外,还产生了伪模式{abde}。这类因个别元素缺失而产生相似模式的噪音,称为请求缺失噪音。
由模式挖掘过程可知,请求顺序噪音和请求干涉噪音对同一数据块关系产生不同的模式前缀,但这些模式前缀具有相同的后缀分支。由于顺序噪音产生的模式前缀序列之间不具有包含关系,因此无法通过Clospan进行分支裁剪。
较佳的具体实施方式中,允许对任意前缀的后缀分支进行合并,称为全局分支裁剪。
全局分支裁剪在产生一个新的前缀p时,如果前缀集合中存在p′具有与p相同的后缀分支,则裁剪p的后缀。
全局分支裁剪不仅可以过滤请求顺序噪音产生的伪模式,由于它裁剪所有相同的后缀分支,因此也可以有效过滤请求干涉噪音产生的伪模式。
对相同后缀分支的判断需要保存并比较每个候选前缀的序列集合,增加了挖掘的时空开销。为了减少后缀分支的比较开销,全局分支裁剪比较每个前缀的尾结点请求集合,使用位图进行优化。
负载分析模块100为频繁模式树的每个结点维护一个位图(bitmap)来表示该结点的请求集合,其中每一位按顺序表示请求序列中出现的对该结点代表数据块的访问请求;1表示该请求出现在该结点的请求集合中,0表示该请求没有出现在该结点的请求集合中。通过对位图的比较和聚类可以判断是否对结点进行合并,从而进一步减少分析所需要的时间和空间开销。
请求缺失噪音是产生伪模式簇的重要原因,最坏情况下,n个请求缺失可以使一个有效模式产生规模为2n的伪模式。例如序列
S2={abcdef..abcdef..abcdef..abcdef..acdef}
挖掘得到sup(abcdef)=4,sup(acdef)=5。由图8所示,由于一个子序列缺少对数据块b的请求,导致结点c1和c2的请求集合不同,产生了两个搜索分支。与大多数请求缺失的情况一样,缺少访问数据块b的序列个数远小于完整序列的个数,因此c1和c2的请求集合近似,并且后缀分支也近似。
进一步,在全局分支裁剪的基础上进行分支聚类算法。对相似的后缀分支进行裁剪,称为分支聚类。
如果两个前缀p和p′的尾结点请求集合T(p)≈T(p′),则挖掘得到的后缀模式分支也近似。Z-Miner方法采用经过修改的K-medoids方法,根据尾结点请求集合对模式前缀进行聚类,被聚类到一个簇的模式前缀具有相似的后缀分支,这些后缀分支将被裁剪。
首先,两个模式的尾结点请求集合的相似程度为|T(p)∩T(p′)|/|T(p)∪T(p′)|。Z-Miner方法用位图Bm(p)来表示p的向量,定义Count(Bm(p))为Bm(p)中1的个数。规定p和p′的距离为:
其次,由于请求集合的聚类对距离敏感,大的距离会导致对两个差异很大的后缀分支进行了合并。因此Z-Miner方法限制同一簇中向量离中心的最大距离为聚类距离,max_dist。
最后,在新模式加入到一个簇时,不改变该簇的中心,以免引起漂移。对不能合并到其他簇的模式p建立一个新簇,将p加入该簇并将Bm(p)作为该簇的中心。为了提高挖掘的效率,当一个模式前缀可以被聚类到多个簇时,选择加入第一个被找到的簇。
实施例如下所述。
Z-Miner方法,Z-Miher(S,max_step,min_sup,L)
输入:访问流源序列S,最小支持度min_sup,最大请求间隔max_step;
输出:模式集合L;
获取S中所有出现的数据块集合D;
对每个数据块b∈D do
将Qb加入L;
MINING(Qb,S,min_sup,max_step,L);
end do
其中,Qb为访问序列S中数据块b的请求全集Qb={i|i∈S且b(i)=b},MINING如下所述。
MINING(p,S,min_sup,max_step,L)
输入:模式前缀p,访问流序列S,最小支持度min_sup,最大请求间隔max_step;
输出:模式集合L;
对所有在S上出现在T(p)之后max_step间隔内的请求,按数据块分别产生请求集合qb1,qb2...;
对每个满足|qb|≥min_sup的数据块b do
MATCH(qb,L,p′);
if
将p指向p′的尾结点;
else
将p按qb扩展为pe;
将pe加入L;
MINING(pe,S,min_sup,max_step,L);
end if
end do
其中,Match(qb,max_dist,L,p)如下所述。
输入:尾结点请求集合qb,聚类距离max_dist,模式集合L;
输出:模式前缀p;
if存在p′∈L,满足Distance(qb,p′)≤max_dist;
p<-p′;
end if。
数据预取模块200,用于管理预取缓存600,接收负载分析模块100分析得到的数据块关系信息,监控当前到达的应用负载流,并根据数据块关系信息预测将被应用程序访问的数据,将该数据预取到预取缓存600中。
数据预取模块200的输入为负载分析模块100输出的数据块关系信息和当前上层应用的I/O请求,输出为进行预取的I/O请求,转发给数据分布模块400。
数据预取模块200在应用一个I/O请求到达时,将当前应用负载中出现的请求序列同频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在频繁模式树中的后继数据块进行预取。如果该前缀的后继路径在若干个数据副本集合中,数据预取部件选择历史上在该前缀后出现概率最大的数据副本集合进行预取。
缓存替换部件300,用于管理存储***的主缓存500,接收所述负载分析模块分析得到的数据块关系信息,对不同特征信息的数据采用不同的缓存策略,提高缓存的命中率。
缓存替换模块300的输入为应用发送来的I/O请求和负载分析模块100输出的数据块关系信息,输出为对预取缓存600和数据分布模块400的I/O请求。
当应用的一个I/O请求到达缓存替换模块时,根据I/O请求的地址在缓存中查找请求对应数据块,如果查找到对应的数据块则返回给该应用;如果没有查找到对应的数据块,则从预取缓存600或者通过数据分布模块400从磁盘中读入该数据块;同时根据被访问数据块的数据块关系信息在主缓存500中存放该数据块。
在另一较佳实施方式中,读取对应数据时,判断对应数据是否在主缓存中,如果是,则从主缓存中读取所述对应数据;如果不存在,则判断对应数据是否在预取缓存,如果是则从预取缓存中读取所述对应数据,如果不在预取缓存中,则从磁盘中读取对应数据。
根据数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到对应位置。将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占该数据块请求总数量的比例作为被预取的概率。
缓存替换模块300将数据块根据数据块关系信息分为通常可预取数据块、通常不可预取数据块和部分可预取数据块。
如果概率超过第一阀值,则该数据块为通常可预取数据块,通常可以被预取;
如果所述概率小于第二阀值,则该数据块为通常不能被预取数据块,通常不能被预取;
如果所述概率在第一阀值和第二阀值之间,则该数据块为部分可预取数据块。
缓存替换模块300将通常可预取数据块放置到LRU端(最近最少使用端),将通常不可预取数据块放置到MRU端(最近最多使用端);对部分可预取数据块,如果当前对该数据块的请求出现在符合数据块关系的请求序列的前缀中,则被放置到LRU端,否则放置到MRU端。
数据分布模块400,管理数据在磁盘中的映射关系,接收所述负载分析模块分析得到的数据块关系信息,对数据进行迁移和重映射,或者使具有数据块关系而被连续访问的数据被连续存放在磁盘的相邻位置上。
数据分布模块400的输入为负载分析模块100输出的数据块关系信息、数据预取模块200和缓存替换模块300输出的I/O请求。
数据分布模块400根据数据块关系信息,负责在***运行过程中进行数据迁移和资源的重映射,使一个数据块关系的数据块,数据副本集合,在磁盘上顺序存放。如果一个数据块在多个数据块关系中,则在磁盘上存在多个副本。当接收到I/O请求时,数据分布模块选择距离磁头最近的数据副本进行访问。
本发明的虚拟设备***提供统一的数据块关系语义,将数据通路的管理分为数据预取、缓存替换和数据分布功能,提高数据通路的带宽利用率,降低访问延迟。
本发明的虚拟存储方法流程如图9所示。
步骤S100,收集到达的应用负载,分析出所述应用负载的数据块关系信息,发送所述数据块关系信息。
所述步骤S100进一步为,
步骤S110,接收应用层的输入输出请求,以收集到达的应用负载;
步骤S120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
例如预设时长为24小时,则在每天的0点时刻对前一天的应用负载进行挖掘。
较佳的,步骤S120为采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息的集合。
进一步,在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
步骤S200,接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,将所述数据预取到预取缓存。
较佳的,在应用的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
步骤S300,接收所述数据块关系信息,接收应用的输入输出请求,在主缓存、所述预取缓存和所述磁盘中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
较佳的,步骤S300进一步为,
步骤S310,当应用的一个输入输出请求到达时,根据所述输入输出请求的地址在缓存中查找请求对以数据块,如果查找到,则将对应的数据块返回所述应用;如果未查找到对应的数据块,则执行步骤S320;
步骤S320,从预取缓存或者磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
进一步,所述步骤S320为,
步骤S321,将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请求总数量的比例作为被预取的概率;
步骤S322,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;
步骤S323,如果所述概率小于第二阀值,则将所述数据块存放到最近最多使用端;
步骤S324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;
所述第一阀值大于所述第二阀值。
较佳的,方法还包括:
步骤S400,接收所述数据块关系信息,将一个数据块关系的数据块在磁盘上顺序存放。
较佳的,所述步骤S400还包括,
步骤S410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述数据块多个副本;
步骤S420,当接收到所述缓存替换模块或所述数据预取模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
本领域的技术人员在不脱离权利要求书确定的本发明的精神和范围的条件下,还可以对以上内容进行各种各样的修改。因此本发明的范围并不仅限于以上的说明,而是由权利要求书的范围来确定的。
Claims (18)
1.一种虚拟存储***,所述***包括主缓存和预取缓存,其特征在于,所述***还包括:
负载分析模块,用于收集到达所述***的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息;
数据预取模块,用于接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;
缓存替换模块,用于接收所述数据块关系信息,接收应用层的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到所述主缓存的对应位置。
2.如权利要求1所述的虚拟存储***,其特征在于,
所述低速存储设备为磁盘,所述***还包括,数据分布模块,用于接收所述数据块关系信息,将同一数据块关系的数据块存放到磁盘上同一个磁道的相邻扇区。
3.如权利要求2所述的虚拟存储***,其特征在于,
所述负载分析模块进一步用于接收应用层的输入输出请求,以收集到达所述***的应用负载;并对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
4.如权利要求3所述的虚拟存储***,其特征在于,
所述负载分析模块在对预设时长内的应用负载进行挖掘,获取所述数据块关系信息时进一步用于采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息的集合。
5.如权利要求4所述的虚拟存储***,其特征在于,
所述数据预取模块进一步用于在应用层的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
6.如权利要求4所述的虚拟存储***,其特征在于,
所述缓存替换模块进一步用于当应用层的一个输入输出请求到达时,根据所述输入输出请求的地址在所述主缓存中查找请求对应数据块,如果查找到,则将对应的数据块返回所述应用;如果未查找到对应的数据块,则从所述预取缓存或者通过所述数据分布模块从磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
7.如权利要求6所述的虚拟存储***,其特征在于,
所述缓存替换模块在根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置时进一步用于将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请求总数量的比例作为被预取的概率,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;如果所述概率小于第二阀值,则将所述数据块存放到最近最多使用端;如果所述概率在所述第一阀值和所述第二阀值之间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;所述第一阀值大于所述第二阀值。
8.如权利要求4所述的虚拟存储***,其特征在于,
所述数据分布模块还用于对于在多个数据块关系中存在的数据块,在磁盘上存放所述数据块多个副本;当接收到所述缓存替换模块或所述数据预取模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
9.如权利要求4所述的虚拟存储***,其特征在于,
所述负载分析模块还用于在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
10.一种虚拟存储方法,其特征在于,所述方法包括:
步骤100,收集到达的应用负载,分析得出所述应用负载的数据块关系信息,发送所述数据块关系信息;
步骤200,接收所述数据块关系信息,根据所述数据块关系信息预测将被应用程序访问的数据,该数据为待访问的数据,将所述待访问的数据从低速存储设备预取到预取缓存;
步骤300,接收所述数据块关系信息,接收应用层的输入输出请求,在主缓存、所述预取缓存和所述低速存储设备中查找并读取对应数据,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
11.如权利要求10所述的虚拟存储方法,其特征在于,
所述低速存储设备为磁盘,
所述方法还包括:
步骤400,接收所述数据块关系信息,将一个数据块关系的数据块存放到磁盘上同一个磁道的相邻扇区。
12.如权利要求11所述的虚拟存储方法,其特征在于,
所述步骤100进一步为,
步骤110,接收应用层的输入输出请求,以收集到达的应用负载;
步骤120,对预设时长内的应用负载进行挖掘,获取所述数据块关系信息。
13.如权利要求12所述的虚拟存储方法,其特征在于,
所述步骤120进一步为,
步骤121,采用支持噪音过滤的数据块关系挖掘方法对预设时长内的应用负载进行挖掘,生成频繁模式树,所述频繁模式树为所述数据块关系信息的集合。
14.如权利要求13所述的虚拟存储方法,其特征在于,
所述步骤200进一步为,
步骤210,在应用的一个输入输出请求到达时,将当前应用负载中出现的请求序列和频繁模式树中的所有前缀进行匹配,对同所述请求序列相同的前缀在所述频繁模式树中的后继数据块进行预取。
15.如权利要求13所述的虚拟存储方法,其特征在于,
所述步骤300进一步为,
步骤310,当应用的一个输入输出请求到达时,根据所述输入输出请求的地址在缓存中查找,如果查找到,则将对应的数据块返回所述应用;如果未查找到对应的数据块,则执行步骤320;
步骤320,从预取缓存或者从磁盘中读入对应数据块,并根据所述数据块关系信息预测数据块被预取的概率,按所述概率将所述数据块存储到主缓存的对应位置。
16.如权利要求15所述的虚拟存储方法,其特征在于,
所述步骤320进一步为,
步骤321,将访问所述数据块的请求中出现在符合数据块关系的请求序列中的请求的数量占请求总数量的比例作为被预取的概率;
步骤322,如果所述概率超过第一阀值,则将所述数据块存放到最近最少使用端;
步骤323,如果所述概率小于第二阀值,则将所述数据块存放到最近最多使用端;
步骤324,如果所述概率在所述第一阀值和所述第二阀值之间,则判断当前对所述数据块的请求是否出现在符合数据块关系的请求序列的前缀中,如果是,则被存放到最近最少使用端,否则,存放到最近最多使用端;
所述第一阀值大于所述第二阀值。
17.如权利要求13所述的虚拟存储方法,其特征在于,
所述步骤400还包括,
步骤410,对于在多个数据块关系中存在的数据块,在磁盘上存放所述数据块多个副本;
步骤420,当接收到所述缓存替换模块或所述数据预取模块发送的对所述数据块的输入输出请求时,选择距离磁头最近的副本进行访问。
18.如权利要求13所述的虚拟存储方法,其特征在于,
所述步骤100还包括,
步骤130,在生成频繁模式树时,对所述频繁模式树中具有相同或满足相似条件的请求集合的结点进行合并。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100891823A CN101630291B (zh) | 2009-08-03 | 2009-08-03 | 虚拟存储***和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2009100891823A CN101630291B (zh) | 2009-08-03 | 2009-08-03 | 虚拟存储***和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101630291A true CN101630291A (zh) | 2010-01-20 |
CN101630291B CN101630291B (zh) | 2012-11-14 |
Family
ID=41575406
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2009100891823A Expired - Fee Related CN101630291B (zh) | 2009-08-03 | 2009-08-03 | 虚拟存储***和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101630291B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
CN103488638A (zh) * | 2012-06-11 | 2014-01-01 | 北京大学 | 一种结果缓存替换的优化方法 |
CN104156177A (zh) * | 2014-08-12 | 2014-11-19 | 上海众恒信息产业股份有限公司 | 治安违法犯罪人口数据***的缓存替换方法 |
CN107329911A (zh) * | 2017-07-04 | 2017-11-07 | 国网浙江省电力公司信息通信分公司 | 一种基于cp‑abe属性访问机制的缓存替换算法 |
CN107480072A (zh) * | 2017-08-22 | 2017-12-15 | 中南大学 | 基于关联模式的透明计算服务端缓存优化方法及*** |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
WO2019120226A1 (zh) * | 2017-12-21 | 2019-06-27 | 华为技术有限公司 | 数据访问预测方法和装置 |
CN111506778A (zh) * | 2020-04-14 | 2020-08-07 | 中山大学 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
WO2021031408A1 (zh) * | 2019-08-22 | 2021-02-25 | 平安科技(深圳)有限公司 | 缓存数据清理方法、装置、设备及计算机可读存储介质 |
WO2021059198A1 (en) * | 2019-09-27 | 2021-04-01 | Arm Technology (China) Co. LTD | Circuitry and method |
CN113703660A (zh) * | 2020-05-22 | 2021-11-26 | 华为技术有限公司 | 数据预取方法和数据预取装置 |
CN114281269A (zh) * | 2021-12-31 | 2022-04-05 | 中企云链(北京)金融信息服务有限公司 | 数据缓存方法以及装置、存储介质、电子装置 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5305389A (en) * | 1991-08-30 | 1994-04-19 | Digital Equipment Corporation | Predictive cache system |
US7334088B2 (en) * | 2002-12-20 | 2008-02-19 | International Business Machines Corporation | Page descriptors for prefetching and memory management |
CN101266578A (zh) * | 2008-02-22 | 2008-09-17 | 浙江大学 | 基于增量式闭合序列挖掘的高速缓存数据预取方法 |
-
2009
- 2009-08-03 CN CN2009100891823A patent/CN101630291B/zh not_active Expired - Fee Related
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103488638A (zh) * | 2012-06-11 | 2014-01-01 | 北京大学 | 一种结果缓存替换的优化方法 |
CN103488638B (zh) * | 2012-06-11 | 2016-12-07 | 北京大学 | 一种结果缓存替换的优化方法 |
CN103077129A (zh) * | 2012-12-31 | 2013-05-01 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
CN103077129B (zh) * | 2012-12-31 | 2016-07-13 | 上海算芯微电子有限公司 | 信息处理方法与装置 |
CN104156177A (zh) * | 2014-08-12 | 2014-11-19 | 上海众恒信息产业股份有限公司 | 治安违法犯罪人口数据***的缓存替换方法 |
CN107329911B (zh) * | 2017-07-04 | 2020-07-28 | 国网浙江省电力公司信息通信分公司 | 一种基于cp-abe属性访问机制的缓存替换方法 |
CN107329911A (zh) * | 2017-07-04 | 2017-11-07 | 国网浙江省电力公司信息通信分公司 | 一种基于cp‑abe属性访问机制的缓存替换算法 |
CN107480072B (zh) * | 2017-08-22 | 2020-07-10 | 中南大学 | 基于关联模式的透明计算服务端缓存优化方法及*** |
CN107480072A (zh) * | 2017-08-22 | 2017-12-15 | 中南大学 | 基于关联模式的透明计算服务端缓存优化方法及*** |
WO2019120226A1 (zh) * | 2017-12-21 | 2019-06-27 | 华为技术有限公司 | 数据访问预测方法和装置 |
CN109408412A (zh) * | 2018-10-24 | 2019-03-01 | 龙芯中科技术有限公司 | 内存预取控制方法、装置及设备 |
WO2021031408A1 (zh) * | 2019-08-22 | 2021-02-25 | 平安科技(深圳)有限公司 | 缓存数据清理方法、装置、设备及计算机可读存储介质 |
CN114450668A (zh) * | 2019-09-27 | 2022-05-06 | 安谋科技(中国)有限公司 | 电路和方法 |
CN114450668B (zh) * | 2019-09-27 | 2023-10-31 | 安谋科技(中国)有限公司 | 电路和方法 |
WO2021059198A1 (en) * | 2019-09-27 | 2021-04-01 | Arm Technology (China) Co. LTD | Circuitry and method |
US11461101B2 (en) | 2019-09-27 | 2022-10-04 | Arm Technology (China) Co. LTD | Circuitry and method for selectively controlling prefetching of program instructions |
CN111506778B (zh) * | 2020-04-14 | 2023-04-28 | 中山大学 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
CN111506778A (zh) * | 2020-04-14 | 2020-08-07 | 中山大学 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
CN113703660A (zh) * | 2020-05-22 | 2021-11-26 | 华为技术有限公司 | 数据预取方法和数据预取装置 |
CN113703660B (zh) * | 2020-05-22 | 2024-03-19 | 超聚变数字技术有限公司 | 数据预取方法和数据预取装置 |
CN114281269A (zh) * | 2021-12-31 | 2022-04-05 | 中企云链(北京)金融信息服务有限公司 | 数据缓存方法以及装置、存储介质、电子装置 |
CN114281269B (zh) * | 2021-12-31 | 2023-08-15 | 中企云链(北京)金融信息服务有限公司 | 数据缓存方法以及装置、存储介质、电子装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101630291B (zh) | 2012-11-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101630291B (zh) | 虚拟存储***和方法 | |
US7765534B2 (en) | Compiler with cache utilization optimizations | |
Amza et al. | Software DSM protocols that adapt between single writer and multiple writer | |
CN104657286B (zh) | 一种分级存储方法及装置 | |
CN103631730A (zh) | 内存计算的缓存优化方法 | |
CN101611380A (zh) | 推测性吞吐量计算 | |
US9201806B2 (en) | Anticipatorily loading a page of memory | |
CN105302657A (zh) | 一种异常情况分析方法和装置 | |
Dan et al. | Characterization of database access pattern for analytic prediction of buffer hit probability | |
Boissier et al. | Hybrid data layouts for tiered HTAP databases with pareto-optimal data placements | |
CN108509723B (zh) | 基于人工神经网络的LRU Cache预取机制性能收益评估方法 | |
WO2012169102A1 (ja) | データベース性能予測装置及びデータベース予測方法 | |
US20230088638A1 (en) | Adaptive Address Tracking | |
CN102521158B (zh) | 一种实现数据预取的方法及装置 | |
CN101266578A (zh) | 基于增量式闭合序列挖掘的高速缓存数据预取方法 | |
Herodotou | AutoCache: Employing machine learning to automate caching in distributed file systems | |
Viglas | Processing declarative queries through generating imperative code in managed runtimes | |
CN107480072A (zh) | 基于关联模式的透明计算服务端缓存优化方法及*** | |
Carniel et al. | A generic and efficient framework for flash-aware spatial indexing | |
Park et al. | Cell trees: An adaptive synopsis structure for clustering multi-dimensional on-line data streams | |
Wei et al. | A self-tuning client-side metadata prefetching scheme for wide area network file systems | |
Zhang et al. | {SIEVE} is Simpler than {LRU}: an Efficient {Turn-Key} Eviction Algorithm for Web Caches | |
US20050055513A1 (en) | Implementation of a pseudo-LRU algorithm in a partitioned cache | |
CN112799590A (zh) | 一种针对在线主存储重删的差异化缓存方法 | |
Fent et al. | Start—self-tuning adaptive radix tree |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20121114 |
|
CF01 | Termination of patent right due to non-payment of annual fee |