在间歇计算文件系统中可断电感知的NVM重复写减少方法

未命名 08-14 阅读:84 评论:0

在间歇计算文件系统中可断电感知的nvm重复写减少方法
技术领域
1.本发明涉及可间断计算领域(也称间歇计算),特别是涉及到可间断计算文件系统的数据区域的磨损改善方法。所述数据区域的物理介质是非易失性内存。


背景技术:

2.物联网应用在环境监测等领域已经变得越来越普遍,这些应用具有感知、计算和通信等能力。无电池的可间断计算设备使用绿色清洁能源供能,可以摆脱电池的高维护成本,是实现万亿物联网设备愿景的关键因素。然而,从环境中收集能量本身是不稳定的,它会受气候等因素影响。当能量减少时,设备会停止工作,设备将丢失计算的结果。为了解决这个问题,可间断计算设备使用检查点将程序的状态保存到持久性存储器中。一般来说,这些解决方案将处理器的不稳定状态备份到nvm(non-volatile memory)中,以便在重启时可以继续恢复计算。随着可间断计算设备功能日益丰富,需要处理的数据量逐渐变多,本地存储需求增加。因此,设计一个适用于可间断计算的文件系统(icfs)变得越来越重要,目前,仅存在一个针对可间断计算设计的文件系统
‑‑
invmfs,它可以感知到程序状态检查点信号,并维护文件系统中存储状态和程序状态的一致性。文件数据被组织成块进行管理,它通过数据块区域的就地覆盖写技术和文件元数据进行日志记录来保证文件存储的一致性,断电恢复后,只需要把日志区的log cursor回滚到commit记录的位置来丢弃检查点后的数据。它的出现为可间断计算的发展提供了新的可能性。与sram/dram相比,所有流行类型的nvm单元(reram、feram、stt-ram、pcm、nand flash)都具有更小的写入耐力(大约低1000倍)。当写入数据存储单元的次数超过一定写入次数阈值时,单元将失去在不应用电源的情况下保留数据的能力(持久性)。因此,对nvm进行写操作需要严谨,特别地,重复写相同的单元格是不可接受的。
3.然而,由于可间断计算设备能源不稳定,频繁断电会造成对某些数据块严重的重复写现象,使得文件数据存储区域发生严重的磨损。具体原因如下:在可间断计算系统中有大量工作使用检查点机制去保存程序状态的快照,使得电源恢复后程序能继续向前执行。虽然这些方法改善了程序向前推进的程度,但是由于断电的影响,仍会造成检查点后进度的丢失。当断电恢复后,检查点后丢失的进度会重新执行。如果这部分丢失的进度是文件数据的写入,多次的丢失和反复的写入会造成nvm存储介质的严重磨损。对于总共4kb数据的写入,每次写入16b的操作,平均每10次写入,会有一个检查点信号到来。经观察,基于首个icfs(invmfs),在一般断电的场景下,对于检查点后的数据,在下一个检查点到来前,之间写入了2208b数据。写入两个检查点的数据量应该是160b,这使得写入的数据量和写入次数增加了1280%。在高频断电的场景下,在整个文件数据区域,有些数据块区域的写入次数甚至超过了1.37
×
105次,而访问次数少的数据块写入次数只有57次。这大大减少了该存储单元的生命周期。如果检查点设置得太远,情况会变得更糟。


技术实现要素:

4.为了改善icfs中由于断电引起的存储介质磨损问题,本发明的目的是提供一种在高频断电下,减少icfs中数据块区域的重复nvm写的一种在间歇计算文件系统中可断电感知的nvm重复写减少方法,该方法改善了磨损不均衡问题,提升设备使用寿命。
5.实现本发明目的的具体技术方案是:
6.一种在间歇计算文件系统中可断电感知的nvm重复写减少方法,包括:
7.对高频断电的预测:根据icfs日志空间相关数据进行预测,所述相关数据包括日志空间在断电恢复后的回滚游标cursor位置和检查点到来后的提交记录commit信号;监测日志空间中的每一次commit提交都代表一次成功,每一次cursor回滚到提交点的位置都代表着由断电引起的失败;连续失败次数超过阈值则表示写下发请求频繁失败,目前场景为高频断电场景;当连续成功次数超过阈值,则表示目前可间断设备能源稳定,为非高频断电场景;对于阈值的设置,先固定了连续成功次数的阈值,多次调整连续失败的阈值参数,把连续失败的阈值设置为一个定值,连续失败的次数超过定值,判定为高频断电发生,就开启buffer空间;连续成功次数超过阈值,判定为非高频断电,就关闭buffer空间;
8.开启buffer空间后,便把对nvm数据块的写入迁移到buffer中;对于buffer空间的管理如下:
9.buffer空间大小的确定,根据动态buffer方法:
10.ⅰ
)buffer初始大小设置为512b,该大小设置基于在不同的检查点频率下的实验验证,在保证程序在断电的情况下能继续往前执行的合理检查点设置下,该大小设置是充足的;
11.ⅱ
)当buffer开启后,对于buffer空间大小的控制;当commit记录提交后,记录两个数据,一个是上一次文件长度,默认值是-1,一个是被开启的buffer的大小的值;若上一次文件长度是初始值,则只更新上一次文件长度;若不是初始值,则用当前commit到时,当前的文件长度减去上一次记录的文件长度得到buffer所需空间大小;关闭buffer后,数据直接写回nvm;
12.在buffer空间的数据写回策略:每当检查点信号到来后,把buffer空间中的数据,根据写回地址,原子地写回到nvm数据块,这样既能减少无效的nvm重复写入,又能保证数据的持久化;
13.当数据持久化到nvm中,每当nvm数据块写满后,需要更换新的空闲nvm数据块进行写入,对nvm数据块进行磨损均衡处理:维护一个nvm数据块访问信息表,为进一步解决nvm数据块磨损程度不均匀问题,在nvm数据块写满,更换nvm数据块时,基于贪心的方法,每次根据访问信息表选择当前访问次数最小的块进行写入操作;实现磨损均衡。
14.本发明提出的方法,首次对icfs在高频断电场景下对nvm产生的磨损情况进行改善。本发明通过检测高频断电场景,将数据写入sram中的缓存,避免了由于断电引起的nvm数据块磨损严重问题,同时结合低开销的磨损均衡改善机制,改善了磨损不均衡问题,提升设备使用寿命。
附图说明
15.图1为本发明实施例动态buffer大小调整流程图;
16.图2为本发明实施例整体磨损改善流程图。
具体实施方式
17.在高频断电的场景下,在适用于可间断计算的文件系统中会对数据块区域造成严重的磨损,设备寿命严重缩减增加维护成本。本发明建立在一个适用于可间断计算的文件系统的基础之上,对通过写操作迁移进buffer空间和贪心策略的磨损均衡对nvm存储介质磨损进行改善。
18.下面结合附图对本发明作进一步说明。
19.本发明包括:
20.(1)提出了一种感知断电的方法,通过利用icfs中日志空间中的commit记录和log cursor位置在一个位置的频率来预测断电发生的频次,每一次位置的重合认为是一次失败。利用commit记录提交次数去判断高频断电不发生的可能性,每一次成功的commit认为是一次成功。在高频率断电的时候,把写操作迁移到sram中的buffer里,以此来保护寿命本就有限的nvm,改善磨损。在断电事件不频繁的时候,可以把数据直接写入数据块区域。
21.动态变化的buffer,对于buffer空间的大小,在非高频断电下,当日志空间检查点到来后,记录当前文件长度和上一个检查点前文件长度的变化量,用来推测两个检查点之间数据变化规律,以此来估计需要开启buffer的大小。
22.本发明实现了,文件系统对高频断电情况的监测和在此情况下对nvm存储介质磨损的改善,并对写迁移到的空间进行了优化。
23.在可间断设备中nvm的空间容量只有几百kb,在长时间使用下,数据块必然会被重置,并反复的使用。在高频断电场景下,必然会出现不同的数据块磨损程度参差不齐的情况。在每次需要新的数据块进行写入时,采用贪心的策略,每次分配最小访问次数的块,来达到数据块的磨损均衡。
24.实施例
25.参阅图1,是本发明中动态调整buffer空间大小的过程,buffer开启后,从步骤101开始:
26.在步骤102中,把记录commit之前文件长度的变量pre_len初始化为-1,buffer默认开启大小为512b。
27.在步骤103中判断commit是否到来,没到来,则回到步骤103监测。到来,在步骤104中判断pre_len是否为初始值,是初始值,则在步骤106中更新pre_len的值为当前文件长度。如果pre_len不是初始值,则在步骤105中获取当前文件长度,并更新b_len,b_len等于当前文件长度减去pre_len的值。
28.然后在步骤106中更新pre_len的值,再根据b_len决定buffer大小。在步骤107结束。
29.参阅图2,是实施本发明的写操作流程图,从步骤201开始,有以下步骤:
30.在步骤202,管理模块负责监测commit信号,在步骤203中判断commit信号是否到来。
31.当commit信号到来,则代表成功执行。在步骤204中,连续失败执行次数failcount置0,把连续成功次数successcount增加。
32.当commit信号没有到来,在步骤205中,判断日志空间cursor的位置cursor_pos和提交点的位置commit_pos是否一致。不一致回到管理模块,继续监测,一致,则认为失败了。在步骤206中,把连续成功次数successcount置0,failcount增加。
33.在步骤207和步骤208中分别判断连续成功次数、连续失败次数是否大于阈值t。连续成功次数大于阈值2,认为高频断电不发生,在步骤209中把buffer设为关闭状态。连续失败次数大于阈值8,在步骤210中把buffer设为开启状态。
34.在步骤211中判断buffer是否开启。buffer开启后,参见图1中对buffer大小的动态控制。
35.决定好buffer的大小后,并开启buffer后,写操作迁移到sram buffer中,见步骤212和步骤214。
36.若buffer不开启,则把写操作不进行迁移,见步骤213和步骤216。
37.迁移到buffer的写操作,再根据检查点信号的到来写回nvm数据块区,在步骤215判断检查点信号是否到来。否,则继续写入buffer。是,则原子地写回nvm。如果一个数据块写满,在步骤216中判断是否需要新的数据块。是,则在步骤217中进行磨损均衡处理,选取当前访问此时最小的数据块进行写入。否,则直接写入nvm数据块,并在步骤218结束。

技术特征:
1.一种在间歇计算文件系统中可断电感知的nvm重复写减少方法,其特征在于,包括:对高频断电的预测:根据icfs日志空间相关数据进行预测,所述相关数据包括日志空间在断电恢复后的回滚游标cursor位置和检查点到来后的提交记录commit信号;监测日志空间中的每一次commit提交都代表一次成功,每一次cursor回滚到提交点的位置都代表着由断电引起的失败;连续失败次数超过阈值则表示写下发请求频繁失败,目前场景为高频断电场景;当连续成功次数超过阈值,则表示目前可间断设备能源稳定,为非高频断电场景;对于阈值的设置,先固定了连续成功次数的阈值,多次调整连续失败的阈值参数,最后把连续失败的阈值设为一个定值,连续失败的次数超过定值,判定为高频断电发生,就开启buffer空间;连续成功次数超过阈值,判定为非高频断电,就关闭buffer空间;开启buffer空间后,便把对nvm数据块的写入迁移到buffer中;对于buffer空间的管理如下:buffer空间大小的确定,根据动态buffer方法:

)buffer初始大小设置为512b,该大小设置基于在不同的检查点频率下的实验验证,在保证程序在断电的情况下能继续往前执行的合理检查点设置下,该大小设置是充足的;

)当buffer开启后,对于buffer空间大小的控制;当commit记录提交后,记录两个数据,一个是上一次文件长度,默认值是-1,一个是被开启的buffer的大小的值;若上一次文件长度是初始值,则只更新上一次文件长度;若不是初始值,则用当前commit到时,当前的文件长度减去上一次记录的文件长度得到buffer所需空间大小;关闭buffer后,数据直接写回nvm;在buffer空间的数据写回策略:每当检查点信号到来后,把buffer空间中的数据,根据写回地址,原子地写回到nvm数据块,这样既能减少无效的nvm重复写入,又能保证数据的持久化;当数据持久化到nvm中,每当nvm数据块写满后,需要更换新的空闲nvm数据块进行写入,对nvm数据块进行磨损均衡处理:维护一个nvm数据块访问信息表,为进一步解决nvm数据块磨损程度不均匀问题,在nvm数据块写满后,更换nvm数据块时,基于贪心的方法,每次根据访问信息表选择当前访问次数最小的块进行写入操作;实现磨损均衡。

技术总结
本发明涉及一种在间歇计算文件系统中可断电感知的NVM重复写减少方法,对NVM数据块上的写做了磨损均衡。其包括以下步骤:判断是否处于高频断电场景,对于高频断电场景,开启SRAM中的动态缓存,以减少对NVM的无效写,改善磨损问题,该缓存大小基于对历史负载观测动态变化;非高频断电场景下即默认情况下,不开启缓存,以充分利用能源将数据写入持久性存储中。对于写入NVM的数据,当需要换块写入时,选用写次数记录最少的块,以改善磨损均衡问题。本发明通过检测高频断电场景,将数据写入SRAM中的缓存,避免了由于断电引起的NVM数据块磨损严重问题,同时结合低开销的磨损均衡改善机制,改善了磨损不均衡问题,提升设备使用寿命。提升设备使用寿命。提升设备使用寿命。


技术研发人员:沙行勉 诸葛晴凤 廖业腾 王寒
受保护的技术使用者:华东师范大学
技术研发日:2023.05.16
技术公布日:2023/8/13
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐