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

Система сборки Android, представленная в Android 12, поддерживает оптимизацию собственных модулей Android, имеющих правила сборки чертежей, с использованием автоматической оптимизации на основе обратной связи (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 .

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

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

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