智能手机内外存可靠性研究
来源:互联网 发布:指南针软件怎么卸载 编辑:程序博客网 时间:2024/05/17 01:02
一. 研究目的
随着智能手机的计算处理能力越来越强,其所能做的事情越来越多,但在运行过程中(如Android)还是会存在卡顿现象。该研究的目的是要从内核层的内存管理、外存管理,框架层的虚拟机垃圾回收、显存管理等方面找出卡顿的原因所在。对于内核层的内存管理,又细分为了三个研究方向:内存碎片化带来的影响,low memory killer(lmk)带来的影响以及交换分区带来的影响。对于框架层的垃圾回收,也细分为两个方向:传统Dalvik虚拟机垃圾回收所存在的问题,最新的ART运行模式的垃圾回收存在的问题。研究的最后还提供了对应问题的可能的解决方案。
二. 内存(内核层)
1. 内存碎片
- Buddy system原理机制(数据结构如下)。每个zone都有这11个链表,包含了不同大小(order从0到10)的连续物理块。
- 存在的问题
- 碎片化。系统使用一段时间后,内存链表中的连续物理块出现大量的内存碎块,导致在进行大块物理内存的请求性能低下:页面分配要从alloc_page变成alloc_page_slowpath,其分配速度会降低1000多倍。主要原因是此时对大块物理内存的分配不能满足(大块物理内存链表为空),从而需要对内存进行回收整理。
- 难以量化。传统量化方式是使用不可用指数(unusable index)。很难刻画全局碎片化程度,所以该研究给出了全局内存碎片化程度量化公式。
- 解决方案
- 主动内存碎片整理线程。当内存碎片程度超过90%以后,在后台开启一个线程进行direct compact和direct reclaim的操作。
- 基于Domain的内存分配方案。每个进程对应一个Domain,当进程有内存请求时,是以region为粒度进行分配(region的order可以选取2-7)。
2. low memory killer(lmk)
- lmk回收原理。基于进程的优先级和其所占的内存大小对每个进程进行评分,然后根据评分结果进行终止进程。
- 存在问题:回收进程的选择精度存在问题,也就是说经常出现杀死过的进程马上又会被启动起来。
- 解决方案:更改lmk进程过滤模块。根据用户的使用习惯,在用户层对用户对应用的使用进行预测。然后根据预测结果来进行回收进程的选择。
三. 虚拟机垃圾回收(框架层)
1. Dalvik虚拟机和ART运行时垃圾回收存在的问题
Dalvik虚拟机垃圾回收采用的是Mark-Swap算法。其实现有非并行的和并行的两种方式。而对于ART垃圾回收,当Android应用程序在前台运行时,就使用Mark-Sweep垃圾回收的并行回收方式,这可以使得垃圾回收拥有较高的效率;而当Android 应用程序回退到后台运行时,就使用Compacting垃圾回收方式,这可以利用CPU时间对内存碎片进行整理。
- 回收效率问题。Dalvik回收效率低于ART。根据实验结果可以看出,完成一项任务,Dalvik垃圾回收触发的次数为356次,而ART垃圾回收触发的次数为19次。这说明了ART垃圾回收的效率大大高于Dalvik垃圾回收的效率。
- 回收频率问题。Dalvik垃圾回收的低效率导致了其高回收频率,反过来,ART垃圾回收的频率则相对较低。
2. 解决方案
- 多阈值控制垃圾回收频率。传统垃圾回收算法都是根据可用内存阈值来触发的,也就是说当可用内存降低到一个预设阈值时,就会立即出发垃圾回收,从而满足后续的内存请求。该方案设定了5个阈值,只有当第一次到达该阈值时才会进行垃圾回收,连续第二次到达该阈值时会选择以一定的大小增长堆。这样达到了降低垃圾回收频率的目的,同时也可以较好地满足垃圾回收需要。
- 基于页面引用统计的内存堆大小调节。
0 0
- 智能手机内外存可靠性研究
- Linux智能手机安全策略研究
- Linux驱动开发---内外存访问
- 智能手机屏幕解锁图案研究
- 软件测试与可靠性评估方法研究
- 软件测试与可靠性评估方法研究
- Ubuntu中signal()函数可靠性研究
- 2016年中国智能手机市场发展趋势研究
- 智能手机为医疗研究开启新世界
- 操作系统设备管理-设备I/O内外存数据传送方式
- 可靠性
- 智能手机
- 智能手机
- 智能手机?
- 智能手机
- 宏达电HTC正研究是否开发自主智能手机操作系统
- 对智能手机操作系统发展的研究与预测
- 研究表明:睡眠不好跟智能手机没什么关系
- Android进程间(两个应用间)的通信方式
- Andoird中布局样式的抽取
- powerdesign不小心将面板关闭了,怎么调出来
- C++ array数组(九)
- IDEA2016 快捷键使用
- 智能手机内外存可靠性研究
- SQL Server 事务、异常和游标
- DevOps工具系列简介 (持续更新中)
- 2101 A + B Problem Too
- Java通过数学函数(抛物线、正弦曲线、椭圆等)控制游戏中物体的运动
- php之文件上传
- BZOJ3364: [Usaco2004 Feb]Distance Queries 距离咨询 LCA
- 图解动软代码生成器使用
- scrollLeft,scrollWidth,clientWidth,offsetWidth