Introduzido no Android 12, o sistema de build do Android oferece suporte à otimização de módulos Android nativos com regras de build de modelo usando a otimização automática direcionada por feedback (AutoFDO, na sigla em inglês). O AutoFDO é uma técnica de otimização baseada em amostragem. O AutoFDO captura o comportamento de execução dos binários do sistema, permitindo que os compiladores façam otimizações de desempenho melhores, além de reduzir o tamanho binário. O Android oferece suporte à coleta de perfis de dispositivos X86, X86_64, ARM e ARM64, embora os perfis possam ser usados em várias arquiteturas.
O AutoFDO é o sucessor da otimização guiada por perfil (PGO) baseada em instrumentação.
Em comparação com outros perfis baseados em instrumentação, o AutoFDO tem estes benefícios adicionais:
Coleta de dados discreta: os perfis do AutoFDO podem ser coletados de dispositivos de desenvolvimento ou de usuários sem nenhuma modificação nas regras de build.
Representação de uso real: o AutoFDO representa o comportamento de uso real assumindo que os perfis são coletados dos dispositivos dos usuários, enquanto a PGO de instrumentação é representativa apenas da carga de trabalho de coleta sintética. Geralmente, não é simples criar uma carga de trabalho de coleta que corresponda perfeitamente ao uso no mundo real.
O AOSP é enviado com perfis AutoFDO para a maioria dos projetos críticos para o desempenho. Os
perfis foram coletados de dispositivos de smartphone e tablet e representam
os padrões de uso gerais. Os perfis estão localizados em
toolchain/pgo-profiles/sampling
. O AFDO é ativado por padrão no AOSP.
Ativar o AutoFDO para uma regra de build de modelo
Para ativar o AutoFDO para regras de build de modelo, anexe afdo: true
à regra
binária ou à biblioteca compartilhada.
Coletar perfis
O perfil pré-empacotado fornecido com o AOSP não oferece suporte a esses cenários específicos:
- A inclusão de outros projetos da AutoFDO
- Presença de código modificado localmente
- Padrões de uso exclusivos associados ao seu sistema
Se você tiver um desses cenários, colete os perfis diretamente dos dispositivos de desenvolvimento ou do usuário.
Para instruções detalhadas sobre como preparar dispositivos ARM para coletar perfis de AutoFDO, consulte Coletar dados de ETM para AutoFDO.
Para informações sobre como ativar a coleta, o processamento e o upload automáticos de perfis em segundo plano, consulte Profcollect.
Analisar perfis do AutoFDO
O Android usa perfis padrão do LLVM AutoFDO. Os perfis AFDO podem ser lidos
usando a ferramenta llvm-profdata
do LLVM. O script afdo_summary.sh
(toolchain/pgo-profiles/scripts/afdo_summary.sh
)
gera automaticamente as funções executadas com mais frequência de acordo com o
perfil AutoFDO.