Команда разработчиков набора инструментов Android LLVM сообщила о внедрении технологии автоматической оптимизации на основе обратной связи в ядро операционной системы Android. Эта технология, известная как AutoFDO, призвана значительно повысить общую производительность операционной системы. Ранее основные усилия по оптимизации были сосредоточены в пользовательском пространстве, однако именно ядро системы потребляет около 40 процентов процессорного времени.
Во время стандартной сборки программного обеспечения компилятор принимает более 1000 мелких решений на основе статических подсказок в коде. Технология AutoFDO меняет этот подход, используя реальные шаблоны выполнения для управления компилятором. Эти шаблоны отражают наиболее частые пути выполнения инструкций. Для ядра системы данные собираются в лабораторных условиях с использованием репрезентативных рабочих нагрузок, например, при запуске 100 самых популярных приложений.
Инструмент профилирования выявляет горячие и холодные участки кода. На основе этих профилей компилятор принимает более точные решения по оптимизации. По словам разработчиков, использование AutoFDO для нативных исполняемых файлов и библиотек уже позволило ускорить холодный запуск приложений на 4 процента и сократить время загрузки на 1 процент.
Внедрение профилей в контролируемых лабораторных условиях на устройствах Pixel с версиями ядер 6.1, 6.6 и 6.12 показало впечатляющие результаты. Согласно предоставленным графикам, эффективность Binder-rpc выросла на 21.7 процента, Hwbinder стал работать быстрее на 20 процентов, а транзакции Binder улучшились на 12.3 процента. Эффективность системных вызовов повысилась на 9.3 процента. Кроме того, время холодного запуска приложений сократилось на 4.3 процента, а время загрузки системы уменьшилось на 2.1 процента.
Процесс развертывания включает 3 основных этапа. На этапе сбора профилей тестовые устройства прошиваются последним образом ядра. Система создает репрезентативную нагрузку из 100 самых популярных приложений из набора Android App Compatibility Test Suite. Синтезированная рабочая нагрузка показывает сходство в 85 процентов с шаблонами выполнения, собранными с внутренних устройств компании.
Затем сырые данные трассировки проходят постобработку. Данные агрегируются, конвертируются в формат профиля AutoFDO и обрезаются для удаления холодных функций, чтобы предотвратить снижение производительности в редко используемом коде и избежать увеличения размера бинарных файлов. Перед развертыванием профили проходят строгую проверку производительности и анализ бинарных файлов.
Чтобы поддерживать максимальную производительность, разработчики планируют регулярно обновлять профили. В настоящее время обновления поставляются для веток ядер android16-6.12 и android15-6.6, а в будущем поддержка будет расширена на новые версии, включая android17-6.18. Технология сохраняет функциональную целостность ядра, так как влияет преимущественно на эвристику компилятора, а не на логику исходного кода. К функциям, не попавшим в профили, применяются стандартные методы компиляции. В будущем планируется оптимизировать модули GKI и добавить поддержку модулей поставщиков.
Источник новости: www.playground.ru






