Android对性能要求,Android性能管理

管理Android设备的功耗和性能有助于确保应用程序在各种硬件上始终如一地顺畅运行。在Android 7.0及更高版本中,OEM可以实现对持续性能提示的支持,使应用程序能够保持一致的设备性能,并指定专属核以提高CPU密集型前台应用程序的性能。

持续性能

对于长时间运行的应用程序(游戏,相机,渲染脚本,音频处理),​​性能会随着设备温度限制和片上系统(SoC)引擎限制而显着变化。应用程序开发人员创建高性能,长期运行的应用程序是受限的,因为当设备开始升温时,底层平台的功能是波动的。

为了解决这些限制,Android 7.0引入了对持续性能的支持,使OEM能够为长期运行的应用程序提供设备性能功能的提示。应用程序开发人员可以使用这些提示来调整应用程序,以便在很长一段时间内获得可预测的,一致的设备性能水平。

架构

Android应用程序可以请求平台进入持续性能模式,使Android设备可以在较长时间内保持一致的性能水平。

power_sustained_perf.png

实现

为了在Android 7.0及更高版本上支持持续性能,OEM必须:

对特定设备的电源HAL进行更改,以锁定最大CPU / GPU频率或执行其他优化以防止热量限制。

在电源HAL中实现POWER_HINT_SUSTAINED_PERFORMANCE新提示。

声明支持通过isSustainedPerformanceModeSupported()API 返回TRUE 。

实现Window.setSustainedPerformanceMode。

在Nexus参考实现中,功率提示将CPU和GPU的最大频率限制在最高可持续水平。记住,降低CPU / GPU频率中的MAX条会降低帧速率,但由于其可持续性,在此模式下首选此速率较低。例如,使用正常最大时钟的设备能够在60 FPS下渲染几分钟,但在设备加热后,它可能会在30分钟结束时节流至30 FPS。使用持续模式时,设备可以在整个30分钟内以45 FPS持续渲染。目标是在不使用模式时使用与帧速率一样高(或更高)的模式时的帧速率,并且随着时间的推移保持一致,以便开发人员不必追逐移动目标。

我们强烈建议实施持续模式,使设备实现最高可能的持续性能 - 而不仅仅是通过测试所需的最小值(例如,选择尽可能高的MAX频率上限,不会导致设备随时间受热量限制)。

注意:实现持续模式不需要限制MAX时钟速率。

验证

OEM可以使用CTS测试(Android 7.0及更高版本)来验证其持续性能API的实现。测试运行大约30分钟的工作负载,并在启用和不启用持续模式的情况下进行性能基准测试:

启用持续模式后,帧速率必须保持相对恒定(测试计量帧速率随时间变化的百分比,并要求<5%的变化)。

启用持续模式后,帧速率不得低于禁用持续模式30分钟后的帧速率。

此外,您可以使用多个CPU和GPU密集型工作负载手动测试您的实现,以确保设备在使用30分钟后不会受热量限制。在内部测试中,我们使用了工作负载样例,包括游戏和基准测试应用程序(例如 gfxbench)。

专属核

对于CPU密集型,时间敏感的工作负载,是否会被另一个线程抢占与是否设置帧结束时间有关。对于具有严格延迟和帧速率要求的应用程序(例如音频或虚拟现实应用程序),拥有专属CPU核可以保证可接受的性能水平。

运行Android 7.0或更高版本的设备现在可以为顶级前台应用程序明确保留一个核,从而提高所有前台应用程序的性能,并为具有高强度工作负载的应用程序提供更多控制,以便跨CPU核分配工作。

要在设备上支持专属核:

启用cpusets并配置cpuset仅包含最前台应用程序的应用程序。

确保此cpusets为线程保留一个核(即专属核)。

实现getExclusiveCores API以返回专属核的核编号。

要确定在哪些核上安排了哪些进程,在运行任何工作负载时使用systrace 验证除了最前台应用程序之外,无任何其他应用程序的用户空间线程在专属核上调度。

要查看Nexus 6P的参考实现,请参阅 android//device/huawei/angler/power/power.c。

你可能感兴趣的:(Android对性能要求)