Ещё капельку: Microsoft занимается оптимизацией Linux для серверных ARM

 

Microsoft является платиновым членом Linux Foundation, в её облаке Azure доминирует Linux и, в целом, уже пора перестать удивляться работе корпорации с этой ОС. Но она всё равно порой преподносит сюрпризы. На конференции Linux Plumbers Conference 2020 разработчики компании рассказали об экспериментах по оптимизации сборки ядра Linux.

Любопытно, что эта работа выполняется по внутреннему запросу, а оптимизация делается для повышения производительности Linux на ARM-процессорах Marvell ThunderX2. Это особенно интересно в свете резко изменившихся планов Marvel относительно будущих ThunderX3: компания займётся достаточно глубокой оптимизацией CPU под нужды конкретных заказчиков и не будет выпускать «общие» версии. Теперь она ориентирована в первую очередь на гиперскейлеров, к которым относится и Microsoft.

Так вот, разработчики Microsoft изучают использование LTO (Link Time Optimization) вместе с PGO (Profile-guided optimization) для ускорения работы ядра. Обе техники не являются чем-то новым сами по себе, однако LTO лишь относительно недавно стала применяться для сборки ядра Linux и других пакетов в некоторых дистрибутивах, что было связано с незрелостью её поддержки в популярных открытых наборах компиляторов GCC и LLVM. А вот применение PGO для ядра всё ещё довольно редко. Интересно, что Microsoft активно использует LTO и PGO в Windows — PGO даёт улучшение производительности на 5% – 20 %.

LTO позволяет компилятору перед компоновкой «окинуть взглядом» весь проект целиком, а не только отдельные объекты во время компиляции, и сделать оптимизацию. PGO же ещё подразумевает множественные тестовые запуски итоговых бинарных файлов и отслеживание их поведения с целью дальнейшей оптимизации на основе собранной статистики. Обе техники заметно повышают требования компиляторов к ресурсам (особенно памяти) и увеличивают время сборки, порой весьма существенно.

На той же конференции разработчики Google поделились своим опытом оптимизации сборки ядра. В частности, продукты под брендом Pixel с 2018 года получают ядра с LTO. А сейчас корпорация изучает работу AutoFDO — ещё одной техники, которая собирает данные о работе от perf-подсистемы ядра и аппаратных счётчиков CPU. Собранные профили «скармливаются» компилятору. Таким образом для x86-64 удалось на 12% сократить число используемых циклов CPU. На других платформах результат тоже положительный, но уже не такой заметный.

Если вы заметили ошибку — выделите ее мышью и нажмите CTRL+ENTER. | Можете написать лучше? Мы всегда рады новым авторам.

Источник:

Постоянный URL: https://servernews.ru/1019418

Комментарии

Система Orphus