10月28日,在第18届“中国Linux内核开发者大会”(以下简称CLK)上,OPPO平台软件开发中心GM、软件系统优化技术专家许珉嘉分享了ColorOS下基于使用者真实的体验改善的Linux内核优化方案,并公布了可编程内核技术方向,极大程度提升流畅性细节体验,从底层解决安卓卡顿问题。
CLK是中国Linux内核领域颇影响力的峰会之一,至今已举办至第18届,每届大会都由行业内颇具影响力的企业承办,参会人数近500人。受CLK组委会委托,本届大会由OPPO承办,10月28日在深圳开幕。大会设置主论坛,以及内存管理、云和服务器、Arch&虚拟化&I/O、调试/eBPF/调度四个分论坛。在本届大会中,OPPO围绕内存优化和内核调度等课题进行了主题演讲。
大会上,OPPO高级底层软件工程师韩传华发表了《动态大页:基于ARM64ContiguousPTE的64KBHugePage/LargeFolios》的课题演讲,阐述了OPPO的动态大页方案,为提升内存分配效率,提升安卓应用性能提供了新的思路。多个方面数据显示,采用OPPO的动态大页方案,Rambench内存访问性能平均提升10%+,Androbench数据库更新性能提升16%+,Antutu跑分总分提升22214+,内存压缩率、丢帧、连续启动应用等方面也有不同程度的提升。
为进一步优化内存运行效率,提升高负载下游戏、相机和应用切换等场景的流畅性,OPPO还推出感知page映射频度和lockcontention的LRU回收优化方案,进一步减小内存回收负载,提升回收率,有效改善用户的性能体验。
众所周知,Linux内核并发保护机制在保护共享数据的同时,也可能引入一些性能问题,直接影响用户面的体验,如移动端APP界面滑动出现卡顿感。OPPO针对这样一些问题对『任务持锁期的调度』和『任务等锁期的排队』进行了策略优化。据OPPO高级底层软件工程师谢柳杰介绍:”优化后,uxtask超过50ms的等锁延迟次数降低70%+,mutex/rwsem竞争烈度降低30%+,乐观自旋时间总体下降11%+”,有效提升手机流畅性。
针对原生内核调度器没办法保证对图形绘制、音频编解码等时延敏感型任务调度延迟的问题,OPPO内核团队设计了基于任务调度延迟的balance方案,在原生内核的基础上进行定制和优化,提升关键任务的响应速度和实时性能,从而提供更流畅的使用者真实的体验。据统计,使用该方案的手机设备丢帧概率降低22.97%,音频卡音概率降低20%。
此次 OPPO 还在大会主论坛上,公布了可编程内核技术方向,并宣布 ColorOS 于未来也将会持续在可编程内核上演进,不断聚焦可编程CPU调度器、可编程内存管理、可编程 IO 调度机制等领域,进而针对每个手机场景做到极致的细节优化。
OPPO平台软件开发中心GM、软件系统优化技术专家许珉嘉强调:“手机与桌面与服务器系统,无论在硬件架构、软件架构和用户关切上都有着很大的差异。这要求我们在LinuxOS层面从各个维度进行针对移动电子设备场景的优化。”
ColorOS从使用者真实的体验改善出发,针对流畅性、稳定性等直接影像使用者真实的体验的优化方向,进行系统的问题归因,下钻拆解到内核层级,逐一寻找优化方案,对标准Linux内核做改造,推出更适合移动电子设备的可编程内核技术方案。正是这种认真做事的方式,才让我们正真看到ColorOS十年来,在每一代的更新上都有着亮眼的性能表现提升。
可编程内核是对底层技术的重大改造,这不仅需要长期的技术积累,更需要庞大研发投入。OPPO自身的开发团队暂且不提,仅2022年OPPO的产学研合作费用就突破了1.5亿,签约了12所高校联合实验室,课题合作高校超30+,技术课题150+,支撑了ColorOS的技术底座。
同时,OPPO也本着更开放的态度拥抱开源,成立了专门的团队来对接开源社区,热情参加目前开源社区的研究,同时积极把ColorOS对内核的研究成果与开源社区分享,这种模式必然能形成技术能力互补的正向循环。未来,ColorOS将继续围绕可编程内核技术方向,深入底层进行技术改造,充分细分系统算力资源,逐步提升流畅细节表现。