Introdotto in Android 12, il sistema di build Android supporta l'ottimizzazione dei moduli Android nativi che hanno regole di build del progetto tramite l'ottimizzazione automatica basata sul feedback (AutoFDO). AutoFDO è una tecnica di ottimizzazione basata sul campionamento. AutoFDO acquisisce il comportamento di runtime dei programmi binari di sistema, consentendo ai compilatori di ottimizzare le prestazioni in modo più efficiente e di ridurre al contempo le dimensioni dei file binari. Android supporta la raccolta di profili da dispositivi X86, X86_64, ARM e ARM64, anche se i profili possono essere utilizzati su più architetture.
AutoFDO è il successore della Profile-Guided Optimization (PGO) basata sulla strumentazione.
Rispetto ad altri profili basati su strumenti, AutoFDO offre i seguenti vantaggi aggiuntivi:
Raccolta di dati non invasiva: i profili AutoFDO possono essere raccolti dai dispositivi di sviluppo o degli utenti senza alcuna modifica alle regole di compilazione.
Rappresentazione dell'utilizzo reale: AutoFDO rappresenta il comportamento di utilizzo reale supponendo che i profili vengano raccolti dai dispositivi degli utenti, mentre la misurazione PGO è rappresentativa solo del carico di lavoro di raccolta sintetica. In genere, non è semplice creare un carico di lavoro della raccolta che corrisponda perfettamente all'utilizzo reale.
AOSP viene fornito con profili AutoFDO per la maggior parte dei progetti critici per le prestazioni. I profili sono stati raccolti da dispositivi mobili e tablet e sono rappresentativi dei relativi modelli di utilizzo generali. I profili si trovano in toolchain/pgo-profiles/sampling
. AFDO è attivo per impostazione predefinita su AOSP.
Abilita AutoFDO per una regola di build del progetto
Per abilitare AutoFDO per le regole di build del progetto, aggiungi afdo: true
alla libreria condivisa o alla regola binaria.
Raccogliere i profili
Il profilo pre-in bundle fornito con AOSP non supporta i seguenti scenari specifici:
- L'inclusione di altri progetti AutoFDO
- La presenza di codice modificato localmente
- Modelli di utilizzo unici associati al tuo sistema
Se hai uno di questi scenari, devi raccogliere i profili direttamente dai dispositivi di sviluppo o degli utenti.
Per istruzioni dettagliate su come preparare i dispositivi ARM per raccogliere i profili AutoFDO, consulta Raccogliere i dati ETM per AutoFDO.
Per informazioni su come attivare la raccolta, l'elaborazione e il caricamento automatici dei profili in background, consulta Profcollect.
Analizzare i profili AutoFDO
Android utilizza i profili AutoFDO LLVM standard. I profili AFDO possono essere letti utilizzando lo strumento llvm-profdata
di LLVM. Lo script afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
)
genera automaticamente le funzioni eseguite più di frequente in base al
profilo AutoFDO.