Introduzido no Android 12, o sistema de build do Android oferece suporte à otimização de módulos nativos do Android que têm regras de build de diagramas usando a otimização automática direcionada por feedback (AutoFDO). A AutoFDO é uma técnica de otimização baseada em amostragem. Ela captura o comportamento de execução de binários do sistema, permitindo que os compiladores façam otimizações de performance melhores e também reduzam 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 arquiteturas.
A AutoFDO é a sucessora da otimização guiada por perfil (PGO, na sigla em inglês) baseada em instrumentação.
Em comparação com outros perfis baseados em instrumentação, a AutoFDO tem estes benefícios adicionais:
Coleta de dados discreta: os perfis da AutoFDO podem ser coletados de dispositivos de desenvolvimento ou do usuário sem qualquer modificação nas regras de build.
Representação de uso real: a AutoFDO representa o comportamento de uso real, supondo que os perfis sejam coletados de dispositivos do usuário, 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 real.
O AOSP é fornecido com perfis da AutoFDO para a maioria dos projetos críticos de performance. Os perfis foram coletados de smartphones e tablets e são representativos dos padrões de uso gerais. Os perfis estão localizados em toolchain/pgo-profiles/sampling. A AFDO é ativada por padrão no AOSP.
Ativar a AutoFDO para uma regra de build de diagrama
Para ativar a AutoFDO para regras de build de diagrama, anexe afdo: true à biblioteca compartilhada ou à regra binária.
Coletar perfis
O perfil pré-empacotado fornecido com o AOSP não oferece suporte a estes cenários específicos:
- A inclusão de outros projetos da 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, colete perfis diretamente de dispositivos de desenvolvimento ou do usuário.
Para instruções detalhadas sobre como preparar dispositivos ARM para coletar perfis da AutoFDO, consulte Coletar dados ETM para a AutoFDO.
Para instruções detalhadas sobre como preparar dispositivos X86 para coletar perfis da AutoFDO, consulte Coletar dados LBR para a 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 da AutoFDO
O Android usa perfis padrão da AutoFDO do LLVM. Os perfis da AFDO podem ser lidos usando a ferramenta llvm-profdata do LLVM. O afdo_summary.sh script
(toolchain/pgo-profiles/scripts/afdo_summary.sh)
gera automaticamente as funções executadas com mais frequência de acordo com o
perfil da AutoFDO.