Introdotto in Android 12, il sistema di compilazione di Android supporta l'ottimizzazione dei moduli Android nativi con regole di compilazione del blueprint utilizzando l'ottimizzazione automatica basata sul feedback (AutoFDO). AutoFDO è una tecnica di ottimizzazione basata sul campionamento. AutoFDO acquisisce il comportamento di runtime dei file binari di sistema, consentendo ai compilatori di eseguire ottimizzazioni del rendimento migliori e di ridurre al contempo le dimensioni dei file binari. Android supporta la raccolta dei profili da dispositivi X86, X86_64, ARM e ARM64, anche se i profili possono essere utilizzati su più architetture.
AutoFDO è il successore dell'ottimizzazione guidata dal profilo (PGO) basata su strumenti.
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 smartphone e tablet e sono rappresentativi
delle loro modalità di utilizzo generali. I profili si trovano in toolchain/pgo-profiles/sampling
. AFDO è attivo per impostazione predefinita su AOSP.
Attivare l'auto-FDO per una regola di compilazione del blueprint
Per attivare la funzionalità AutoFDO per le regole di compilazione del blueprint, aggiungi afdo: true
alla biblioteca o alla regola di codice binario condivisa.
Raccogliere i profili
Il profilo precompilato fornito con AOSP non supporta questi 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 istruzioni dettagliate su come preparare i dispositivi X86 per raccogliere i profili AutoFDO, consulta Raccogliere i dati LBR per AutoFDO.
Per informazioni su come attivare la raccolta, l'elaborazione e il caricamento automatici dei profili in background, consulta Profcollect.
Analizza 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.