CN115203072A - 一种基于访问热度的文件预读缓存分配方法及装置 - Google Patents

一种基于访问热度的文件预读缓存分配方法及装置 Download PDF

Info

Publication number
CN115203072A
CN115203072A CN202210638364.7A CN202210638364A CN115203072A CN 115203072 A CN115203072 A CN 115203072A CN 202210638364 A CN202210638364 A CN 202210638364A CN 115203072 A CN115203072 A CN 115203072A
Authority
CN
China
Prior art keywords
reading
file
cache
read
data block
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.)
Pending
Application number
CN202210638364.7A
Other languages
English (en)
Inventor
赵坤
肖衍佳
王卫伟
郭智杰
刘骏
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
CETC 52 Research Institute
Original Assignee
CETC 52 Research Institute
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by CETC 52 Research Institute filed Critical CETC 52 Research Institute
Priority to CN202210638364.7A priority Critical patent/CN115203072A/zh
Publication of CN115203072A publication Critical patent/CN115203072A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0862Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches with prefetch
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/172Caching, prefetching or hoarding of files
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

本发明公开了一种基于访问热度的文件预读缓存分配方法及装置,方法包括:通过访问热度计算各文件的缓存上限;判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,调整本次预读步长;根据本次预读步长进行数据预读并判断预读缓存是否达到缓存总体容量,进行标记及替换选择;判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长,结束操作。装置包括统计模块、第一判断模块、第二判断模块、缓存分配模块、预读步长计算模块、命中更新模块和第三判断模块,用于执行对应程序。本发明可以自适应不同负载情况,提高缓存的命中率和使用效率,进而提升文件系统的访问性能。

Description

一种基于访问热度的文件预读缓存分配方法及装置
技术领域
本发明属于存储技术领域,具体涉及一种基于访问热度的文件预读缓存分配方法及装置。
背景技术
在文件系统领域,预读是指一次读取比预期更多的数据并缓存在内存中,通过设置预读机制,提高存储系统的数据读取效率。具体来说,每次接收到IO请求时,除了获取该IO请求需要的数据外,还会额外获取一部分数据,放置在内存中。这样下一次读取请求达到时,可以直接从内存中获取数据。通过预读,上层应用可以获得更低的延迟,更高的带宽。然而从底层文件系统预读到内存中的数据并不一定会及时的被上层应用访问,当预读的数据没有被及时访问,一方面会造成大量的存储系统资源浪费,另一方面也会由于预读影响正常的IO性能。
目前的预读算法和机制普遍没有管理缓存的分配,仅根据系统配置的参数进行预读,在系统负载较高或较低时,均无法充分发挥预读缓存的效能,获得最好的系统性能。少数预读算法和机制仅简单的根据文件数量调整预读参数,在不同文件的负载有较大差异时,同样无法充分发挥预读缓存的效能。
如专利申请号为202110998403.X的中国专利公开了一种文件预读缓存分配方法和装置,方法包括:基于总预读缓存量、并发文件数量、和文件最大缓存量阈值确定现有预读缓存能否满足并发需求;响应于确定现有预读缓存不能满足并发需求而将文件最大缓存量阈值降低到总预读缓存量与并发文件数量之商,并进一步基于最小缓存确定文件最大缓存量阈值能否满足预读需求;响应于确定文件最大缓存量阈值能满足预读需求而为每个文件均提供满足降低过的文件最大缓存量阈值的预读缓存以并发地缓冲读取文件。该方案仅根据文件访问数量进行缓存分配,没有考虑不同文件的访问情况差异,从而难以合理地发挥缓存的效能。
鉴于以上内容,本申请提出了一种基于访问热度的文件预读缓存分配方法和装置。
发明内容
本发明的目的在于针对上述问题,提出一种基于访问热度的文件预读缓存分配方法及装置,可以自适应不同负载情况,提高缓存的命中率和使用效率,进而提升文件系统的访问性能。
为实现上述目的,本发明所采取的技术方案为:
本发明提出的一种基于访问热度的文件预读缓存分配方法,包括如下步骤:
S1、分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
S2、判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
S3、判断读请求是否满足预读条件,预读条件为连续的读操作,若是,执行步骤S4,否则,结束操作;
S4、根据统计的读请求信息计算全局的访问热度和每个文件的访问热度;
S5、计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
S6、判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
S7、根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,执行步骤S8,否则,直接放入预读缓存中,结束操作;
S8、判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
优选地,步骤S1中,分别统计时间窗口内全局的读请求信息和每个文件的读请求信息采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
优选地,全局的访问热度total_weight计算如下:
total_weight=a+b;
每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
优选地,步骤S7中,替换预读缓存中的旧数据块为多余的预读数据块采用LRU算法。
一种基于访问热度的文件预读缓存分配装置,包括:
统计模块,用于分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
第一判断模块,用于判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
第二判断模块,用于判断读请求是否满足预读条件,预读条件为连续的读操作,若是,触发缓存分配模块,否则,结束操作;
缓存分配模块,用于根据统计的读请求信息计算全局的访问热度和每个文件的访问热度,并计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
预读步长计算模块,用于判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
命中更新模块,用于根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,触发第三判断模块,否则,直接放入预读缓存中,结束操作;
第三判断模块,用于判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
优选地,统计模块采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
优选地,全局的访问热度total_weight计算如下:
total_weight=a+b;
每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
优选地,命中更新模块采用LRU算法替换预读缓存中的旧数据块为多余的预读数据块。
与现有技术相比,本发明的有益效果为:
本申请根据文件的访问热度调整文件的预读缓存上限,进行缓存分配,并根据替换数据块的使用状态标记调整预读步长,反应更加灵敏,相较于现有技术实现了缓存按需分配,自适应能力强,利用效能高,在不同负载下可自适应调整预读参数,提高缓存的命中率和使用效率,进而提升文件系统的访问性能,适用于高文件并发、低文件并发、文件负载差异大等场景,应用范围广。
附图说明
图1为本发明基于访问热度的文件预读缓存分配方法的流程图;
图2为本发明基于访问热度的文件预读缓存分配装置的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中在本申请的说明书中所使用的术语只是为了描述具体的实施例的目的,不是在于限制本申请。
实施例1:
如图1所示,一种基于访问热度的文件预读缓存分配方法,包括如下步骤:
S1、分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
S2、判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
S3、判断读请求是否满足预读条件,预读条件为连续的读操作,若是,执行步骤S4,否则,结束操作;
S4、根据统计的读请求信息计算全局的访问热度和每个文件的访问热度;
S5、计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
S6、判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
S7、根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,执行步骤S8,否则,直接放入预读缓存中,结束操作;
S8、判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
在一实施例中,步骤S1中,分别统计时间窗口内全局的读请求信息和每个文件的读请求信息采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
在一实施例中,全局的访问热度total_weight计算如下:
total_weight=a+b;
每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
在一实施例中,步骤S7中,替换预读缓存中的旧数据块为多余的预读数据块采用LRU算法。
具体地,本申请基于访问热度的文件预读缓存分配方法执行如下操作:
1)从读请求中提取信息,统计全局的读请求信息和各文件的读请求信息,读请求信息包括读取次数和读取数据量,即主要统计信息包括滑动时间窗口内全局的读取次数total_num、全局的读取数据量total_size、各文件的读取次数file_num和各文件的读取数据量file_size。统计信息随时间窗口的滑动进行更新。
2)根据读请求读取数据。若读请求命中预读缓存,则标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,若没有命中预读缓存,则读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应。
3)根据历史读请求以及当前读请求判断是否满足预读条件,当满足预读条件时对后续数据块进行预读,所述预读条件为连续的读操作(关于此文件的最近若干次读请求数据连续或者为固定间隔均可),若不满足预读条件则结束操作,若满足预读条件则执行步骤4)。
4)根据统计信息加权求和计算全局的访问热度total_weight和每个文件的访问热度file_weight。total_weight=a+b,file_weght=a*file_num/total_num+b*file_size/total_size,其中,a,b为权重系数(例如a为0,b为1时,访问热度仅参考统计的数据量),a,b的取值可根据实际需求调整。
5)根据缓存总体容量cache、文件的访问热度file_weight、全局的访问热度total_weight,计算对应文件可以使用的缓存上限file_max。file_max=cache*file_weight/total_weight。
6)根据文件的缓存上限、已使用缓存容量(预读缓存使用量)和上次预读步长更新本次预读步长。若已使用缓存容量和预设预读步长大于文件缓存上限则不更新仍然为上次预读步长,否则,更新本次预读步长为预设预读步长,预设预读步长tmp=c*step,c为膨胀因子(例如c为2,预读步长每次翻倍),step为上次预读步长,即上一时间窗口的预读步长。预读步长按照一定的比例增加,表示数据块的个数。
7)按照预读步长进行数据块预读形成预读数据块。标记预读数据块为未使用,若当前预读缓存的使用量和预读数据块之和达到缓存总体容量,则需要采用LRU算法将预读缓存中的旧数据块替换为多余的预读数据块,执行步骤8),LRU算法还可替换为现有技术中本领域技术人员熟知的其他算法。例如,当前预读缓存中只有一个空闲位置,但是预读步长为2,有两个预读数据块。在放入第一个预读数据块的时候,直接放入空闲位置。在放入第二个预读数据块的时候,则需要替换掉一个预读缓存中的旧数据块。如果当前预读缓存的使用量和预读数据块之和未达到缓存总体容量,则将预读数据块直接放入预读缓存中,结束操作。
8)若替换的旧数据块标记为未使用,则更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子(例如d为0.5,每次衰减为之前的一半)。若替换的旧数据块标记为已使用,则结束操作。
本申请根据文件的访问热度调整文件的预读缓存上限,进行缓存分配,并根据替换数据块的使用状态标记调整预读步长,反应更加灵敏,相较于现有技术实现了缓存按需分配,自适应能力强,利用效能高,在不同负载下可自适应调整预读参数,提高缓存的命中率和使用效率,进而提升文件系统的访问性能,适用于高文件并发、低文件并发、文件负载差异大等场景,应用范围广。
实施例2:
如图2所示,一种基于访问热度的文件预读缓存分配装置,包括:
统计模块,用于分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
第一判断模块,用于判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
第二判断模块,用于判断读请求是否满足预读条件,预读条件为连续的读操作,若是,触发缓存分配模块,否则,结束操作;
缓存分配模块,用于根据统计的读请求信息计算全局的访问热度和每个文件的访问热度,并计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
预读步长计算模块,用于判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
命中更新模块,用于根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,触发第三判断模块,否则,直接放入预读缓存中,结束操作;
第三判断模块,用于判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
在一实施例中,统计模块采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
在一实施例中,全局的访问热度total_weight计算如下:
total_weight=a+b;
每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
在一实施例中,命中更新模块采用LRU算法替换预读缓存中的旧数据块为多余的预读数据块。
具体地,本申请基于访问热度的文件预读缓存分配装置包括统计模块、第一判断模块、第二判断模块、缓存分配模块、预读步长计算模块、命中更新模块和第三判断模块。其中:
统计模块,对读请求信息进行统计。采用滑动时间窗口的方式对时间窗口内的读操作进行统计,主要统计信息包括读取数据量和读取次数。统计信息随时间窗口的滑动而更新。统计信息包括全局的统计信息和每个文件的统计信息,即滑动时间窗口内全局的读取次数total_num、全局的读取数据量total_size、各文件的读取次数file_num和各文件的读取数据量file_size。
第一判断模块,判断读请求是否命中预读缓存,若读请求命中预读缓存,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,若没有命中预读缓存,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应。
第二判断模块,用于判断读请求是否满足预读条件,根据历史读请求以及当前读请求判断是否满足预读条件,当满足预读条件时对后续数据块进行预读,所述预读条件为连续的读操作(关于此文件的最近若干次读请求数据连续或者为固定间隔均可),若满足预读条件,触发缓存分配模块,否则,结束操作。
缓存分配模块,采用统计信息中的读取数据量和读取次数进行加权求和,计算全局的访问热度和每个文件的访问热度。全局的访问热度total_weight=a+b,每个文件的访问热度file_weght=a*file_num/total_num+b*file_size/total_size,其中,a,b为权重系数(例如a为0,b为1时,访问热度仅参考统计的数据量),a,b的取值可根据实际需求调整。根据缓存总体容量cache、文件的访问热度file_weight、全局的访问热度total_weight,计算对应文件可以使用的缓存上限file_max。file_max=cache*file_weight/total_weigh。
预读步长计算模块,根据热度信息和缓存信息计算预读步长,即将该文件的预读步长加该文件的已使用缓存容量(预读缓存使用量)之和与该文件的缓存上限进行比较,若本次更新完成之后超过了缓存上限,则本次预读步长不更新仍然为上次预读步长,否则,更新本次预读步长为预设预读步长,预设预读步长tmp=c*step,c为膨胀因子(例如c为2,预读步长每次翻倍),step为上次预读步长,即上一时间窗口的预读步长。预读步长按照一定的比例增加,表示数据块的个数。
命中更新模块,根据预读缓存中的数据块状态(是否已使用)更新预读步长。预读过程中会加载预读数据,放入预读缓存。标记预读数据块为未使用,如果当前预读缓存的使用量和预读数据块之和达到缓存总体容量,则需要采用LRU算法将预读缓存中的旧数据块替换为多余的预读数据块,触发第三判断模块,LRU算法还可替换为现有技术中本领域技术人员熟知的其他算法。例如,当前预读缓存中只有一个空闲位置,但是预读步长为2,有两个预读数据块。在放入第一个预读数据块的时候,直接放入空闲位置。在放入第二个预读数据块的时候,则需要替换掉一个预读缓存中的旧数据块。如果当前预读缓存的使用量和预读数据块之和未达到缓存总体容量,则将预读数据块直接放入预读缓存中,结束操作。
第三判断模块,被替换出预读缓存的旧数据块如果没有使用过(未命中),则调整旧数据块对应文件的预读步长为step=d*step,d为衰减因子(例如d为0.5,每次衰减为之前的一半),结束操作,如果命中,则不进行调整,结束操作。
本申请根据文件的访问热度调整文件的预读缓存上限,进行缓存分配,并根据替换数据块的使用状态标记调整预读步长,反应更加灵敏,相较于现有技术实现了缓存按需分配,自适应能力强,利用效能高,在不同负载下可自适应调整预读参数,提高缓存的命中率和使用效率,进而提升文件系统的访问性能,适用于高文件并发、低文件并发、文件负载差异大等场景,应用范围广。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请描述较为具体和详细的实施例,但并不能因此而理解为对申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (8)

1.一种基于访问热度的文件预读缓存分配方法,其特征在于:所述基于访问热度的文件预读缓存分配方法包括如下步骤:
S1、分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,所述读请求信息包括读取次数和读取数据量;
S2、判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
S3、判断读请求是否满足预读条件,所述预读条件为连续的读操作,若是,执行步骤S4,否则,结束操作;
S4、根据统计的读请求信息计算全局的访问热度和每个文件的访问热度;
S5、计算各文件的缓存上限,所述缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
S6、判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,所述预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
S7、根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,执行步骤S8,否则,直接放入预读缓存中,结束操作;
S8、判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
2.如权利要求1所述的基于访问热度的文件预读缓存分配方法,其特征在于:步骤S1中,所述分别统计时间窗口内全局的读请求信息和每个文件的读请求信息采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
3.如权利要求1所述的基于访问热度的文件预读缓存分配方法,其特征在于:
所述全局的访问热度total_weight计算如下:
total_weight=a+b;
所述每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
4.如权利要求1所述的基于访问热度的文件预读缓存分配方法,其特征在于:步骤S7中,所述替换预读缓存中的旧数据块为多余的预读数据块采用LRU算法。
5.一种基于访问热度的文件预读缓存分配装置,其特征在于:所述基于访问热度的文件预读缓存分配装置包括:
统计模块,用于分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,所述读请求信息包括读取次数和读取数据量;
第一判断模块,用于判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
第二判断模块,用于判断读请求是否满足预读条件,所述预读条件为连续的读操作,若是,触发缓存分配模块,否则,结束操作;
缓存分配模块,用于根据统计的读请求信息计算全局的访问热度和每个文件的访问热度,并计算各文件的缓存上限,所述缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
预读步长计算模块,用于判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,所述预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
命中更新模块,用于根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,触发第三判断模块,否则,直接放入预读缓存中,结束操作;
第三判断模块,用于判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
6.如权利要求5所述的基于访问热度的文件预读缓存分配装置,其特征在于:所述统计模块采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
7.如权利要求5所述的基于访问热度的文件预读缓存分配装置,其特征在于:
所述全局的访问热度total_weight计算如下:
total_weight=a+b;
所述每个文件的访问热度file_weght计算如下:
file_weght=a*file_num/total_num+b*file_size/total_size
其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
8.如权利要求5所述的基于访问热度的文件预读缓存分配装置,其特征在于:所述命中更新模块采用LRU算法替换预读缓存中的旧数据块为多余的预读数据块。
CN202210638364.7A 2022-06-07 2022-06-07 一种基于访问热度的文件预读缓存分配方法及装置 Pending CN115203072A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210638364.7A CN115203072A (zh) 2022-06-07 2022-06-07 一种基于访问热度的文件预读缓存分配方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210638364.7A CN115203072A (zh) 2022-06-07 2022-06-07 一种基于访问热度的文件预读缓存分配方法及装置

Publications (1)

Publication Number Publication Date
CN115203072A true CN115203072A (zh) 2022-10-18

Family

ID=83576591

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210638364.7A Pending CN115203072A (zh) 2022-06-07 2022-06-07 一种基于访问热度的文件预读缓存分配方法及装置

Country Status (1)

Country Link
CN (1) CN115203072A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827508A (zh) * 2023-01-09 2023-03-21 苏州浪潮智能科技有限公司 一种数据处理方法、系统、设备以及存储介质

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115827508A (zh) * 2023-01-09 2023-03-21 苏州浪潮智能科技有限公司 一种数据处理方法、系统、设备以及存储介质
CN115827508B (zh) * 2023-01-09 2023-05-09 苏州浪潮智能科技有限公司 一种数据处理方法、系统、设备以及存储介质

Similar Documents

Publication Publication Date Title
EP3414665B1 (en) Profiling cache replacement
US10073787B2 (en) Dynamic powering of cache memory by ways within multiple set groups based on utilization trends
CN110134514B (zh) 基于异构内存的可扩展内存对象存储系统
CN109471875B (zh) 基于缓存数据的热度管理方法、服务器及存储介质
CN108763110B (zh) 一种数据缓存方法及装置
US8447948B1 (en) Dynamic selective cache compression
EP3089039B1 (en) Cache management method and device
EP3388935B1 (en) Cache management method, cache controller and computer system
CN104571954B (zh) 一种数据存储方法及装置
US6098153A (en) Method and a system for determining an appropriate amount of data to cache
CN111858403B (zh) 基于概率对访问频率计数的缓存数据热度管理方法及系统
CN104156323B (zh) 一种高速缓冲存储器的数据块长度自适应读取方法及装置
CN113094392A (zh) 数据缓存的方法和装置
CN115203072A (zh) 一种基于访问热度的文件预读缓存分配方法及装置
CN114153760B (zh) 基于权重的健值存储缓存淘汰方法、系统及存储介质
CN116027982A (zh) 数据处理方法、设备及可读存储介质
CN115509962A (zh) 一种多级缓存管理方法、装置、设备及可读存储介质
CN116662219A (zh) 从存储装置中动态预取数据
CN113742304A (zh) 一种混合云的数据存储方法
CN116467353B (zh) 一种基于lru差异化的自适应调节的缓存方法及系统
CN113835868B (zh) 一种基于反馈和公平队列的服务质量感知的缓存调度方法
CN115454957A (zh) 分布式文件系统客户端及其缓存优化方法
CN116185904A (zh) 一种缓存管理方法、装置、设备及存储介质
CN117156008A (zh) 一种边缘节点的数据缓存方法、系统和可读存储介质
CN118696306A (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