2019年9月26日,华为年度旗舰Mate30系列在上海发布,http://cn.yixiin.com/ 除了一如既往的顶级硬件配置外,在EMUI系统层面华为也拿出了十足诚意,大幅提高了系统流畅性和增强了稳定性。
在讲到软件性能优化时,华为消费者业务CEO余承东提到EMUI10搭载了新一代GPU Turbo,以及另一个大家相对陌生的技术——“确定时延引擎”。
据余承东介绍,“拥有确定时延引擎的EMUI10,在平均响应时延和性能波动方面均有所改善,完成时延降低31%,时延波动率降低55%。无论在哪种场景下,用户体验流畅性始终如一。 ”
然而,很多人或许还是似懂非懂,究竟什么是“确定时延引擎”?为何它能给手机带来稳定流畅的体验?这还要从安卓资源调度策略说起。
力不从心的Linux资源调度
众所周知,安卓系统源于Linux,安卓资源调度也根植于Linux内核。手机相对于PC,并不充裕的资源以及更加复杂多变的使用场景,使得源于Linux的资源调度策略越来越力不从心,安卓手机遭遇莫名卡顿也是常有的事。
要想改变这一现状,势必要从CPU调度、内存调度、IO这三个方面下手,撬动Linux内核。
首先, Linux中CPU调度策略倾向于公平调度,而安卓更像是当前“僧多粥少”的社会竞争状态,不合时宜的调度,导致了手机上CPU调用准确度和效率都打了折扣。
其次,由于内存分配和回收不具备前后台进程区分的能力,不管前台还是后台发起的内存请求,系统都公平对待。这样就会导致在系统多任务并发的情况下,导致内存无序竞争资源而陷入卡顿。
第三,几乎手机的每一个操作都涉及到读取和写入(IO),当系统中出现大量IO请求,超出手机存储设备的并发处理能力时,不能及时处理的IO请求就缓存在系统的软件队列和存储设备的硬件队列中,如此再大的内存也要堵车了。
确定时延引擎 让后台不再无序
应运而生的确定时延引擎,不仅让EMUI更快更流畅,而且更稳定。
为了这项黑科技,华为投入数百位技术专家,耗时近2年研发而成。基于此前多年来对安卓系统的深刻理解和持续的创新实践,再次对整个安卓系统从框架到内核进行了一次大手术。
正如前文所述,当Linux内核资源调度策略失当,后台应用占用过多CPU、内存或者IO时,确定时延引擎的三大变革——“VIP优先调度”、“优先级矫正”、“预留服务”便有了用武之地,让资源真正用在刀刃上,保障用户体验的流畅稳定。
确定时延引擎的首项变革——提供VIP优先调度服务
类似银行的VIP通道,让本应该优先的进程可以绕过队列,保障执行效率。不仅如此,华为还对网络协议栈进行了改造,针对低优先级的部分网络业务进行协议上的限流。在网络带宽一定的情况下,尽可能保障“前台”业务的IO请求。
确定时延引擎的第二项变革——优先级矫正,破除任务依赖
由于Linux内核无法感知线程间的依赖关系,那么如果一个高优先级的任务依赖于低优先级的任务,就需要将低优先级任务提前。
在这方面,确定时延引擎首先是对相关数据结构重新设计,赋予了CPU和IO调度器业务感知能力,能够精确知道哪些线程在哪些时间段是跟用户操作真正相关的。
比如A去自动取款机取钱,B排在A后面存钱。此时取款机恰好没钱了,那么要么等待银行来给自动取款机补充资金,要么提高B优先级,使其先存钱。两者优劣高下立判。
正是这种对“前台”的私有化CPU和IO的定制,保障了用户的最佳体验。
确定时延引擎的第三项变革——让系统做到“预留服务先知先觉”
关于这点,我们可以先用城市道路的公交专用车道做个比喻。
城市里的公交专用车道,是专门为公交车在特定时间通行的车道,主要功能是方便公交网络应对各种高峰时段和突发状况带来的道路拥堵问题。在高峰期时段中,起到保障城市内部道路通畅的作用。
确定时延引擎在Linux原有调度策略上进行了增强,能够精确识别哪些任务是“公交车”, 这些任务是否可以走“公交专用车道”,若是,则提前为其预留相关资源,从而提高其任务处理效率,保障用户操作路径上的关键资源供给。
如果把上面的例子套用在内存调度上,则表示智慧前台调度既可以保证“前台”任务请求内存优先分配,减少进入慢速路径的次数,又可以在高负载情况下缓解内存抖动现象。
EMUI创新背后是华为对 “无人区”的不断探索
从EMUI5.0开始,华为陆续推出了“18个月持续流畅”的革命性体验、GPU Turbo、EROFS超级文件系统、方舟编译器以及确定时延引擎等针对系统内核进行的改动。从根本上突破了安卓智能手机越用越卡顿的弊端,并深刻改变了此后安卓的用户体验。
EMUI在不断“进化”,而这需要投入大量的时间和精力进行研发,每一次尝试都是华为对“无人区”发起的探索。凭借深厚的技术和人才积累,华为对系统极限体验的探索还在继续,究竟华为还藏着多少“黑科技”,就让我们一起拭目以待吧。
http://cn.yixiin.com/news/