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

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.