Ottimizzazione automatica basata sul feedback (12 o superiore)

Introdotto in Android 12, il sistema di build Android supporta l'ottimizzazione dei moduli Android nativi che dispongono di regole di build del progetto 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 ottimizzare le prestazioni e riducendo al tempo stesso le dimensioni dei file binari. AutoFDO supporta la raccolta di dati dalle architetture AArch32 e AArch64, sebbene i profili possano essere utilizzati tra architetture.

AutoFDO è il successore dell'ottimizzazione guidata dal profilo (PGO) basata sulla strumentazione.

Rispetto ad altri profili basati sulla strumentazione, AutoFDO presenta questi vantaggi aggiuntivi:

  • Raccolta dati discreta: i profili AutoFDO possono essere raccolti dai dispositivi di sviluppo o utente senza alcuna modifica per creare regole.

  • Rappresentazione dell'utilizzo nel mondo reale: AutoFDO rappresenta il comportamento di utilizzo nel mondo reale presupponendo che i profili vengano raccolti dai dispositivi degli utenti, mentre la PGO della strumentazione è rappresentativa solo del carico di lavoro di raccolta sintetica. In genere non è semplice creare un carico di lavoro di raccolta che corrisponda perfettamente all'utilizzo nel mondo reale.

AOSP viene fornito con profili AutoFDO per la maggior parte dei progetti critici in termini di prestazioni. I profili sono stati raccolti da telefoni e tablet e sono rappresentativi dei loro modelli di utilizzo generali. I profili si trovano in toolchain/pgo-profiles/sampling . AFDO è abilitato per impostazione predefinita su AOSP.

Abilita AutoFDO per una regola di creazione del progetto

Per abilitare AutoFDO per le regole di creazione del progetto, aggiungi afdo: true alla libreria condivisa o alla regola binaria.

Raccogli profili

Il profilo preraggruppato fornito con AOSP non supporta questi scenari specifici:

  • L'inclusione di ulteriori progetti AutoFDO
  • La presenza di codice modificato localmente
  • Modelli di utilizzo unici associati al tuo sistema

Se si dispone di uno di questi scenari, è necessario raccogliere i profili direttamente dai dispositivi di sviluppo o utente.

Per istruzioni dettagliate su come preparare i dispositivi ARM per la raccolta dei profili AutoFDO, fare riferimento a Raccolta dati ETM per AutoFDO .

Per informazioni su come abilitare la raccolta, l'elaborazione e il caricamento automatico dei profili in background, vedere Profcollect .

Analizzare i profili AutoFDO

Android utilizza i profili LLVM AutoFDO 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ù frequentemente in base al profilo AutoFDO.