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

В Android 12 появилась поддержка оптимизации нативных модулей Android, в которых используются правила сборки blueprint, с помощью автоматической оптимизации на основе обратной связи (AutoFDO). AutoFDO – это метод оптимизации на основе выборки. AutoFDO фиксирует поведение системных двоичных файлов во время выполнения, что позволяет компиляторам лучше оптимизировать производительность и уменьшать размер двоичных файлов. Android поддерживает сбор профилей с устройств X86, X86_64, ARM и ARM64, хотя профили можно использовать на устройствах с любой архитектурой.

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

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

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

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

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

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

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

Как собирать профили

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

  • Добавление дополнительных проектов AutoFDO.
  • наличие локально измененного кода;
  • уникальные шаблоны использования, связанные с вашей системой;

В таких случаях профили нужно собирать непосредственно с устройств разработчиков или пользователей.

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

Подробные инструкции по подготовке устройств с архитектурой x86 к сбору профилей AutoFDO приведены в статье Как собирать данные LBR для AutoFDO.

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

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

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