0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

SSDFans 来源:SSDFans 2023-10-17 16:55 次阅读

导语

在使用移动设备时,用户同时打开多个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会比这个机制先执行。

e25fd8e2-6cc3-11ee-939d-92fbcf53809c.png

安卓操作系统in-memoryswap机制示意图

为了更加直白地展示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的使用。

e27101a8-6cc3-11ee-939d-92fbcf53809c.png

四种时间的比较

请求调页的缺陷

内存压力下,switch time的overhead来自于以下两个方面:

1)解压缩匿名页

2)从磁盘检索文件页

而造成switch time大大增加的罪魁祸首就是请求调页的低效率。下图表示switch过程中CPU和磁盘带宽利用率。在switch的过程中,CPU的平均利用率仅仅34.2%;,而磁盘带宽利用率仅9.4%。究其原因, 在于解压缩和读磁盘操作只在一次page fault时启动。

同时,实验者们发现,文件页和匿名页的交换足迹(footprint)不一样。文件页更加“不变”。即同一个应用被重新启动时,往往访问大量相同的文件页。原因是要访问许多相同的库文件。因此这给予实验者一个启示——为匿名页和文件页设计不同的预取器,利用预取来提高硬件利用率。

e2915db8-6cc3-11ee-939d-92fbcf53809c.png

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中移除。

e29f7cc2-6cc3-11ee-939d-92fbcf53809c.png

文件页的预取过程

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中的页有个超时计时器,每次切换时计时器减小,而页被访问时计时器重置,超时后页被丢弃。

e2ac4bfa-6cc3-11ee-939d-92fbcf53809c.png

匿名页的预取过程

测试结果评估

1. 在switch latency方面,在两种不同设备上(Pixel 4代表高端设备,Pixel 3a代表低端设备),基于baseline,平均性能提高了22.2%、28.3%。

e2b596ce-6cc3-11ee-939d-92fbcf53809c.png

写延迟示意图

2. 在预测器性能方面,平均准确率分别为匿名页68.4%,文件页79.3%;平均召回率分别为匿名页60.4%,文件页52.2%。

e2ca1bda-6cc3-11ee-939d-92fbcf53809c.png

预测器性能示意图

3. 在资源利用率方面,平均提高CPU利用率1.18倍(反映了预取匿名页的影响);平均提高I/O带宽的使用率25.2%(反映了预取文件页的影响)。

总结

ASAP通过合理设计预取机制,在两种设备上,平均性能分别提高了22.2%、28.3%,取得了不错的效果。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10446

    浏览量

    206572
  • 操作系统
    +关注

    关注

    37

    文章

    6288

    浏览量

    121890
  • SWAP
    +关注

    关注

    0

    文章

    47

    浏览量

    12636

原文标题:聊聊在手机上开启快速swap的可能性

文章出处:【微信号:SSDFans,微信公众号:SSDFans】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    GPS在手机上的定位系统设计

    `<p><font face="Verdana"><strong>GPS在手机上
    发表于 12-18 15:09

    温湿度传感器在手机中的应用

    在手机中应用最多的传感器主要有加速度传感器、陀螺仪等,其实温湿度传感器也可以应用于手机上。目前温湿度传感器还未大量应用于手机上主要有两个方面的原因,第一是传感器本身的技术不够发达,第二是手机
    发表于 04-08 14:41

    声表面滤波器有用在手机上吗?

    今天看到一篇文章,有提到声表面滤波器可以用在智能手机上,我自己就有销售声表面滤波器,但是从培训到现在都没听说声表面滤波器可以用在手机上,那么声表面滤波器到底能不能用在手机上呢?具体又是那一款呢?
    发表于 12-02 21:30

    LabVIEW2013能做成软件后在手机上显示仪器的界面么?

    如题:LabVIEW2013能做成软件后在手机上显示仪器的界面么?
    发表于 03-02 21:09

    请问怎么通过WIFI模块在手机上显示网页

    我之前看过,论坛里一个坛友的文章,他通过WIFI模块实现了手机访问模块网页的功能,我现在使用的是ESP8266的模块,现在也想实现这样一个功能在手机上通过IP请求网站时能将我保存在开发板上的简单网页
    发表于 01-24 02:11

    蓝牙模块与安卓手机相连,串口助手发信息显示在手机上是乱码

    请问蓝牙模块与安卓手机相连 ,手机可以发数据到蓝牙并显示在电脑串口助手上 ,但是串口助手发信息就不能显示在手机上就是乱码 ,是哪里的问题啊?
    发表于 02-15 00:24

    如何用matlab进行gamma可能性分析?

    大神们,我在用matlab进行gamma可能性分析时,不知如何计算gamma值的SD SE,见笑了,实在没查到资料,望了解的可以解答一下,多谢多谢!
    发表于 02-23 09:28

    在手机上采用USB传输高清视频

    高清录像作为他们的高端产品。在手机中整合高清视频将会进一步体现其实用价值,因为它已不仅是一个数码相机,还是一个数码摄像机。把高清录像放到手机会带来新的问题:如何使高清视频回放。在手机上直接回放视频是很
    发表于 05-16 10:44

    PSOC5LP与低通滤波器进行硬件连接的可能性有多大?

    你好,我想用我的PSoC5LP板(CY8C55)做多个应用程序,我想知道与低通滤波器进行硬件连接的可能性,因为这些值被限制为C= 5PF-10PF和R=200K-1000 K,我们有四的可能性打破频率值。有可能增加硬件连接来增加
    发表于 08-13 10:52

    存储级内存取代NAND闪存的可能性分析

    存储级内存(SCM)取代NAND闪存的可能性分析
    发表于 01-05 06:23

    怎么做到在手机上自主分析数据的?

    看很多人都说在手机上就能分析数据,还是从自己的立场出发去调整报表,针对分析自己关心的数据。这是怎么做到的?用什么数据分析工具实现的?用数据可视化工具制作的报表就可以在手机端自主分析。也就是上段提到
    发表于 04-13 10:00

    分享几款可以在手机上用来学习编程的软件

    解决?来看看这里“1039649593”满足你的需求,资料都已经上传至文件中,可以自行下载!还有海量最新2020python学习资料。点击查看前天在悟空问答的时候,很荣幸被邀请参加回答“在手机上可以用来学习编程的软件有哪些?”这个问题,之前在微信群有人问过我,我当时在悟空回答的首页看到一个头条大微
    发表于 07-01 07:19

    如何在手机上打开/启动应用程序?

    您希望如何在手机上打开/启动应用程序?您会手动启动还是通过语音命令启动它?
    发表于 05-04 08:56

    在手机上显示带有地震位置标记的地图

    电子发烧友网站提供《在手机上显示带有地震位置标记的地图.zip》资料免费下载
    发表于 06-20 10:58 0次下载
    <b class='flag-5'>在手机上</b>显示带有地震位置标记的地图

    怎么在手机上做电路仿真

    在手机上进行电路仿真,您可以使用一些专业的电路仿真应用。这些应用通常提供丰富的元器件库、强大的仿真功能和直观的图形界面,使得在手机上进行电路设计和仿真变得方便而高效。
    的头像 发表于 03-29 14:25 419次阅读