Otimização automática direcionada por feedback (12 ou mais recente)

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 blueprint usando a otimização automática direcionada por feedback (AutoFDO). O 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 otimizações de desempenho melhores e reduzam o tamanho do binário. O Android oferece suporte à coleta de perfis de dispositivos X86, X86_64, ARM e ARM64, embora os perfis possam ser usados em todas as 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 do usuário sem modificação nas regras de build.

  • Representação de uso no mundo real: o AutoFDO representa o comportamento de uso no mundo real, supondo que os perfis sejam coletados de dispositivos do usuário, enquanto o PGO de instrumentação é representativo apenas da carga de trabalho de coleta sintética. Não é geralmente simples criar uma carga de trabalho de coleta que corresponda perfeitamente ao uso no mundo real.

O AOSP é fornecido com perfis do AutoFDO para a maioria dos projetos críticos para o desempenho. Os perfis foram coletados de smartphones e tablets e são representativos dos padrões gerais de uso. Os perfis estão localizados em toolchain/pgo-profiles/sampling. A AFDO está ativada por padrão no AOSP.

Ativar o AutoFDO para uma regra de build de blueprint

Para ativar o AutoFDO em regras de build de blueprint, anexe afdo: true à biblioteca compartilhada ou à regra binária.

Coletar perfis

O perfil pré-agrupado fornecido com o AOSP não é compatível com estes cenários específicos:

  • A inclusão de outros projetos 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, colete os perfis diretamente dos dispositivos de desenvolvimento ou dos usuários.

Para instruções detalhadas sobre como preparar dispositivos ARM para coletar perfis do AutoFDO, consulte Coletar dados de ETM para AutoFDO.

Para instruções detalhadas sobre como preparar dispositivos X86 para coletar perfis do AutoFDO, consulte Coletar dados de LBR 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 do AutoFDO.