CN111506778B - 一种基于K-Truss图的存储***缓存预取方法、***及介质 - Google Patents
一种基于K-Truss图的存储***缓存预取方法、***及介质 Download PDFInfo
- Publication number
- CN111506778B CN111506778B CN202010290123.9A CN202010290123A CN111506778B CN 111506778 B CN111506778 B CN 111506778B CN 202010290123 A CN202010290123 A CN 202010290123A CN 111506778 B CN111506778 B CN 111506778B
- Authority
- CN
- China
- Prior art keywords
- trus
- data
- graph
- data block
- data request
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0862—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/0223—User address space allocation, e.g. contiguous or non contiguous base addressing
- G06F12/023—Free address space management
- G06F12/0238—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
- G06F12/0246—Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0804—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with main memory updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- 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)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种基于K‑Truss图的存储***缓存预取方法、***及介质,本发明方法步骤包括当***中的数据请求流到达时判断数据请求流的访问模式,如果是顺序模式则预取数据请求流对应的数据块之后的n个顺序块作为预取数据;否则将数据请求流对应的数据块作为查询点查询K‑Truss图得到与查询点匹配的truss结构,获取truss结构中数据块的数据作为预取数据;根据数据请求流对应的数据块更新K‑Truss图;最终将预取数据块预取到主存中。本发明能够提高内存数据块的命中率,充分发挥存储***的性能,能够提高缓存的命中率以及缩短响应时间,减少中央处理器中断等待事件,提高处理器的利用率。
Description
技术领域
本发明属于存储***的性能优化领域,具体涉及一种基于K-Truss图的存储***缓存预取方法、***及介质,用于对存储***数据块进行相关性分析以优化缓存预取。
背景技术
存储器是现代计算机体系中的重要组成部分,如何充分有效地对存储器进行管理,不但影响存储器的性能,而且直接关系到整个计算机***性能。理想情况下存储器的速度应该非常快,能够跟上处理器的速度,并且存储容量大且价格便宜,但目前的存储设备都无法同时满足这三个条件。容量、速度与价格这三个要求是相互矛盾的。解决这个问题的方法是采用多种存储部件构成层次结构。其中最典型的是三级存储模型,最高层是CPU寄存器,中间为主存,最底层为辅存,由于CPU寄存器很少,所以主要考虑的是主存与辅存之间的关系,主存容量小但是速度快,辅存则容量大而速度慢。用户的所有数据都存放在辅存上,主存作为处理器与辅存之间的一个缓冲区,当用户请求数据时都会先在主存中查询是否已有一份拷贝。如果用户每次请求的数据都能够在主存中找到,那么***的IO性能将会得到显著的提高,但是由于主存的容量远远小于辅存的容量,所以特定的时间只有一小部分的数据能够存放在主存中。由于计算机的使用过程中用户处理的数据量是随机而巨大的,所以对主存中存储数据的实时控制对于***的整体性能影响重大。
为了实现主存中数据的有效管理,研究人员尝试使用多种方式来根据用户的历史访问记录预测未来某段时间可能访问的数据,并将这些数据在被访问之前预取到主存中,而当用户真正需要访问这些数据时就能够命中,这种情况下***的性能就会非常高。
在这些方法中,大多数的方法都是在于识别顺序访问模式,因为顺序访问模式只需要根据用户IO请求中的逻辑地址的偏移量来进行识别,算法简单方便。比如OBL(OneBlock Lookahead)及其演化的类似算法,在触发预取时请求数据块时预取出后面的α个数据块,而AMP(Adaptivate Multi-stream Prefetching)则是使用多个队列记录每次访问的地址,等当前访问的地址与之前某个队列中的地址连续时则触发预取操作等等。这在视频、音频等服务器中是十分有效的,因为这些类型服务器中的数据请求流大多是顺序式的,而类似Web应用的访问则是基于链接的分支访问,数据库应用经常需要进行随机访问,顺序预取算法在这种情况下无法发现其中潜在的关联,从而效果不佳甚至失效。
还有一部分的算法则是识别用户请求块之间的复合模式,比如C-miner,是一种离线算法,根据历史用户IO请求记录使用频繁序列挖掘算法挖掘数据块之间的访问模式,然后再进行在线预测。 MMS或者Nexus-like预取模型则是根据***文件之间构成的概率图来产生预取决策,因为需要对整个***的文件之间进行分析,所以占用的空间比较巨大,另外是没有顺序访问预取,所以不具有普适性。因此当前的预取算法大多不能够同时识别顺序访问模式与复合模式,还有部分算法存在不支持实时性以及占用空间巨大的问题。
发明内容
本发明要解决的技术问题:针对现有技术的上述问题,为了提高存储***的性能以及解决缓存预取的问题,提供一种基于K-Truss图的存储***缓存预取方法、***及介质,本发明能够提高内存数据块的命中率,充分发挥存储***的性能,能够提高缓存的命中率以及缩短响应时间,减少中央处理器中断等待事件,提高处理器的利用率。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于K-Truss图的存储***缓存预取方法,实施步骤包括:
1)当***中的数据请求流到达时,判断数据请求流的访问模式是否为顺序模式,如果是顺序模式则跳转执行步骤2);否则跳转执行步骤3);
2)预取数据请求流对应的数据块之后的n个顺序块作为预取数据,跳转执行步骤4);
3)将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构,获取truss结构中数据块的数据作为预取数据;根据数据请求流对应的数据块更新K-Truss图;
4)将预取数据块预取到主存中,结束并退出。
可选地,所述K-Truss图为由节点和连边构成的无向图,其中每一个节点表示一个数据块,每一个连边表示其所连的节点之间存在顺序关联。
可选地,步骤3)中将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构的详细步骤包括:将数据请求流对应的数据块作为查询点,通过K-Truss查询算法将K-Truss图中包含该数据块的紧密度系数k的值最大的truss结构取出。
可选地,步骤3)中根据数据请求流对应的数据块更新K-Truss图的详细步骤包括:
A1)将数据请求流对应的数据块和历史窗口中的数据块产生组合并更新边组合记录表,所述边组合记录表记录有各个组合出现的次数;
A2)根据边组合记录表判断新产生的组合出现的次数是否超过预设阈值T,如果未超过预设阈值T则结束更新K-Truss图并退出;否则跳转执行步骤A3);
A3)将新产生的组合***K-Truss图中;
A4)将数据请求流对应的数据块加入历史窗口中。
可选地,步骤A1)中产生的组合形式为{
pre,
next},其中
pre,
next均为数据块地址,
next表示数据请求流对应的数据块的地址,
pre表示历史窗口中
next对应的上一个数据块的地址。
可选地,步骤A3)的详细步骤包括:首先判断新产生的组合的两个数据块是否均已经存在K-Truss图中,如果任一数据块不存在K-Truss图中则在K-Truss图中新增对应的节点;然后判断新产生的组合的两个数据块在K-Truss图中已经存在连边,如果不存在连边则在K-Truss图中新增对应的连边。
可选地,步骤4)中还包括执行K-Truss图衰减的步骤,详细步骤包括:计算当前预取数据块的利用率,如果利用率小于第一阈值T1,则生成一组备用的边组合记录表、历史窗口、K-Truss图,且步骤3)中根据数据请求流对应的数据块更新K-Truss图时还一并更新所述新的边组合记录表、历史窗口、K-Truss图,且新的边组合记录表、历史窗口、K-Truss图暂时不提供预取查询的功能;如果利用率小于第二阈值T2,则将备用的边组合记录表、历史窗口、K-Truss图替代正在使用的边组合记录表、历史窗口、K-Truss图以提供预取查询的功能。
此外,本发明还提供一种基于K-Truss图的存储***缓存预取***,包括计算机设备,该计算机设备被编程或配置以执行所述基于K-Truss图的存储***缓存预取方法的步骤。
此外,本发明还提供一种基于K-Truss图的存储***缓存预取***,包括计算机设备,该计算机设备的存储器上存储有被编程或配置以执行所述基于K-Truss图的存储***缓存预取方法的计算机程序。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行所述基于K-Truss图的存储***缓存预取方法的计算机程序。
和现有技术相比,本发明具有下述优点:
1、本发明能够同时识别顺序与复合访问模式,满足在线实时预取的条件,能够根据时间的推移更新预取的结果,而且占用主存空间小,能够提高内存数据块的命中率,充分发挥存储***的性能。本发明实现高效的预取策略能够提高缓存的命中率以及缩短响应时间,减少中央处理器中断等待事件,提高处理器的利用率。
2、本发明能够在对***请求流分析预取的同时,能够从另一个层面发现数据块之间的关联性,为存储***其他方面的优化提供参考依据。
附图说明
图1为本发明实施例方法的流程图。
图2为本发明实施例中数据块根据顺序关系构建的有向图。
图3为图2构成的K-Truss图。
图4为图3所示K-Truss图的分解图。
图5为本发明实施例中K-Truss图衰减的原理示意图。
图6为本发明实施例***的模块示意图。
具体实施方式
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例中所需要使用的附图作简单的介绍,显而易见的,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
如图1所示,本实施例基于K-Truss图的存储***缓存预取方法的实施步骤包括:
1)当***中的数据请求流到达时,判断数据请求流的访问模式是否为顺序模式,如果是顺序模式则跳转执行步骤2)(执行顺序模式);否则跳转执行步骤3)(执行复合模式);
2)预取数据请求流对应的数据块之后的n个顺序块作为预取数据(n的取值可以进行指定最大值),跳转执行步骤4);
3)将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构,获取truss结构中数据块的数据作为预取数据;根据数据请求流对应的数据块更新K-Truss图;
4)将预取数据块预取到主存中,结束并退出。
由于数据流中存在部分数据间访问是顺序访问模式,顺序访问的数据块原本即是相连的,因此对于发现数据块关联性无帮助,所以本实施例中在使用K-Truss算法进行预取数据识别之前还包括采用步骤1)对数据流进行识别与过滤的步骤,只有不满足顺序模式的数据流才会进入步骤3)使用K-Truss算法进行预取数据识别。
K-Truss概念源自建筑领域,后被应用于社区发现以及社区查询问题中检测社交网络中紧密相连的结构。其相较于其他同领域算法优点在于:定义的结构紧密性较好,同时存在多项式时间复杂度的算法。K-Truss所定义的结构是:一个K-Truss结构中每一条边参与构成三角形数量大于等于k - 2,其中k为紧密度系数。
本实施例中,K-Truss图为由节点和连边构成的无向图,其中每一个节点表示一个数据块,每一个连边表示其所连的节点之间存在顺序关联。
一个指定K-Truss图显示的数据块相关性是对特定时间段而言的。另外组合记录表中的组合是具有前后次序的,而K-Truss图是一个无向图,但是这在一定程度上不影响相关性的判定。图2为存在顺序关联的数据块作为节点、顺序关联作为有向边构成的有向图,图3为图2所示有向图对应的K-Truss图,图4为图3的K-Truss图分解后的K-Truss图,其中节点{a, b, c, e, f}所构成的结构是5-truss结构,因为该结构中每一条边都参与构成了3个三角形,以边(a, b)为例,参与构成的三角形有Δabc,Δabe和Δabf。在附图4可以发现b所参与构成的结构有3-truss {b, d, e}以及5-truss{a, b, c, e, f},在附图2中可以看到5-truss对应的数据块间关联性更为密切,因此可以认为紧密度系数k的值越大,关联性越强。
本实施例中,步骤3)中将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构的详细步骤包括:将数据请求流对应的数据块作为查询点,通过K-Truss查询算法(现有方法,本实施例中不涉及K-Truss查询算法的改进)将K-Truss图中包含该数据块的紧密度系数k的值最大的truss结构取出。
如图1所示,本实施例步骤3)中根据数据请求流对应的数据块更新K-Truss图的详细步骤包括:
A1)将数据请求流对应的数据块和历史窗口中的数据块产生组合并更新边组合记录表,所述边组合记录表记录有各个组合出现的次数;本实施例中引入了历史窗口来存储在当前I/O请求数据块之前一定数量的数据块,历史窗口满足FIFO(先进先出)的特性;如当前请求的数据块为a,历史窗口中有数据块为b,则会产生{b,a}的组合,并且更新边组合记录表会将组合{b,a}的记录值加1;
A2)根据边组合记录表判断新产生的组合出现的次数是否超过预设阈值T,如果未超过预设阈值T则结束更新K-Truss图并退出;否则跳转执行步骤A3);
A3)将新产生的组合***K-Truss图中;
A4)将数据请求流对应的数据块加入历史窗口中。
在计算机中用户的数据请求被汇聚成一个类似于队列的IO请求流,请求流中的数据块因此也就具有前后次序,因此可认为相隔较近的数据块之间可能存在一定的联系,本实施例中则将这种联系定义为组合。本实施例中,步骤A1)中产生的组合形式为{
pre,
next},其中
pre,
next均为数据块地址,
next表示数据请求流对应的数据块的地址,
pre表示历史窗口中
next对应的上一个数据块的地址。该组合的意义是当地址为
pre的数据块到达之后,逻辑地址为
next的数据块在未来短时间内也会被访问,每一个组合都有一个对应的计数器,用来表示该组合出现的次数。
本实施例中通过边组合记录表来记录组合出现的次数。当新的请求块到达时,该请求块会与历史窗口中的每个数据块产生组合且组合计数增加1,我们称用来保留所有组合次数的结构为组合记录表,当某个组合的计数大于等于次数阈值T时就将其添加到K-Truss图中并使用更新算法进行更新,可根据需要采用现有的K-Truss更新算法,例如TCP-Index算法或者EquiTruss算法等(本实施例中不涉及K-Truss更新算法的改进)。
参见步骤A1)~A4)可知,本实施例中使用K-Truss算法进行预取数据识别具体是基于历史窗口、边组合记录表以及K-Truss图实现的,通过历史窗口、边组合记录表以及K-Truss图组成的合模式识别器共同完成数据块关联性识别与预取的功能。
步骤A2)中预设阈值T所代表的含义是当两个数据块的组合出现的次数超过一定值时才认为两者之间存在该关系,出现的次数还与另一个因素有关,也就是复合模式中历史窗口的大小,因此我们可以预取之前先抽取一部分***历史请求流进行分析,统计指定历史窗口大小的情况下所有组合出现的次数分布,选择包含一定比例的边所对应的次数作为该阈值的参考值。另外只有第一个复合模式识别器(由历史窗口、边组合记录表以及K-Truss图组成)需要上面的过程,这是因为第二个复合模式识别器在创建的时候,可以根据前一个复合模式识别器中的组合记录表进行调整。
本实施例中,步骤A3)的详细步骤包括:首先判断新产生的组合的两个数据块是否均已经存在K-Truss图中,如果任一数据块不存在K-Truss图中则在K-Truss图中新增对应的节点;然后判断新产生的组合的两个数据块在K-Truss图中已经存在连边,如果不存在连边则在K-Truss图中新增对应的连边。
本实施例中步骤3)基于前面的K-Truss图相关性分析的基础实现了缓存预取方法。当请求块到达时,通过K-Truss查询算法我们可以将包含该数据块的k值最大的truss结构取出,但是由于这个图是一个有向图,同时这个k值最大的结构中可能不存在以该数据块为前缀的边,因此将该预取的数据集改为包含以该点为前缀的边的k值最大truss结构中该点的后缀集合或者以该点为根的有向生成树集合。在附图4中,数据块e参与构成的结构有3-truss {b, d, e}、4-truss{e, f, g, h, i}与5-truss{a, b, c, e, f},通过图2可知在5-truss结构中e数据块不存在出边,因此选择4-truss结构,对应的后缀集合与以e点为根的有向生成树集合都为{f, g, h, i},因此该集合为被预取的数据集。
一方面由于存在次数阈值T以及永无止境的数据流,每种组合的计数最终都会超过阈值T而被添加到K-Truss图中,进而形成一个完全图,无法发现数据块之间的关联性。另一方面由于写操作的存在,数据块信息会被改变等情况导致数据块的关联性发生改变,直接体现数据之间关联性失效的表现就是基于此前的K-Truss图进行预取的数据块被利用率降低,因此需要有衰减K-Truss图的方法。如图1所示,本实施例步骤4)中还包括执行K-Truss图衰减的步骤,详细步骤包括:计算当前预取数据块的利用率,如果利用率小于第一阈值T1,则生成一组备用的边组合记录表、历史窗口、K-Truss图,且步骤3)中根据数据请求流对应的数据块更新K-Truss图时还一并更新所述新的边组合记录表、历史窗口、K-Truss图,且新的边组合记录表、历史窗口、K-Truss图暂时不提供预取查询的功能;如果利用率小于第二阈值T2,则将备用的边组合记录表、历史窗口、K-Truss图替代正在使用的边组合记录表、历史窗口、K-Truss图以提供预取查询的功能。参见上述记载可知,本实施例中定义两个时间点:一个是当K-Truss图预取数据的利用率小于第一阈值T1,一个是K-Truss图预取数据的利用率小于第二阈值T2(T1>T2)。执行K-Truss图衰减的原理如图5所示,时间1表示第一个K-Truss图预取利用率降低到T1,此时创建第二个K-Truss图以及组合记录表,第二个K-Truss图与组合记录表在灰色部分的时间内只记录、存储新的组合,不参与提供预取策略。时间2表示第一个K-Truss图预取利用率降低到T2,丢弃第一个K-Truss图,使用第二个K-Truss图记录、提供预取策略。时间3和时间4表示第二个K-Truss图预取利用率降低到T1和T2,第二个K-Truss图与第三个K-Truss图交替方式与前面相同。从上面的K-Truss图的衰减中可以证明前文中指出的一个指定K-Truss图显示的数据块相关性是对特定时间段而言的观点。第一阈值T1、第二阈值T2所代表含义是一个复合模式识别器的生命周期控制以及两个复合模式识别器之间交替更新的过程。由于步骤A2)中的预设阈值T是一个固定的值,因此随着时间的推移每个组合出现的次数肯定会逐渐超过该阈值。所以需要对复合模式识别器进行更新迭代,而如果是直接使用新的复合模式识别器来替换旧的,那么新的复合模式识别器中的信息是空的,导致一段空档期出现,该段时期复合模式识别器无法提供预取功能。另外第一阈值T1、第二阈值T2的选取可以是第一阈值T1为到复合模式识别器早期预取利用率的0.75时或者其他的值,T2为该复合模式识别器早期预取利用率的0.5时或者其他的值,对应一个比例值,表明旧的复合模式识别器中的信息已经不再适用于当前的请求流。
预取算法中一个关键的问题就是何时进行预取。因为预取数据的过程是需要开销的,在预取数据利用率较差的情况下会带来浪费带宽、增加延迟以及干扰正常的读写操作等问题。在本发明中,顺序模式是在数据流满足顺序模式时激活顺序预取算法从而进行数据块的预取,当预取的效果较差时则增加激活次数阈值,只有达到一定次数满足顺序模式时再进行顺序预取。复合模式是对每一个不满足顺序模式的数据块进行查询,当复合模式预取效果出现利用率不高等情况时,可以对查询结果进行处理,比如预取K-Truss查询结果中部分数据,另外也可以采用与顺序模式相同的方法,使用一个激活阈值,当块的缺失量或者不满足顺序模式的数据块达到该值之后再激活复合模式预取。
综上所述,本实施例基于K-Truss图的存储***缓存预取方法具有下述优点:(1)本实施例基于K-Truss图的存储***缓存预取方法能够同时识别顺序与复合访问模式,满足在线实时预取的条件,能够根据时间的推移更新预取的结果,而且占用主存空间小。而且预设阈值T、第一阈值T1、第二阈值T2三个参数不但可以维持预取算法中复合模式的准确率以及预取数据使用率在较高的水平,而且这三个参数的调整不需要人为进行干预设置。较多的参数使得模型的适用性更强,能够满足各种复杂的数据流识别与预取。高效的预取策略能够提高缓存的命中率以及缩短响应时间,减少中央处理器中断等待事件,提高处理器的利用率。(2) 本实施例基于K-Truss图的存储***缓存预取方法能够在对***请求流分析预取的同时,能够从另一个层面发现数据块之间的关联性,为存储***其他方面的优化提供参考依据。
如图6所示,本实施例还提供一种基于K-Truss图的存储***缓存预取***,包括:
顺序模式识别过滤程序单元,用于当***中的数据请求流到达时,判断数据请求流的访问模式是否为顺序模式,如果是顺序模式则跳转执行顺序模式程序单元;否则跳转执行复合模式程序单元;
顺序模式程序单元,用于预取数据请求流对应的数据块之后的n个顺序块作为预取数据,跳转执行预取程序单元;
复合模式程序单元,用于将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构,获取truss结构中数据块的数据作为预取数据;根据数据请求流对应的数据块更新K-Truss图;
预取程序单元,用于将预取数据块预取到主存中,结束并退出。
此外,本实施例还提供一种基于K-Truss图的存储***缓存预取***,包括计算机设备,该计算机设备被编程或配置以执行前述基于K-Truss图的存储***缓存预取方法的步骤。
此外,本实施例还提供一种基于K-Truss图的存储***缓存预取***,包括计算机设备,该计算机设备的存储器上存储有被编程或配置以执行前述基于K-Truss图的存储***缓存预取方法的计算机程序。
此外,本实施例还提供一种计算机可读存储介质,该计算机可读存储介质上存储有被编程或配置以执行前述基于K-Truss图的存储***缓存预取方法的计算机程序。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (7)
1.一种基于K-Truss图的存储***缓存预取方法,其特征在于实施步骤包括:
1)当***中的数据请求流到达时,判断数据请求流的访问模式是否为顺序模式,如果是顺序模式则跳转执行步骤2);否则跳转执行步骤3);
2)预取数据请求流对应的数据块之后的n个顺序块作为预取数据,跳转执行步骤4);
3)将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构,获取truss结构中数据块的数据作为预取数据;根据数据请求流对应的数据块更新K-Truss图;
4)将预取数据块预取到主存中,结束并退出;
步骤3)中将数据请求流对应的数据块作为查询点查询K-Truss图得到与查询点匹配的truss结构的详细步骤包括:将数据请求流对应的数据块作为查询点,通过K-Truss查询算法将K-Truss图中包含该数据块的紧密度系数k的值最大的truss结构取出;
步骤3)中根据数据请求流对应的数据块更新K-Truss图的详细步骤包括:A1)将数据请求流对应的数据块和历史窗口中的数据块产生组合并更新边组合记录表,所述边组合记录表记录有各个组合出现的次数;A2)根据边组合记录表判断新产生的组合出现的次数是否超过预设阈值T,如果未超过预设阈值T则结束更新K-Truss图并退出;否则跳转执行步骤A3);A3)将新产生的组合***K-Truss图中;A4)将数据请求流对应的数据块加入历史窗口中。
2.根据权利要求1所述的基于K-Truss图的存储***缓存预取方法,其特征在于,所述K-Truss图为由节点和连边构成的无向图,其中每一个节点表示一个数据块,每一个连边表示其所连的节点之间存在顺序关联。
3.根据权利要求1所述的基于K-Truss图的存储***缓存预取方法,其特征在于,步骤A1)中产生的组合形式为{pre,next},其中pre,next均为数据块地址,next表示数据请求流对应的数据块的地址,pre表示历史窗口中next对应的上一个数据块的地址。
4.根据权利要求1所述的基于K-Truss图的存储***缓存预取方法,其特征在于,步骤A3)的详细步骤包括:首先判断新产生的组合的两个数据块是否均已经存在K-Truss图中,如果任一数据块不存在K-Truss图中则在K-Truss图中新增对应的节点;然后判断新产生的组合的两个数据块在K-Truss图中已经存在连边,如果不存在连边则在K-Truss图中新增对应的连边。
5.根据权利要求1所述的基于K-Truss图的存储***缓存预取方法,其特征在于,步骤4)中还包括执行K-Truss图衰减的步骤,详细步骤包括:计算当前预取数据块的利用率,如果利用率小于第一阈值T1,则生成一组备用的边组合记录表、历史窗口、K-Truss图,且步骤3)中根据数据请求流对应的数据块更新K-Truss图时还一并更新所述新的边组合记录表、历史窗口、K-Truss图,且新的边组合记录表、历史窗口、K-Truss图暂时不提供预取查询的功能;如果利用率小于第二阈值T2,则将备用的边组合记录表、历史窗口、K-Truss图替代正在使用的边组合记录表、历史窗口、K-Truss图以提供预取查询的功能。
6.一种基于K-Truss图的存储***缓存预取***,包括计算机设备,其特征在于,该计算机设备被编程或配置以执行权利要求1~5中任意一项所述基于K-Truss图的存储***缓存预取方法的步骤。
7.一种计算机可读存储介质,其特征在于,该计算机可读存储介质上存储有被编程或配置以执行权利要求1~5中任意一项所述基于K-Truss图的存储***缓存预取方法的计算机程序。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010290123.9A CN111506778B (zh) | 2020-04-14 | 2020-04-14 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
PCT/CN2020/097670 WO2021208238A1 (zh) | 2020-04-14 | 2020-06-23 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
US17/916,033 US11977488B2 (en) | 2020-04-14 | 2020-06-23 | Cache prefetching method and system based on K-Truss graph for storage system, and medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010290123.9A CN111506778B (zh) | 2020-04-14 | 2020-04-14 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111506778A CN111506778A (zh) | 2020-08-07 |
CN111506778B true CN111506778B (zh) | 2023-04-28 |
Family
ID=71869157
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010290123.9A Active CN111506778B (zh) | 2020-04-14 | 2020-04-14 | 一种基于K-Truss图的存储***缓存预取方法、***及介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US11977488B2 (zh) |
CN (1) | CN111506778B (zh) |
WO (1) | WO2021208238A1 (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630291A (zh) * | 2009-08-03 | 2010-01-20 | 中国科学院计算技术研究所 | 虚拟存储***和方法 |
CN102023931A (zh) * | 2010-12-17 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
CN104063330A (zh) * | 2014-06-25 | 2014-09-24 | 华为技术有限公司 | 数据预取方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102111448B (zh) | 2011-01-13 | 2013-04-24 | 华为技术有限公司 | 分布式哈希表dht存储***的数据预取方法、节点和*** |
US20160170873A1 (en) * | 2013-07-18 | 2016-06-16 | Hitachi, Ltd. | Information processing device |
CN106844500A (zh) * | 2016-12-26 | 2017-06-13 | 深圳大学 | 一种k‑core‑truss社区模型及分解、搜索算法 |
GB2566114B (en) * | 2017-09-05 | 2020-12-30 | Advanced Risc Mach Ltd | Prefetching data |
CN107943882A (zh) * | 2017-11-15 | 2018-04-20 | 南京邮电大学 | 基于边扩散性K‑truss分解方法的网络重要节点识别方法 |
US11455304B2 (en) * | 2019-09-20 | 2022-09-27 | Sap Se | Graph-based predictive cache |
-
2020
- 2020-04-14 CN CN202010290123.9A patent/CN111506778B/zh active Active
- 2020-06-23 US US17/916,033 patent/US11977488B2/en active Active
- 2020-06-23 WO PCT/CN2020/097670 patent/WO2021208238A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101630291A (zh) * | 2009-08-03 | 2010-01-20 | 中国科学院计算技术研究所 | 虚拟存储***和方法 |
CN102023931A (zh) * | 2010-12-17 | 2011-04-20 | 曙光信息产业(北京)有限公司 | 一种自适应缓存预取方法 |
CN104063330A (zh) * | 2014-06-25 | 2014-09-24 | 华为技术有限公司 | 数据预取方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
WO2021208238A1 (zh) | 2021-10-21 |
US20230169005A1 (en) | 2023-06-01 |
US11977488B2 (en) | 2024-05-07 |
CN111506778A (zh) | 2020-08-07 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9767140B2 (en) | Deduplicating storage with enhanced frequent-block detection | |
US8732406B1 (en) | Mechanism for determining read-ahead length in a storage system | |
US8229968B2 (en) | Data caching for distributed execution computing | |
US8782629B2 (en) | Associating program execution sequences with performance counter events | |
CN110226158B (zh) | 一种数据预取方法、装置和存储设备 | |
WO2018040167A1 (zh) | 数据缓存方法及装置 | |
CN105279240A (zh) | 客户端起源信息关联感知的元数据预取方法及*** | |
US11620219B2 (en) | Storage drive dependent track removal in a cache for storage | |
US10489074B1 (en) | Access rate prediction in a hybrid storage device | |
US11113195B2 (en) | Method, device and computer program product for cache-based index mapping and data access | |
US9094225B1 (en) | Discovery of short-term and emerging trends in computer network traffic | |
JP2022070218A (ja) | 方法、システム、コンピュータ・プログラム、及びコンピュータ可読ストレージ媒体(積極的なプリフェッチをサポートするための高速キャッシュ追跡) | |
US20170262485A1 (en) | Non-transitory computer-readable recording medium, data management device, and data management method | |
Zhang et al. | SA-LSM: optimize data layout for LSM-tree based storage using survival analysis | |
Zhang et al. | {SIEVE} is Simpler than {LRU}: an Efficient {Turn-Key} Eviction Algorithm for Web Caches | |
CN111506778B (zh) | 一种基于K-Truss图的存储***缓存预取方法、***及介质 | |
US7908268B2 (en) | Predictive database pool preparation | |
WO2012081165A1 (ja) | データベース管理装置及びデータベース管理方法 | |
US11595249B2 (en) | Adaptive time window-based log message deduplication | |
US10503508B2 (en) | Predictive query execution in analytical databases | |
US20100325361A1 (en) | Method for controlling cache | |
US20170097899A1 (en) | Non-transitory computer-readable storage medium, data management device, and data management method | |
CN118069548A (zh) | 一种预取方法、装置、电子设备及可读存储介质 | |
Tao et al. | Mining frequent itemsets in time-varying data streams | |
Chen et al. | HDCat: Effectively identifying hot data in large-scale I/O streams with enhanced temporal locality |
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 | ||
CB03 | Change of inventor or designer information | ||
CB03 | Change of inventor or designer information |
Inventor after: Ma Jia Inventor after: Chen Zhiguang Inventor after: Lu Yutong Inventor before: Ma Jia Inventor before: Chen Zhiguang Inventor before: Lu Yutong Inventor before: Xiao Nong |
|
GR01 | Patent grant | ||
GR01 | Patent grant |