小米系统性能的优化

简介:


张扬:小米科技系统工程师,专注操作系统机制研究以及软件架构和接口设计,曾经在索尼和创新工厂从事系统底层及中间件的研发,加入小米后主要负责安全和系统优化方面的研发及技术框架搭建。

小米的MIUI系统是针对Android深度定制的操作系统,在Android开放的设计之下,各个应用有了充分的发挥空间,但是与此同时,系统资源(如 内存,电量等)也在应用的无节制使用之下显示出疲态。此次讨论的主题就是站在操作系统设计者的角度如何在应用权限和系统资源之间做平衡的。以下来分享精彩内容。

移动系统现状

图1

如图1,智能手机已经普及,每个人平均每月要经常使用6.8个APPS,近一半的移动互联网用户目前将手机作为他们的首选或唯一的上网设备。

移动系统和应用之间到底是一个什么关系呢?不论操作系统还是应用,最终都是要服务于用户的,用户需求就是一个大的战场,各个APP是直接和用户去交互,服务于用户的。那么手机就是一个大战场,应用程序就好比军队, 操作系统就是后勤。

APPS都是各自为战,完全不考虑其它,但手机资源是有限的。要想让手机的操作系统跑的很顺利,这就需要对电量,流量,内存进行优化。

自启动涉及到方方面面的,是一个比较宏观的概念,移动应用自启动,前1000热门应用,70%以上需要自启动。

图2电流仪测手机耗电图

如图2,用随机装的50个应用进行测试,观察自启动管理前后的耗电图。应用自启动时,我们会设置一些比较常用的(比如微信),还有另一些默认是不会自启动的,用户可以自己手动把自启动打开,如果不设置自启动,有时会出现消息下达不及时而导致消耗,那么自启动是不是完美方案呢?单从系统环境去做这个事情还是比较苦难的,因为有各式各样的应用,它们的行为也千姿百态的,需要运行的数据量很大,系统不会有太多策略去判断的。更好的方式是靠大家配合,各个应用应该把系统资源的消耗和占用作为自己的应用是否好的一个指标。

 

电量优化

 

 

  图3 andriod原生态

图4 MIUI V5

安卓为什么会费电,主要原因是CPU没有断,所以我们关注的是当手机不用时怎么样控制cpu的唤醒,图3中安卓原生态时的几个应用,它们不知道彼此的存在,它们只会根据自己的逻辑判断什么时候唤醒CPU,导致耗电一直很高,CPU很难进入休眠状态。图4的MIUI V5对齐唤醒机制,在各个应用设置自己唤醒的时候,V5进行统一判断,在某个阈值之内把一些应用调到一起唤醒,经过测试如图5,耗电量降低了很多。

 图5待机耗电测试

 

 

图6 iOS 7 在2013年9月WWDC发布同样的功能

理想方案:在后面的改善过程,我们可能会加一个独立的小芯片,主cpu还是一样的,小芯片的作用是监控数据的唤醒。此外,我们会把所有的闹钟操作统一由系统接管,你只需要告诉系统你什么时候要醒,系统可能会给用户发一些状态答案。

流量优化

 流量消耗原因:后台应用默默跑流量。

解决方案:开源节流。开源:有更多可以使用的流量;节流:控制应用的联网行为。

内存优化

基于后台APP的内存优化;调整ActivityManagerService的参数,利用IActivityManager提供的接口对进程进行控制;ZRAM。

释放OPENGL的资源;将dalvik占用内存的bitmap交换到EMMC;将dalvik占用的空闲的物理内存释放出来;设置合适的MAX_TASK, MAX_HIDDEN_APPS;将不经常使用的进程占用尽量少的内存,占用尽量多的缓存。

                                                                                                                                    



                                                                                                                              PPT下载地址:http://club.alibabatech.org/resource_detail.htm?topicId=162

 

 

相关文章
|
3天前
|
传感器 API Android开发
构建高效的安卓应用:从内存优化到电池续航
【2月更文挑战第27天】 随着智能手机成为我们日常生活中不可或缺的一部分,用户对应用程序的性能和效率要求越来越高。对于安卓开发者来说,优化应用的内存使用和延长电池寿命已经成为提升用户体验的关键任务。本文将深入探讨在安卓开发中如何通过有效的内存管理和电池使用策略来构建一个高效且持久的应用。我们将分析常见的内存泄漏问题,讨论如何利用安卓的电池管理API以及探索最新的安卓系统特性,帮助开发者们提升应用性能,并确保它们能在资源受限的设备上顺畅运行。
|
3天前
|
缓存 监控 Android开发
构建高效Android应用:从内存优化到电池续航
【4月更文挑战第30天】 在移动开发领域,性能优化是一个永不过时的话题。对于Android应用而言,实现流畅的用户体验和延长设备电池寿命是至关重要的。本文将深入探讨Android平台特有的内存管理和电池使用策略,并提出一系列切实可行的优化措施。通过智能管理应用的生命周期、合理利用系统资源和调整后台任务执行策略,开发者可以显著提升应用性能并减少能源消耗。文章最后还将讨论如何利用Android Studio内置工具进行性能分析与监控,确保应用在发布前达到最优状态。
|
3天前
|
安全 Android开发 开发者
安卓手机系统的优势和劣势分析
【2月更文挑战第8天】 安卓(Android)是目前全球最流行的移动操作系统之一,拥有强大的开源技术和丰富的应用生态系统。本文将从多个维度对安卓系统进行分析,并探讨其优势和劣势。
|
8月前
|
运维 测试技术
千万级乘客排队系统重构&压测方案——总结篇
千万级乘客排队系统重构&压测方案——总结篇
127 1
|
JSON 缓存 JavaScript
提高系统吞吐量的一把利器:DeferredResult 到底有多强?
提高系统吞吐量的一把利器:DeferredResult 到底有多强?
|
机器学习/深度学习 算法 Serverless
冷启动优化:厂商对冷启动问题的优化
冷启动优化:厂商对冷启动问题的优化
395 0
|
算法 测试技术
优化婚恋app源码性能,首先要找到性能瓶颈
如果婚恋app源码它可以承受百万级别的并发量,但是系统延迟高达十几秒,那它的性能还需要进行优化,同样的,如果系统延迟很低但是不能承受高并发,这对系统来说也没有意义。
|
存储 弹性计算 NoSQL
突破内存应用瓶颈,让IT成本下降40%的秘诀
近两年5G、大数据、云计算一直为行业热点,数字化进程不断加速,全行业数据开始爆发式增长。面对数据的迅猛增长,企业一方面享受着数据化转型带来的红利,另一方面也承担着大内存运行实例的高额开支。传统内存面临挑战,持久内存方案开始受到了行业更多的关注。
突破内存应用瓶颈,让IT成本下降40%的秘诀
|
视频直播 UED 异构计算
直播平台制作中系统功耗过高问题原因分析
大家在直播平台观看直播时,由于手机长时间处在视频直播状态,导致手机发烫的现象十分常见。引起发烫的主要原因是CPU或GPU的占用率过高。其实在直播平台制作时可以通过很多细节方面的优化,降低系统功耗。但前提是要求我们明确其中的原因。那么导致CPU或GPU占用率过高的原因都有哪些呢?
1646 0