Инструмент Google, ускоривший Linux на 10%, станет доступен всем

Корпорация встраивает мощный оптимизатор в стандартный LLVM.


144nifnb9pofdjm5ta6u5tqfqa1j1wmx.jpg

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

Разработка Propeller ведётся уже несколько лет. Инструмент построен поверх LLVM и позволяет проводить оптимизацию на уровне всей программы целиком. Google уже применяла Propeller вместе с технологией AutoFDO для сборки ядра Linux, что давало прирост производительности от 5 до 10 процентов.

Цзинь Хуан из команды компиляторов Google опубликовал предложение на форуме LLVM Discourse . Как объясняется в документе, Propeller улучшает производительность приложений за счёт точного размещения функций и базовых блоков кода. Некоторые компоненты, необходимые для работы с Propeller, уже присутствуют в LLVM — это поддержка в компиляторе Clang и компоновщике LLD. Однако ключевой инструмент для генерации профилей до сих пор находится в отдельном репозитории Google .

Сейчас использование Propeller требует работы с внешним репозиторием, что усложняет процесс. Интеграция инструмента в основное дерево LLVM позволит распространять его вместе со стандартными утилитами и значительно упростит жизнь разработчикам. По словам авторов предложения, Propeller использует подход на основе перекомпоновки, что делает его хорошо масштабируемым решением для распределённых и инкрементальных сборок. Инструмент позиционируется как альтернатива фреймворкам бинарной перезаписи вроде BOLT .