Ottimizzazione automatica in base al feedback (12 o versioni successive)

Introdotto in Android 12, il sistema di compilazione Android supporta l'ottimizzazione dei moduli Android nativi che hanno regole di compilazione blueprint utilizzando l'ottimizzazione automatica guidata dal feedback (AutoFDO). AutoFDO è una tecnica di ottimizzazione basata sul campionamento. AutoFDO acquisisce il comportamento di runtime dei binari di sistema, consentendo ai compilatori di eseguire ottimizzazioni delle prestazioni migliori e di ridurre le dimensioni dei binari. Android supporta la raccolta di profili da dispositivi X86, X86_64, ARM e ARM64, anche se i profili possono essere utilizzati in tutte le architetture.

AutoFDO è il successore dell'ottimizzazione Profile-Guided Optimization (PGO) basata sulla strumentazione.

Rispetto ad altri profili basati su strumentazione, AutoFDO offre i seguenti vantaggi aggiuntivi:

  • Raccolta dei dati non intrusiva: i profili AutoFDO possono essere raccolti da dispositivi di sviluppo o utente senza alcuna modifica alle regole di compilazione.

  • Rappresentazione dell'utilizzo nel mondo reale: AutoFDO rappresenta il comportamento di utilizzo nel mondo reale supponendo che i profili vengano raccolti dai dispositivi degli utenti, mentre PGO di strumentazione è rappresentativo 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 per le prestazioni. I profili sono stati raccolti da smartphone e tablet e sono rappresentativi dei loro modelli di utilizzo generali. I profili si trovano nella sezione toolchain/pgo-profiles/sampling. AFDO è attivo per impostazione predefinita su AOSP.

Abilitare AutoFDO per una regola di compilazione del progetto

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

Raccogliere i profili

Il profilo preinstallato 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 rientri in 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 la raccolta dei profili AutoFDO, consulta Raccogliere dati ETM per AutoFDO.

Per istruzioni dettagliate su come preparare i dispositivi X86 per la raccolta dei profili AutoFDO, consulta Raccogliere dati LBR 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 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.