Introduzido no Android 12, o sistema de compilação do Android oferece suporte à otimização de módulos Android nativos que possuem regras de compilação de blueprint usando Automatic Feedback-Directed Optimization (AutoFDO) . AutoFDO é uma técnica de otimização baseada em amostragem. O AutoFDO captura o comportamento de tempo de execução dos binários do sistema, permitindo que os compiladores façam melhores otimizações de desempenho e, ao mesmo tempo, reduzam o tamanho do binário. AutoFDO oferece suporte à coleta de dados das arquiteturas AArch32 e AArch64, embora os perfis possam ser usados em várias arquiteturas.
AutoFDO é o sucessor da Otimização Guiada por Perfil (PGO) baseada em instrumentação.
Comparado a 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ário sem qualquer modificação nas regras de construção.
Representação de uso no mundo real: o AutoFDO representa o comportamento de uso no mundo real, assumindo que os perfis são coletados dos dispositivos do usuário, enquanto a instrumentação PGO é 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 vem com perfis AutoFDO para a maioria dos projetos de desempenho crítico. Os perfis foram coletados de telefones e tablets e são representativos de seus padrões gerais de uso. Os perfis estão localizados em toolchain/pgo-profiles/sampling
. AFDO está habilitado por padrão no AOSP.
Habilite o AutoFDO para uma regra de construção de blueprint
Para ativar o AutoFDO para regras de construção de blueprint, anexe afdo: true
à biblioteca compartilhada ou regra binária.
Colete perfis
O perfil pré-agrupado fornecido com AOSP não oferece suporte a estes cenários específicos:
- A inclusão de projetos adicionais do AutoFDO
- A presença de código modificado localmente
- Padrões de uso exclusivos associados ao seu sistema
Se você tiver um desses cenários, deverá coletar perfis diretamente dos dispositivos de desenvolvimento ou de usuário.
Para obter instruções detalhadas sobre como preparar dispositivos ARM para coletar perfis AutoFDO, consulte Coletar dados ETM para AutoFDO .
Para obter informações sobre como ativar a coleta, o processamento e o upload automáticos de perfis de segundo plano, consulte Profcollect .
Analise perfis AutoFDO
O Android usa perfis LLVM AutoFDO padrão. 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.