聊聊在手机上开启快速swap的可能性

导语
在使用移动设备时,用户同时打开多个app是很常见的。而这很容易造成移动设备的内存紧缺。在现有的方法中,无论是杀死进程(lmkd)来释放内存还是基于压缩算法的in-memory swap方式,都面临用户切换回被杀死的进程过程效率低下问题,这会影响用户体验。
asap是一种全新的swap机制,基于预取策略很好地改进了用户体验。其来自韩国首尔大学/谷歌等合作,发表于atc 21。接下来本文将分成背景和动机、设计和实现和测试结果评估三个部分分别介绍asap诞生的背景、具体设计和效能。
背景和动机
安卓操作系统的内存管理机制
在安卓操作系统中,用户正在使用的app被认为是在前台(foreground),而其他启动过但是当前没有被使用的app则是在后台的。
内存紧缺时,android有个守护进程lmkd,负责杀死最不重要的进程(比如某个后台进程),而该进程的数据自然就被释放了。内存中有个数据集存储被移入后台的进程的状态,用户切换回被lmkd杀死的进程时,根据这个数据集恢复进程数据。除此之外还有另一种方式即使用基于压缩算法的in-memory swap(zram),下图为安卓操作系统in-memory swap机制示意图,其特点是需要压缩和解压缩匿名页,比通过i/o将匿名页写入磁盘更快,但是压缩的页依然占用内存空间且压缩解压缩占用cpu时钟周期。通常来说,lmkd会比这个机制先执行。
安卓操作系统in-memory swap机制示意图
为了更加直白地展示lmkd和in-memory swap、普通的swap之间的差异,此处定义两个变量:
1) launch time:应用数据已经不在内存中,但是内存中依然有它的状态信息。应用利用这些状态信息从头重建所有活动所需要的时间,即被lmkd杀死的进程的重启时间;
2) switch time:应用数据依然在内存中。此使启动应用所需要的时间。
根据文件页和匿名页是否在内存中,进而进一步分成四个不同的时间:
1) ideal switch time:进程的文件页和匿名页都在内存中
2) switch time(file-backed pages in disk):进程的文件页在磁盘中,匿名页在内存中
3) switch time(most pages not in memory):大部分页都不在内存中
4) launch time:所有页都不在内存中
下图展示了四种时间的差异。横轴是用来测试的八个应用和平均值,纵轴是四种时间的值,可见使用lmkd会比理想情况满四倍左右,应该尽可能减少lmkd的使用。
四种时间的比较
请求调页的缺陷
内存压力下,switch time的overhead来自于以下两个方面:
1)解压缩匿名页
2)从磁盘检索文件页
而造成switch time大大增加的罪魁祸首就是请求调页的低效率。下图表示switch过程中cpu和磁盘带宽利用率。在switch的过程中,cpu的平均利用率仅仅34.2%;,而磁盘带宽利用率仅9.4%。究其原因, 在于解压缩和读磁盘操作只在一次page fault时启动。
同时,实验者们发现,文件页和匿名页的交换足迹(footprint)不一样。文件页更加“不变”。即同一个应用被重新启动时,往往访问大量相同的文件页。原因是要访问许多相同的库文件。因此这给予实验者一个启示——为匿名页和文件页设计不同的预取器,利用预取来提高硬件利用率。
switch过程中cpu和磁盘带宽利用率
设计和实现
正如前文所说,为文件页和匿名页设计不同的预取器。对于文件页,利用不变的特点减少负载;对于匿名页,则利用实时信息追踪变化的switch footprint。其中的挑战是,如何准确地预测footprint。
1)针对文件页,如下图,设计了以下五个部分:
• offline profiling
利用前十次交换,把访问超过八次的页当作预取的候选页。其结果被存储在一个文件中。( offline candidate table )。
• fault logging
记录每次交换时的缺页信息。存放在fault buffer中。
• prepaging target management – insertion
匹配fault buffer和offline candidate table,能匹配到,则插入prepaging target table。
• prepaging target management – extent merging
extent:一次切换时同一文件中被访问的页的集合。
两个extent相近(小于16页的差距),则合并。
• prepaging target management – eviction
被预取的页只要在一次交换中没有被用到(检查mapcount是否为0),则从prepaging target table中移除。
文件页的预取过程
2)针对匿名页,如下图,设计了如下五个部分:
• fault logging
记录所有匿名页的缺页中断。
• access logging
根据页表的访问位,记录prepaging target table和online candidate table中的页在应用切换时的访问情况。
• prepaging target management – check & insertion
把新的缺页中断加入online candidate table。
• prepaging target management – promotion
若在online candidate table中的页被访问了,则加入prepaging target table。
• prepaging target management – eviction
在prepaging target table和online candidate table中的页有个超时计时器,每次切换时计时器减小,而页被访问时计时器重置,超时后页被丢弃。
匿名页的预取过程
测试结果评估
1. 在switch latency方面,在两种不同设备上(pixel 4代表高端设备,pixel 3a代表低端设备),基于baseline,平均性能提高了22.2%、28.3%。
写延迟示意图
2. 在预测器性能方面,平均准确率分别为匿名页68.4%,文件页79.3%;平均召回率分别为匿名页60.4%,文件页52.2%。
预测器性能示意图
3. 在资源利用率方面,平均提高cpu利用率1.18倍(反映了预取匿名页的影响);平均提高i/o带宽的使用率25.2%(反映了预取文件页的影响)。
总结
asap通过合理设计预取机制,在两种设备上,平均性能分别提高了22.2%、28.3%,取得了不错的效果。

以太坊2.0发布最终规范是怎样的
焊接接头形式分类
一款可以测定面粉的物理特性包含面团的拉伸阻力
关于步进电机减速机丢步和失步的分析
二叉排序树AVL如何实现动态平衡
聊聊在手机上开启快速swap的可能性
2012工业与汽车应用开发者论坛压轴大戏11月1日上演
PDP等离子电视维修经验
2020山东科学技术奖颁奖啦!海信7个项目获奖
爱特混合信号功率管理工具为FUSION混合信号FPGA提供完
中国软件定义计算软件市场到2023年市场规模将达到20.3亿美元
文晔科技以38亿美元收购富昌电子
哪些情况下不得使用等离子抛光机?
爱立信已与韩国三家移动运营商全部签订了5G RAN商用合同
新品速递 | EMC对策产品:TDK公司推出业内首款用于汽车以太网10BASE-T1S的共模滤波器
中国新能源汽车市场销量影响到了全球走势
首款搭载前置升降双摄的vivo V17 Pro曝光,将于9月20日在印度首发
喜报|启英泰伦连续四年上榜 “成都硬科技扑克牌榜单”
谈谈S7-1200/1500系列PLC优化块访问的功能
诺基亚手机面临挑战,是王者归来还是英雄落幕