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 nativi di Android che hanno regole di build di 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 delle prestazioni migliori e di ridurre 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 tutte le architetture.

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

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

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

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

Abilitare AutoFDO per una regola di build di blueprint

Per abilitare AutoFDO per le regole di build di blueprint, aggiungi afdo: true alla regola della libreria condivisa o del file binario.

Raccogliere i profili

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

  • L'inclusione di progetti AutoFDO aggiuntivi
  • La presenza di codice modificato localmente
  • Pattern di utilizzo univoci associati al tuo sistema

Se rientri in uno di questi scenari, devi 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, consulta Raccogliere i dati ETM per AutoFDO.

Per istruzioni dettagliate su come preparare i dispositivi X86 per la raccolta dei profili AutoFDO, consulta Raccogliere i dati LBR per AutoFDO.

Per informazioni su come abilitare 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 afdo_summary.sh script (toolchain/pgo-profiles/scripts/afdo_summary.sh) genera automaticamente le funzioni eseguite più di frequente in base al profilo AutoFDO.