Система сборки 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 .
Подробные инструкции по подготовке устройств X86 для сбора профилей AutoFDO см. в разделе Сбор данных LBR для AutoFDO .
Информацию о том, как включить автоматический фоновый сбор, обработку и загрузку профилей, см. в разделе Profcollect .
Анализ профилей AutoFDO
Android использует стандартные профили LLVM AutoFDO. Профили AFDO можно прочитать с помощью инструмента LLVM llvm-profdata
. Скрипт afdo_summary.sh
( toolchain/pgo-profiles/scripts/afdo_summary.sh
) автоматически генерирует наиболее часто выполняемые функции в соответствии с профилем AutoFDO.