Android 12 推出的 Android 建構系統,可使用自動回饋導向最佳化 (AutoFDO) 技術,針對具有設計圖建構規則的原生 Android 模組進行最佳化。AutoFDO 是一種以取樣為基礎的最佳化技巧。AutoFDO 會擷取系統二進位檔的執行階段行為,讓編譯器進行更佳的效能最佳化,同時縮減二進位檔大小。Android 支援從 X86、X86_64、ARM 和 ARM64 裝置收集設定檔,但這些設定檔可跨架構使用。
AutoFDO 是基於檢測的設定檔引導最佳化 (PGO) 的後繼者。
與其他以檢測為基礎的設定檔相比,AutoFDO 具有以下額外優點:
不打擾的資料收集:AutoFDO 設定檔可從開發或使用者裝置收集,無須修改建構規則。
實際使用行為表示:AutoFDO 會假設設定檔是從使用者裝置收集,代表實際使用行為,而檢測 PGO 只代表合成收集工作負載。一般來說,要建立與實際使用情境完全相符的收集工作負載並不容易。
AOSP 會為大部分效能至關重要的專案提供 AutoFDO 設定檔。這些設定檔是從手機和平板電腦裝置收集而來,代表使用者一般使用模式。設定檔位於 toolchain/pgo-profiles/sampling
下方。AOSP 預設會啟用 AFDO。
為藍圖建構規則啟用 AutoFDO
如要為藍圖建構規則啟用 AutoFDO,請將 afdo: true
附加至共用程式庫或二進位規則。
收集設定檔
AOSP 提供的預先內含設定檔不支援以下特定情況:
- 納入其他 AutoFDO 專案
- 是否有本機修改的程式碼
- 與系統相關的獨特使用模式
如果您遇到上述任一情況,就必須直接從開發人員或使用者的裝置收集設定檔。
如需詳細的操作說明,瞭解如何準備 ARM 裝置以收集 AutoFDO 設定檔,請參閱「收集 AutoFDO 的 ETM 資料」。
如要進一步瞭解如何準備 X86 裝置以收集 AutoFDO 設定檔,請參閱「收集 AutoFDO 的 LBR 資料」。
如要進一步瞭解如何啟用自動背景剖析資料收集、處理和上傳功能,請參閱「Profcollect」。
分析 AutoFDO 設定檔
Android 使用標準 LLVM AutoFDO 設定檔。您可以使用 LLVM 的 llvm-profdata
工具讀取 AFDO 設定檔。afdo_summary.sh
指令碼 (toolchain/pgo-profiles/scripts/afdo_summary.sh
) 會根據 AutoFDO 設定檔自動產生執行頻率最高的函式。