本文发表于FAST 2022。探讨缓存文件管理方法。本文通过一个轻量级的基于机器学习的分类引擎来筛选和个性化管理缓存文件,实验在华为P9和Mate30两部手机上进行,验证I/O性能和存储寿命。结果表明其具有很好的实用价值。
背景
由于应用程序的动态特性和整体系统优化,大部分移动应用程序都需要从网络中下载文件或数据。即使现代通信网络具有更高的带宽,许多应用程序仍然严重依赖移动设备上缓存的数据,以避免通过网络重新下载数据,并满足其执行延迟需求。当前的移动设备首先将缓存文件存储在主存中,然后将它们写回闪存。这些应用程序的缓存数据通常作为缓存文件进行管理,并且可以快速地重新访问。
问题
1. 缓存文件请求的空间越来越大。
即使部分移动系统和用户会对部分缓存文件进行删除,但是由于缓存文件的保存而造成的额外闪存写已经发生,对闪存性能和寿命的损害也无法避免;同时,实验显示现实缓存文件写入移动设备存储中的数据量占总写入量的64%,频繁的缓存文件的写入和删除都会引起闪存的IO争用用降低系统效率,影响闪存寿命。
图1 不同应用缓存写次数和写量占比
2. 当前的安卓系统没有考虑缓存文件之间的差异性。
缓存文件根据其访问模式和生命周期可以分为三类:阅后即焚文件,下载后不会被再次访问,因此可以在访问之后直接删除;瞬态文件,下载后短时间内会频繁访问,但过一段时间旧不会被再次访问;长寿文件,下载后的很长一段时间后还会被再次访问。实验结果显示由93%的缓存文件都是阅后即焚文件和瞬态文件,不需要存储到闪存中去,但是当前的系统对所有的缓存文件都采取持久化到闪存的策略,实际上造成了存储空间的极大浪费,严重影响闪存寿命和性能。
CacheSifter设计与实现
1. 设计原则(1)用户应用透明,不影响应用的正常运行;
(2)在线分类,对于阅后即焚文件和瞬态文件避免存储到闪存中;
(3)自适应内存管理,根据内存的使用情况自动调整不同应用的缓存对于内存的占用;
(4)适应用户行为的改变,当用户访问模式改变时可以重新分类已经做过分类的文件;
(5)确保系统安全性,删除缓存文件不会导致应用程序崩溃或用户数据丢失。
2. 基本框架
用一个轻量级的机器学习模型进行缓存文件的在线分类,并根据不同的文件类型采取不同的存储策略:对于阅后即焚文件,在分类之后立即删除;对于瞬态文件,分类之后由内存中的链表进行管理,超出活动时长则进行删除操作;对于长寿文件,利用安卓的基本LRU驱逐机制,自动写回后端闪存,并会在应用程序将该文件失效之后从闪存中删除。对于一些重要的缓存文件或者删除会影响系统安全的文件维护一个安全链表,避免误删的操作。
图2 系统框架
CacheSifter优势
1. 避免在闪存中存储阅后即焚文件和瞬态缓存文件,可以减少对闪存空间的不必要的数据写,大大改善闪存性能和寿命;2. 直接从DRAM访问瞬态文件,提高这部分文件的访问速度和性能;3. 利用轻量级的机器学习模型来优化缓存文件的管理,引入的代价极小,可以实现用户透明的目标。
评估
评估实验在华为P9和Mate30两部手机上进行,由于CacheSifter的平台独立性,结果显示在两部手机上的实验数据差异不大。
由于内存使用和分类时间的限制,本文在一个模型中只能关注一个优化指标,因此使用了两个模型来进行训练以分别保证训练的高准确率或高召回率:高召回率模型旨在减少缓存文件的回写,并将重新下载的开销最小到最低;而高精度模型则旨在以最小的错误分类来减少缓存文件的回写。
为了评估Cache Sifter的有效性,我们设计实验来验证本文的方法在缓存回写数据量的减少、闪存寿命的改善、密集IO下读写性能的提高等指标上的结果。
1. 缓存文件写回数据量显著减小
该实验主要对缓存写的减少和总IO的减少进行评估。
在P9上,高召回模型和高精度模型将缓存文件的写平均减少了62%和59.5%。两种模型也显著减少了总i/o的数量,即平均分别为29.7%和31.2%;在Mate30上,两种模型也都大大减少了缓存文件的回写,即平均分别为88.3%和85.5%。两种模型的I/Os数量也减少得更多,即平均分别为47.7%和46.6%。而之所以在两部手机上具有不同的优化效果,主要还是因为用户行为和系统默认管理机制的不同。
图3 缓存写回数据量减少的实验结果
2. 闪存寿命显著改善
通过代入写放大系数、预留空间因子、以及PE循环次数可以大致估算出闪存的寿命。以P9为例,通过计算可以得出两种模型的平均I/O量可分别减少53.2%和54.7%。因此,使用寿命可以平均分别提高113.7%和120.8%。可以看出本文的方法可以有效提升闪存寿命。
3. 密集IO下读写性能提升
通过制造IO密集内存条件,测试了不同实验组(不做缓存管理的基本组,高召回率实验组,高准确率实验组,不生成缓存文件的实验组)在读写一个512MB文件时的读写延迟。实验结果如图4:
图4 读写性能的提升(a)和IO数据量的减少(b)
可以看到在IO密集情况下(2G内存),与基本组相比,高召回率模型的读写延迟平均分别降低了13.9%和18.4%,而使用高精度模型的读写延迟分别降低了14.4%和25.5%。这是因为CacheSifter会使得由应用程序生成的缓存文件回写显著减小,从而改善了内存不足或IO密集情况下的IO争用。因此当内存充足(至少2.5G)时,这种改善会由于IO争用的不明显而无法体现。
总结
文章提出了一种缓存文件管理方案CacheSifter,通过一个轻量级的基于机器学习的分类引擎来筛选和个性化管理缓存文件,实验结果可以证明该方法对I/O性能和存储寿命都提供了显著的好处,但开销很小,具有很好的实用价值。
The End
致 谢
感谢本次论文解读者,来自华东师范大学的准研究生张祎,主要研究方向为闪存缓存管理技术研究。
原文标题:移动设备中的缓存文件管理
文章出处:【微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。
原文标题:移动设备中的缓存文件管理
文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
评论