Автоматическая оптимизация на основе обратной связи (12 или выше)

Представленная в Android 12, система сборки Android поддерживает оптимизацию собственных модулей Android, имеющих правила сборки с использованием Automatic Feedback-Directed Optimization (AutoFDO) . AutoFDO — это метод оптимизации на основе выборки. AutoFDO фиксирует поведение исполняемых файлов системы во время выполнения, позволяя компиляторам выполнять более эффективную оптимизацию производительности, а также уменьшать размер двоичных файлов. Android поддерживает сбор профилей с устройств X86, X86_64, ARM и ARM64, хотя профили могут использоваться в разных архитектурах.

AutoFDO — это преемник инструментальной оптимизации с использованием профилей (PGO).

По сравнению с другими профилями на основе инструментов AutoFDO имеет следующие дополнительные преимущества:

  • Ненавязчивый сбор данных: профили AutoFDO можно собирать с устройств разработчиков или пользователей без каких-либо изменений в правилах сборки.

  • Представление использования в реальном мире: AutoFDO представляет поведение использования в реальном мире, предполагая, что профили собираются с пользовательских устройств, в то время как инструментарий PGO представляет только рабочую нагрузку синтетического сбора. Обычно не так просто создать рабочую нагрузку сбора, которая идеально соответствует использованию в реальном мире.

AOSP поставляется с профилями AutoFDO для большинства проектов, критически важных для производительности. Профили были собраны с телефонов и планшетов и являются репрезентативными для их общих шаблонов использования. Профили находятся в toolchain/pgo-profiles/sampling . AFDO включен по умолчанию в AOSP.

Включить AutoFDO для правила сборки чертежа

Чтобы включить AutoFDO для правил сборки чертежей, добавьте afdo: true к общей библиотеке или двоичному правилу.

Собирать профили

Предварительно упакованный профиль, предоставляемый вместе с AOSP, не поддерживает следующие конкретные сценарии:

  • Включение дополнительных проектов AutoFDO
  • Наличие локально измененного кода
  • Уникальные шаблоны использования, связанные с вашей системой

Если у вас есть один из этих сценариев, вам необходимо собирать профили непосредственно с устройств разработчиков или пользователей.

Подробные инструкции по подготовке устройств ARM к сбору профилей AutoFDO см. в разделе Сбор данных ETM для AutoFDO .

Подробные инструкции по подготовке устройств X86 для сбора профилей AutoFDO см. в разделе Сбор данных LBR для AutoFDO .

Информацию о том, как включить автоматический фоновый сбор, обработку и загрузку профилей, см. в Profcollect .

Анализ профилей AutoFDO

Android использует стандартные профили LLVM AutoFDO. Профили AFDO можно прочитать с помощью инструмента LLVM llvm-profdata . Скрипт afdo_summary.sh ( toolchain/pgo-profiles/scripts/afdo_summary.sh ) автоматически генерирует наиболее часто выполняемые функции в соответствии с профилем AutoFDO.