Ottimizzazione automatica orientata al feedback (12 o superiore)

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.