一种基于访问热度的文件预读缓存分配方法及装置制造方法及图纸

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

【技术实现步骤摘要】
一种基于访问热度的文件预读缓存分配方法及装置


[0001]本专利技术属于存储
,具体涉及一种基于访问热度的文件预读缓存分配方法及装置。

技术介绍

[0002]在文件系统领域,预读是指一次读取比预期更多的数据并缓存在内存中,通过设置预读机制,提高存储系统的数据读取效率。具体来说,每次接收到IO请求时,除了获取该IO请求需要的数据外,还会额外获取一部分数据,放置在内存中。这样下一次读取请求达到时,可以直接从内存中获取数据。通过预读,上层应用可以获得更低的延迟,更高的带宽。然而从底层文件系统预读到内存中的数据并不一定会及时的被上层应用访问,当预读的数据没有被及时访问,一方面会造成大量的存储系统资源浪费,另一方面也会由于预读影响正常的IO性能。
[0003]目前的预读算法和机制普遍没有管理缓存的分配,仅根据系统配置的参数进行预读,在系统负载较高或较低时,均无法充分发挥预读缓存的效能,获得最好的系统性能。少数预读算法和机制仅简单的根据文件数量调整预读参数,在不同文件的负载有较大差异时,同样无法充分发挥预读缓存的效能。
[0004]如专利申请号为202110998403.X的中国专利公开了一种文件预读缓存分配方法和装置,方法包括:基于总预读缓存量、并发文件数量、和文件最大缓存量阈值确定现有预读缓存能否满足并发需求;响应于确定现有预读缓存不能满足并发需求而将文件最大缓存量阈值降低到总预读缓存量与并发文件数量之商,并进一步基于最小缓存确定文件最大缓存量阈值能否满足预读需求;响应于确定文件最大缓存量阈值能满足预读需求而为每个文件均提供满足降低过的文件最大缓存量阈值的预读缓存以并发地缓冲读取文件。该方案仅根据文件访问数量进行缓存分配,没有考虑不同文件的访问情况差异,从而难以合理地发挥缓存的效能。
[0005]鉴于以上内容,本申请提出了一种基于访问热度的文件预读缓存分配方法和装置。

技术实现思路

[0006]本专利技术的目的在于针对上述问题,提出一种基于访问热度的文件预读缓存分配方法及装置,可以自适应不同负载情况,提高缓存的命中率和使用效率,进而提升文件系统的访问性能。
[0007]为实现上述目的,本专利技术所采取的技术方案为:
[0008]本专利技术提出的一种基于访问热度的文件预读缓存分配方法,包括如下步骤:
[0009]S1、分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
[0010]S2、判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用
并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
[0011]S3、判断读请求是否满足预读条件,预读条件为连续的读操作,若是,执行步骤S4,否则,结束操作;
[0012]S4、根据统计的读请求信息计算全局的访问热度和每个文件的访问热度;
[0013]S5、计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的比值乘以缓存总体容量;
[0014]S6、判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
[0015]S7、根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,执行步骤S8,否则,直接放入预读缓存中,结束操作;
[0016]S8、判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
[0017]优选地,步骤S1中,分别统计时间窗口内全局的读请求信息和每个文件的读请求信息采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
[0018]优选地,全局的访问热度total_weight计算如下:
[0019]total_weight=a+b;
[0020]每个文件的访问热度file_weght计算如下:
[0021]file_weght=a*file_num/total_num+b*file_size/total_size
[0022]其中,a,b为权重系数,total_num为全局的读取次数,total_size为全局的读取数据量,file_num为文件的读取次数,file_size为文件的读取数据量。
[0023]优选地,步骤S7中,替换预读缓存中的旧数据块为多余的预读数据块采用LRU算法。
[0024]一种基于访问热度的文件预读缓存分配装置,包括:
[0025]统计模块,用于分别统计时间窗口内全局的读请求信息和每个文件的读请求信息,读请求信息包括读取次数和读取数据量;
[0026]第一判断模块,用于判断读请求是否命中预读缓存,若是,标记预读缓存中的对应数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应,否则,读取数据块加入预读缓存,标记该数据块为已使用并将该数据块中读请求指定的数据填入回复消息对读请求进行响应;
[0027]第二判断模块,用于判断读请求是否满足预读条件,预读条件为连续的读操作,若是,触发缓存分配模块,否则,结束操作;
[0028]缓存分配模块,用于根据统计的读请求信息计算全局的访问热度和每个文件的访问热度,并计算各文件的缓存上限,缓存上限为对应文件的访问热度和全局的访问热度的
比值乘以缓存总体容量;
[0029]预读步长计算模块,用于判断对应文件的预读缓存使用量和预设预读步长之和是否大于对应文件的缓存上限,预设预读步长tmp=c*step,若是,设置本次预读步长为上次预读步长,否则,更新本次预读步长为预设预读步长,其中,c为膨胀因子,step为上次预读步长,即上一时间窗口的预读步长,预读步长为数据块的个数;
[0030]命中更新模块,用于根据本次预读步长进行数据块预读形成预读数据块,标记预读数据块为未使用,并判断当前预读缓存的使用量和预读数据块之和是否达到缓存总体容量,若是,将预读数据块放入预读缓存中,并替换预读缓存中的旧数据块为多余的预读数据块,触发第三判断模块,否则,直接放入预读缓存中,结束操作;
[0031]第三判断模块,用于判断替换的旧数据块是否已使用,若是,结束操作,否则,更新旧数据块对应文件的预读步长为step=d*step,d为衰减因子,结束操作。
[0032]优选地,统计模块采用滑动时间窗口方式进行统计,统计信息随时间窗口的滑动进行更新。
本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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.一种基于访问热度的文...

【专利技术属性】
技术研发人员:赵坤肖衍佳王卫伟郭智杰刘骏
申请(专利权)人:中国电子科技集团公司第五十二研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1