Опубликованные исправления для GCC LTO, оптимизирующие ядро Linux
С прошлого года при сборке ядра Linux с помощью компилятора LLVM Clang появилась возможность включить оптимизацию времени компоновки (LTO) для сборки ядра. При сборке ядра Linux с помощью GCC отсутствовала поддержка LTO, а серия исправлений, опубликованная сегодня, является последней попыткой добиться этого.
После слияния в Linux 5.16 поддержка Clang LTO продолжилась в ядре Linux, но не во имя производительности, а также была необходима для поддержки CFI на основе CFI в ядре.
Возвращаясь на десятилетие назад и задолго до того, как Clang смог построить основное ядро Linux, существовали патчи GCC LTO для ядра Linux, но в конечном итоге они так и не были объединены. Линус Торвальдс тогда также заявил, что его не убедила LTO-версия ядра. Но теперь, когда мы приближаемся к концу 2022 года, мы предприняли новую попытку поддержки GCC LTO для ядра.
Иржи Слаби из SUSE разослал эту серию исправлений поддержки GCC LTO в качестве «первой заявки на комментарии» и частично основан на предыдущих исправлениях Энди Клина, а также на работе другого инженера SUSE Мартина Лиски.
В то время как оптимизация компилятора во время компоновки в целом полезна для производительности из-за возможности проводить оптимизации с учетом всей программы/кодовой базы на этапе компоновки, в случае LTO GCC ядра Linux, по крайней мере с последними тестами, проведенными разработчиками ядра, они не смогли зафиксировать большой разницы.
Помимо незначительных различий в производительности в их тестах, они также обнаружили, что ядро с LTO больше из-за большего количества вложений.
В любом случае те, кто заинтересован в этих последних патчах для LTO ядра с компилятором GCC, могут найти их в списке рассылки ядра.
После слияния в Linux 5.16 поддержка Clang LTO продолжилась в ядре Linux, но не во имя производительности, а также была необходима для поддержки CFI на основе CFI в ядре.
Возвращаясь на десятилетие назад и задолго до того, как Clang смог построить основное ядро Linux, существовали патчи GCC LTO для ядра Linux, но в конечном итоге они так и не были объединены. Линус Торвальдс тогда также заявил, что его не убедила LTO-версия ядра. Но теперь, когда мы приближаемся к концу 2022 года, мы предприняли новую попытку поддержки GCC LTO для ядра.
Иржи Слаби из SUSE разослал эту серию исправлений поддержки GCC LTO в качестве «первой заявки на комментарии» и частично основан на предыдущих исправлениях Энди Клина, а также на работе другого инженера SUSE Мартина Лиски.
В то время как оптимизация компилятора во время компоновки в целом полезна для производительности из-за возможности проводить оптимизации с учетом всей программы/кодовой базы на этапе компоновки, в случае LTO GCC ядра Linux, по крайней мере с последними тестами, проведенными разработчиками ядра, они не смогли зафиксировать большой разницы.
Помимо незначительных различий в производительности в их тестах, они также обнаружили, что ядро с LTO больше из-за большего количества вложений.
В любом случае те, кто заинтересован в этих последних патчах для LTO ядра с компилятором GCC, могут найти их в списке рассылки ядра.
Похожие публикации
Нет комментариев