績效管理,績效管理

管理 Android 設備的電源和性能有助於確保應用程序在各種硬件上始終如一地平穩運行。在 Android 7.0 及更高版本中,OEM 可以實現對持續性能提示的支持,使應用能夠保持一致的設備性能,並指定專用內核來提高 CPU 密集型前台應用程序的性能。

持續表現

對於長時間運行的應用程序(遊戲、相機、 RenderScript 、音頻處理),當達到設備溫度限制和片上系統 (SoC) 引擎受到限制時,性能可能會發生巨大變化。開發高性能、長時間運行的應用程序的應用程序開發人員受到限制,因為當設備開始升溫時,底層平台的功能是一個移動的目標。

為了解決這些限制,Android 7.0 引入了對持續性能的支持,使 OEM 能夠為長時間運行的應用程序提供有關設備性能能力的提示。應用程序開發人員可以使用這些提示來調整應用程序,以在很長一段時間內實現可預測的、一致的設備性能水平。

建築學

Android 應用程序可以請求平台進入持續性能模式,在這種模式下,Android 設備可以長時間保持一致的性能水平。

圖 1.持續性能模式架構

執行

為了支持 Android 7.0 及更高版本的持續性能,OEM 必須:

  • 對電源 HAL 進行特定於設備的更改,以鎖定最大 CPU/GPU 頻率執行其他優化以防止熱節流。
  • 在 power 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
  • 確保為來自此cpuset的線程保留一個核心(這是獨占核心)。
  • 實現 getExclusiveCores API 以返回獨享核心的核心編號。

要確定哪些進程安排在哪些內核上,請在運行任何工作負載時使用systrace ,並驗證除頂級前台應用程序之外的應用程序的用戶空間線程沒有安排在獨占內核上。

要查看 Nexus 6P 的參考實現,請參閱android//device/huawei/angler/power/power.c

,

管理 Android 設備的電源和性能有助於確保應用程序在各種硬件上始終如一地平穩運行。在 Android 7.0 及更高版本中,OEM 可以實現對持續性能提示的支持,使應用能夠保持一致的設備性能,並指定專用內核來提高 CPU 密集型前台應用程序的性能。

持續表現

對於長時間運行的應用程序(遊戲、相機、 RenderScript 、音頻處理),當達到設備溫度限制和片上系統 (SoC) 引擎受到限制時,性能可能會發生巨大變化。開發高性能、長時間運行的應用程序的應用程序開發人員受到限制,因為當設備開始升溫時,底層平台的功能是一個移動的目標。

為了解決這些限制,Android 7.0 引入了對持續性能的支持,使 OEM 能夠為長時間運行的應用程序提供有關設備性能能力的提示。應用程序開發人員可以使用這些提示來調整應用程序,以在很長一段時間內實現可預測的、一致的設備性能水平。

建築學

Android 應用程序可以請求平台進入持續性能模式,在這種模式下,Android 設備可以長時間保持一致的性能水平。

圖 1.持續性能模式架構

執行

為了支持 Android 7.0 及更高版本的持續性能,OEM 必須:

  • 對電源 HAL 進行特定於設備的更改,以鎖定最大 CPU/GPU 頻率執行其他優化以防止熱節流。
  • 在 power 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
  • 確保為來自該cpuset的線程保留一個核心(這是獨占核心)。
  • 實現 getExclusiveCores API 以返回獨享核心的核心編號。

要確定哪些進程安排在哪些核心上,請在運行任何工作負載時使用systrace ,並驗證除頂級前台應用程序之外的應用程序的用戶空間線程沒有安排在獨占核心上。

要查看 Nexus 6P 的參考實現,請參閱android//device/huawei/angler/power/power.c