首页 > 编程知识 正文

系统优化的意义,系统优化的特点

时间:2023-05-06 09:25:11 阅读:61517 作者:2153

至于目录在前一句话中什么对用户体验的影响最大,则是在安卓注入新生命力走向生态合作的“深水区”“可怕”GPU涡轮背后持续迭代、快速升级、持续解耦的经历积累了结语

文章摘录自腾讯公众号:原文链接

综上所述,笔者于2011年7月偶然进入智能手机APP研发,经历了安卓从1.6版到9.0版的全系统过剩,随着年轻操作系统的成长,深入经历了各种问题和同行优秀的团队,探索对整个生态的各种持续性的优化和探索查看腾讯公众号了解华为EMUI团队对安卓系统的管理过程时。 我受到了比较深的感动。 同时,表达对该行业开发者和粉丝的敬意。 国内的小米公司、锤子、vivo,包括笔者以前所属的大可乐等手机厂商,都投入了巨大的人力财力来探索安卓系统和自己的UI系统的优化

在华为优化的案例中,我们来看看为什么国产智能手机的竞争越来越激烈,12年左右雨后春笋到了19年,只剩下几个巨头。

经过多方调查和访谈,团队很快发现,最让安卓用户诟病的是长期使用后的dddxl,这也是影响消费者体验的第一大障碍(授权和安卓)

我和热爱电子产品的同事谈过他的智能手机使用经验。 安卓手机进入大屏时代后,2013年他购买了当时做得最好的安卓手机s和h,虽然还使用了顶级配置,但用了一年多之后,每天晚上什么都不用操作,消耗了10几%的电力。 更让他受不了的是,滴滴涕XL,死机几乎成了家常便饭,要想勉强使用,就必须继续重启和内存清理。 用他的话来说,不是我在用手机,而是手机在用我。

为什么无论是有较高的硬件配置,还是当时最好的安卓手机,都会面临更多的稳定性和流动性问题呢? 长期使用后dddxl和死机的原因是什么? 我们决定“啃”住dddxl这块最大的硬骨。 EMUI团队成立了特别的“特战组”集中攻克难关。 特战组详细分析了安卓系统下400多台几十种机型的手机,经过反复的问题再现和软硬件全栈分析,发现了造成dddxl、死机的以下四个主要原因。

1、应用安卓系统松散管理、资源使用缺乏规则,建设了很多道路但没有交通规则,最终是拥挤和混乱;

2、系统硬件资源协同不足,仅靠增加内存(RAM )资源不能解决问题,必须更有效地调度和使用资源;

3、随着存储碎片的累积效应、使用时间的增加,存储碎片越来越严重,数据读写速度明显下降,系统dddxl频繁恶化;

4、APP膨胀严重,尤其是头部应用功能不断堆积,产生的数据急剧增加,系统资源严重抢占,带动系统运行速度。

这些问题几乎都涉及到芯片到软件的全堆栈,光靠耍把戏被动应对是无法真正解决问题的。 拿出全面彻底的解决方案,需要全面的系统分析。 但是安卓系统本身极其庞大,代码行数超过亿。 在这样庞大的系统中进行“手术”,可以考虑挑战。 在优化的同时会不会引起其他兼容性问题? 你有足够的能力实现预定的目标吗?

但是,如果带着有问题的发动机勉强飞行,只会造成更大的事故。 与其退缩,不如放手。 通过大量细致的分析和研判,我们决心摧毁釜沉舟——树干! 最终,经过专家反复诊断和讨论,开出了5个“药方”,逐一解决了这些问题。

简单来说,人工智能是核心,对于分析应用侧智能、判断应用资源需求特征(计算密集型、RAM密集型、IO密集型等)的硬件资源侧,CPU、内存、IO (输入/输出)、存储等通过AI算法实现应用需求与硬件资源的最佳匹配,及时合理整理回收空闲资源,解决上述硬件资源协同和APP占用空间过度膨胀的问题。

为Android注入新的生命力针对存储碎片问题,我们采用了比较激进的方案——来替换Android的本机文件系统。

Android从诞生之初就直接基于Linux构建,文件系统最初没有考虑快速整理碎片文件。 长期以来,安卓手机一直从Linux继承文件系统。 此文件系统对智能手机上的闪存存储不友好,也是碎片化的主要原因。 我们决定用本机文件系统替换f2fs (闪存文件系统)文件系统。 这是因为f2fs不仅是针对flash定制的,而且手机可以大大避免文件碎片。

F2FS是友商s公司原创、开源的。 但是,s公司自身没有率先使用。 像器官移植手术一样,由于文件系统决定存储中所有文件的存储和访问方式,更换文件系统的复杂性和风险非常大。

我们在实验室仔细验证了半年多,更换文件系统的复杂性和风险很高,仍然是决策的最大关切问题。 软件管理团队和技术团队经过多次分析后,最终果断拍照,并与CBG签订军令状,承诺如果进展不顺利或出现问题将“军法处置”。

得益于团队大胆的执行力,F2FS文件系统最终成功更换,成为解决dddxl疑难杂症全方案中最重要的组成部分。

2016年,随着Mate 9系列发布的EMUI5.0,我们为解决此Androidddxl的方案命名了一个通俗易懂的名称。 被称为“天生快一辈子”,同时向消费者承诺“18个月不玩ddxl”。 当时看起来“自豪”的约定,今天变成了现实。 从市场反应和消费者反馈来看,在安卓阵营中,华为手机率先甩开了“

dddxl”的帽子。

2018年,谷歌将F2FS吸收到安卓原生版本中,所有安卓厂商因此受益,对安卓生态是很有价值的贡献。至今,谷歌的自研手机Pixel 3也使用了F2FS文件系统。

基于理性的技术判断和果断决策,让我们领先了所有安卓厂商一步。更难能可贵的是,为了实现安全替换,逼迫我们的团队没有退路地仔细分析了原生系统的底层,边战边练,让我们的团队积累了非常宝贵的经验,也尝到了深度优化安卓的甜头。第一道考题,我和软件团队初步获得了CBG管理团队的信任,有了一个好的起点。

走向生态协同的“深水区”

在解决dddxl这个顽疾的过程中,我们就发现安卓生态的松散是一个挑战,这并不能通过技术来解决,但又和用户体验息息相关。

相较于iOS对生态的严格管控,安卓生态主要依赖玩家的自律自觉。打个不恰当的比方,安卓原生系统好比谷歌修好的一条高速公路,谷歌设想上路的自然是遵守交通规则的机动车,而实际情况却是,不但机动车上路了,各种牛车、马车、三轮车和行人都来了,加上没有交警(优先级调度系统)负责管理,拥堵就成了常态。

这种状况在国内尤甚。手机厂家不断投入的技术,只是把端侧的运行环境做得越来越高效、整洁。但应用市场的鱼龙混杂对用户体验影响巨大,各安卓手机厂家不仅拥有自家的应用市场,还有种类繁多的第三方应用市场,再加上通过浏览器链接就能下载安装App,还有各种木马App、恶意软件,互相引导安装、伪装后台、无限制申请手机系统资源等,带来的问题就是Apps对安卓系统资源的使用极不规范,甚至是恶意使用。

“病从口入”,导致的结果就是,用户体验不断受损。华为面临一个选择,是随大流,还是牵头竖起大旗,联合重量级生态玩家,逐步规范、净化安卓生态,把优质的体验还给消费者?仅仅依靠手机厂家自身的持续技术投入和优化已然不够,走向生态协同的“深水区”是华为终端软件必须要迈出的一步。

经过大量的前期沟通讨论,2016年11月14日,在上海的Mate 9系列发布会上,华为联合阿里巴巴、百度、腾讯、网易四家企业共同发起了安卓绿色联盟。作为一个开放的非盈利性组织,希望共同构建中国安卓绿色应用环境,打造安全、可靠、可信、健康的应用生态,把极致的应用体验带给消费者。


安卓绿色联盟成立后,集中发起厂家的经验和智慧,陆续推出了《安卓绿色联盟应用体验标准》的1.0和2.0版本,涵盖了应用安装与运行的兼容性、稳定性、安全、功耗和性能标准。同时发展会员企业超过1000家,覆盖80%的主流应用。

在安卓绿色联盟平台上,华为提供了超过3千台测试真机,免费向所有安卓应用开发者开放,只要远程登录,即可申请到相应的测试资源并执行测试;同时,华为把安卓最新版本的变化及时分享给国内开发者,大大提升了安卓应用在新版本上的适配效率。

对于通过了《安卓绿色应用体验标准》的应用打上“绿色应用”标记,让消费者在应用下载时对应用质量的了解一目了然,可以安心使用。通过2年多的协作,绿盟已帮助超过20万开发者进行免费测试、牵引Top 3000安卓应用降低了高功耗与权限滥用行为。消费者、应用开发者、互联网厂商和手机厂家都因此受益。整个安卓生态的参与者,都愿意在这个平台上共享经验、共同创新。2018年还成立了AI开放生态合作、AI安全设计方案、AR、游戏加速四大创新工作组。

我们将和伙伴一起把安卓绿色联盟持续的发展壮大下去,希望她能成为整个产业的一盏明灯,优胜劣汰,为所有安卓用户带来极致的应用体验。

“吓人”的GPU Turbo背后

2018年6月,jxdc在北京发布“吓人的技术”GPU Turbo,不但引起了其他厂商对于“吓人”和“Turbo”的跟风,也在一些主要的科技论坛引起了关于背后技术的大讨论。

游戏产业在手机上的迅猛发展超乎很多人的预料,几乎一半以上的用户都是手游用户。早在2016年,国内的手游已经占据了游戏市场的半壁江山,而且如王者荣耀、吃鸡等“硬核化”游戏的普及,将游戏对于手机图形处理能力的要求推向了前所未有的高度。而受限于ARM Mali GPU的限制,在与其他顶级友商的GPU的PK中,华为手机用户对游戏体验的吐槽急剧增多。

手游的体验是不是只能依赖GPU的处理能力,或者类似某些所谓的游戏手机堆料来实现?能不能像整机性能一样通过软硬协同来优化?这些问题进入了我们的视野。说干就干,相关工作马上开始启动。

2017年2月,我们发起了一场中西合璧的针对手机图形处理性能的攻关。虽然新加入的海外图形处理专家给出了很有价值的思路,但是整个攻关过程并非一马平川。其中经历了无数次尝试、接近、又推倒重来的过程。“胜则举杯同庆,败则拼死相救”,来自美国、芬兰、俄罗斯和深圳、杭州、南京、上海的相应领域专家们,不论部门,不分昼夜,最终达成了预期的目标。

当最后我们说出GPU Turbo可以提升游戏性能的同时降低功耗,业界开始是一片质疑,都觉得这个逻辑违反常理。但我们有充足的底气,从GPU Pipeline(处理队列)、CPU/GPU联合调度,到OPEN GL(开放图形库)各指令的详细解读和细致调整,再到图形处理引擎的重构和应用负载的清洗,完整的全栈分析和解决方案,让我们有足够的技术自信,敢于公开我们的目标和承诺。

6月6日,发布会现场,知名技术平台现场直播搭载GPU Turbo的荣耀Play和其他友商手机的同款游戏对决。在帧率、抖动率、掉帧、耗电等硬指标上,荣耀Play获胜!一个多小时的实时对战,让业界见识了GPU Turbo的实力。GPU Turbo上市之后的反响超出预期,而各种第三方自发的评测也证实华为手机坐稳了游戏性能的第一阵营。

任何成功的背后,都是艰辛和汗水,所有参与GPU Turbo项目的研发jydxh们,经历过多少个不眠之夜已经记不得了。而我们始终牢记,潜心投入技术,聚焦提升用户体验,才是持续改变用户观念,提升品牌与口碑的王道。

持续迭代,快速升级,持续解耦

这种快速的补丁升级能力,在终端领域,华为是独有的,其他安卓厂家并不具备。这背后,是EMUI团队这几年持续构筑的软件工程能力:代码共主干、全栈架构解耦、版本自动化生成三个硬核能力。

工欲善其事必先利其器,软件工程能力是软件研发的“器”。强大的软件工程能力是软件研发的重要组成部分,也是软件研发的硬核技术。

三年多以前的EMUI,基于海思Kirin、高通、MTK芯片的主干各不相同。主干只是物理上的代码仓库,质量基本没有保证。各产品版本都是从主干拉出的分支,相关特性都是靠产品经理和开发代表手工挑出来,效率极为低下,质量无从保证。从单产品看似乎很“高效”,但各产品功能特性的一致性,质量的可继承性几乎很难做到,没有一款存量机型能够全网升级新版本。这致使整个软件团队工作量很大,但重复低效且没有继承性,令团队人困马乏,根本无法应对即将到来的海量交付。

从EMUI5.0版本立项开始,交付采用了全解决方案运作模式,将用户交互、OS(操作系统)、海思、通信协议、安卓原生多个模块纳入统一规划,同源设计、同源开发、同源测试。解决方案依赖关系识别好、管理好,计划对齐。同时定下海思Kirin、高通共主干目标(MTK平台2018并入主干,至此,华为EMUI一条主干兼容三大硬件平台),代码合入主干严格受控、质量优先,保证了主干的代码质量。各产品不再需要拉分支,到发布的点直接按对应的产品出版本即可。主干版本每周可实现一轮全量的自动化测试,质量越来越好,交付也越来越高效,并且这个能力可持续传承。共主干的实现,虽然让产品线和软件研发团队都受到了不少“折磨”,但今天的收益让所有的痛苦都变得很值得。

架构是软件的骨架,是软件团队共同工作的基础和统一语言。EMUI基于安卓原生系统,总代码行数过亿,几乎是无线产品线产品代码行数的两倍。这么大规模的代码,每年都要做大版本升级,而且安卓原生代码每年的更改量和新增量都超过上千万行。架构的模糊和耦合,让新增功能的开发,现有功能的修改和变更,甚至BUG的修复都极其痛苦,血肉骨架混作一团,牵一发而动全身。这样的系统其实已经很难维护和持续开发。架构的选择和解耦成为不得不做的事情。

最后是版本的自动生成能力。手机版本需求复杂,有公开渠道、运营商渠道等各个不同版本。加上高、中、低档机一组合,每年发布的版本有上万个。版本管理和发布都极其复杂。CBG软件团队自行开发的CCM(版本自动编译配置平台)为这个问题的解决立下汗马功劳。公开市场、运营商市场、不同国家、不通过配置等都抽象为一个个可配置的参数,总参数量几千个。需要出版本的时候,根据目标市场的需求,选定和修改相应的配置后,一键配置下发,即可生成对应的版本。整个过程高效、高质量。这套系统上线以来,我们节省了200+的软件配置人力,一直是零差错平稳运行。

经验积累

近几年在软件开发领域,互联网化和DevOps等是非常热门的话题。我想谈一下在EMUI软件研发实践中的一些体会。EMUI全栈包括了APPs、中间件和OS底层。如果一概要求研发人员必须年轻,并且必须放弃IPD而采用互联网的迭代方式,这种做法不尽合理,容易误导团队和领导对EMUI软件研发的认知。

在软件工程能力如共主干、架构解耦不具备之前,片面地去执行年轻化和迭代开发,那将是一场灾难。上层APPs需要年轻人和快速迭代是对的,但中间件和OS,需要的是经验第一,创新第二。没有多年的经验,不可能做好底层软件。没有好的底层,上层的应用体验也不会好到哪里去。EMUI架构完全解耦的今天,APPs已经完全脱离EMUI平台独立发展,而且架构解耦的思想也落实到了APPs开发和实现中,实现了自主规划、开发和交付上架,以及全功能团队的快速迭代,这是非常接近于互联网化的开发模式。而EMUI基础平台,仍基于IPD流程,扎扎实实按计划持续开发积累,把质量做到最佳。全面Copy互联网,认为谈IPD而不谈DevOps就是落后的代表,是一种误导。IPD也好,DevOps也好,其实都是工具,关键是要准确把握业务诉求,根据业务特点选择最适宜的模式和工具。

结语

移动互联网在中国兴起繁荣的这些年的时间里,安卓和ios两大操作系统以及其对应的生态在其中扮演这很重的角色,而这两个操作系统说到底就是开源系统和闭源系统的两大阵营。至于这两个操作系统的前身都是大家熟悉的不能再熟悉的linux和nuix系统。虽然开源系统带来了高速的移动互联网甚至是物联网的繁荣发展,但是在穹顶之下是需要一代或者更长时间的持续投入。

开源带来的是集思广益,快速发展 同时我们也更应该看到无规矩不成方圆。若是无边界的放纵带来的就是android系统起初的一些包括碎片化,无权限管理,无设计规范,漏洞盛行,迭代困难等等等问题。

但是今天我们看到的是包括google公司为首来自全世界的android团队,已经越来越把android系统做的越发的完善和精致。我们有理由相信未来的移动互联会变得更好。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。