论文解读-ASAP: Fast Mobile Application Switch via Adaptive Prepaging

本文主要是介绍论文解读-ASAP: Fast Mobile Application Switch via Adaptive Prepaging,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

研究背景:

        用户使用移动设备同时打开多个App,很容易造成移动设备的内存紧缺。现有解决方法一般采用杀死守护进程(lmkd)来释放内存或者基于压缩算法的in-memory swap(ZRAM)方式, 这些方法会面临用户切换回被杀死的进程过程效率低下问题,且严重影响用户体验。

        其中Android操作系统的in-memory swap机制:其特点是需要压缩和解压缩匿名页,比通过I/O将匿名页写入磁盘更快,但是压缩的页依然占用内存空间且压缩解压缩占用CPU时钟周期。而lmkd机制又比ZRAM机制先执行。为此,作者使用Launch time和Switch Time比较lmkd和ZRAM, 普通swap之间的差异,发现lmkd占用时间较大,需要减少lmkd的使用,围绕ZRAM的优化展开。

论文方案:

实验发现,造成switch time大大增加的罪魁祸首就是请求调页的低效率,文件页和匿名页的交换足迹(footprint)不一样。为文件页和匿名页设计不同的预取器,利用预取来提高硬件利用率。对于文件页,利用不变的特点减少负载;对于匿名页,则利用实时信息追踪变化的switch footp

针对文件页,设计了五个部分:

Offline profiling 利用前十次交换,把访问超过八次的页当作预取的候选页。其结果被存储在一个文件中。

Fault logging 记录每次交换时的缺页信息。存放在fault buffer中。

Prepaging Target Insert 匹配fault buffer和offline candidate table,能匹配到,则插入prepaging target table。

Prepaging Target Merging Extent:一次切换时同一文件中被访问的页的集合。两个extent相近则合并。

Prepaging Target Eviction 被预取的页只要在一次交换中没有被用到,则从prepaging target table中移除。

针对匿名页,设计了如下五个部分:

Fault logging 记录所有匿名页的缺页中断。

Access logging 根据页表的访问位,记录Prepaging Target Table和Online Candidate Table中的页在应用切换时的访问情况。

Prepaging Target Insertion 把新的缺页中断加入Online Candidate Table。

Prepaging Target Promotion 若在Online Candidate Table中的页被访问了,则加入prepaging target table。

Prepaging Target Eviction 在prepaging target table和Online Candidate Table中的页有个超时计时器,每次切换时计时器减小,而页被访问时计时器重置,超时后页被丢弃。

实验结论:

        ASAP通过合理设计预取机制,在两种设备上,平均性能分别提高了22.2%、28.3%,取得了不错的效果。ASAP是一种全新的swap机制,基于预取策略很好地改进了用户体验。

这篇关于论文解读-ASAP: Fast Mobile Application Switch via Adaptive Prepaging的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/921319

相关文章

JAVA系统中Spring Boot应用程序的配置文件application.yml使用详解

《JAVA系统中SpringBoot应用程序的配置文件application.yml使用详解》:本文主要介绍JAVA系统中SpringBoot应用程序的配置文件application.yml的... 目录文件路径文件内容解释1. Server 配置2. Spring 配置3. Logging 配置4. Ma

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

C#反射编程之GetConstructor()方法解读

《C#反射编程之GetConstructor()方法解读》C#中Type类的GetConstructor()方法用于获取指定类型的构造函数,该方法有多个重载版本,可以根据不同的参数获取不同特性的构造函... 目录C# GetConstructor()方法有4个重载以GetConstructor(Type[]

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL