在Android 11中,引入了IORap,这是一个新功能,可大大缩短应用程序的启动时间。我们观察到,各种设备上的应用平均启动速度(冷启动)快5%以上。有的用例显示启动时间快20%以上。
适用于Android应用程序的IORap预读
IORap通过预测将需要哪些I / O并提前进行来减少应用程序启动时间。许多应用程序在启动时需要访问I/O.很多时间会因为阻塞I / O而导致应用程序启动慢。预取数据之后,应用程序几乎可以从pagecache 中立即访问该数据,从而大大减少了应用程序启动延迟。
当我们评估Play商店中一些热门的热门应用程序时,有80%以上的app在启动期间花费了10%以上的时间来等待I / O。而约50%的app甚至花费了20%以上的时间。我们研究过的大多数应用程序都可以从IORap中受益。
IORap 工作原理
IORap 是一个service。它perfetto
通过IPC 与package manager, activity manager, perfetto
等服务交互。下图显示了IORap的总体架构:
步骤1:收集perfetto trace
IORap使用基于profiling的策略来确定要预取的I / O文件。分析数据来自perfetto trace
,它记录了kernel pagecache
页面的删除/添加(来自ftrace)。首先IOrap会通过 perfetto trace 获得 APP的前几次冷启动中,pagecache missing event 。
步骤2:产生预取清单
基于从先前步骤获得的pagecache missing event,IORap在设备的空闲时间期间生成预取文件列表。基本上,预取列表包含应用程序启动时访问的文件信息(名称,偏移,长度)。IORap 通过 perfetto分析mm_pagemap
事件,并通过inode
反转inode
为文件名并将其结果(,偏移,长度)转换为(名称,偏移,长度)。然后,数据将存储在文件的预取列表中(protobuf)
步骤3:I / O预取
生成预取列表之后,IORap可以为应用程序的后续运行预取相应的数据。用户和开发人员无需执行任何操作。当用户点击图标或通过Intent请求图标的应用程序间接点击图标时,执行预取操作。
步骤4:淘汰预取清单
预取列表不会永远存在。预取列表可能会过时。下面的情况将会更新预取列表。
过时的预取列表将被删除,然后IORap将从perfetto trace
重新开始。
改进与观察
在我们实验室中测试过较多机器,我们确定IORap的优势涵盖了从低端到高端设备。平均而言,IORap可以提供高达〜26 %的加速。对于启动过程中具有大量I / O的应用程序非常有用。例如,Spotify对低端设备(Go和Pixel 3A)和高端设备(Pixel3或4)都显示了两位数的提升。
实验期间的一个有趣观察是,IORap的性能在很大程度上受到预取数据量的影响。准确的跟踪持续时间对于IORap非常重要。较短的跟踪持续时间会导致预取的数据少于所需的数据,会导致性能提高不明显。另一方面,较长的数据导致预取的数据量超过必要的数据量,这可能导致在最坏的情况下启动速度变慢。IORap使用应用程序报告ReportFullyDrawn
事件的时间戳来估计trace持续时间。对于未报告此事件的应用,将使用显示时间。因此reportFullyDrawn
,在适当的时间调用回调可以提高IORap的性能。
未来发展
我们对IORap所表现出的改进感到很兴奋,并且我们计划将来在以下两个方向上进一步探索。首先,更频繁地预取。如果可以在分析期间完成预取,那将对应用程序启动会有很大的帮助。然后,可以通过提供预构建的预取列表来消除在生成预取列表之前的一些性能差距。其次,IORap可以预测应用程序将更早启动并开始预取,从而进一步缩短了启动时间。
结论
您可以ReportFullyDrawn
在应用程序启动完成后调用回调来帮助IORap 。IORap主要有助于减少I / O阻塞时间,因此请考虑对应用程序启动进行性能分析,以解决其他可能的性能问题。
其他
很早很早之前,在X通的SW 上有就有类似的方案。现在Google 更激进把此方案纳入了AOSP。OS 才能一统江湖。不知Google 是否会为此交X通专利费。且用且珍惜!
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有