Аннотация:
Версия разработки Linux 7.4 включает пакет оптимизационных изменений Kbuild для ускорения однопоточных узких мест и повторяющейся работы в процессе компиляции ядра. Kbuild — система сборки ядра Linux, отвечающая за организацию этапов настройки, компиляции и компоновки; Соответствующие изменения были предложены Лоренцо Стоуксом, инженером Arm и давним разработчиком ядра.

Оптимизации, включенные в этот раунд, включают сокращение накладных расходов на выделение раздела .modinfo в образе ядра, ускорение генерации таблицы символов kallsyms, пропуск сортировки вывода nm, когда порядок не имеет значения, генерацию необходимой информации о перемещении только на финальном этапе компоновки, переписывание mksysmap на языке C и перемещение некоторых тестов возможностей компилятора и компоновщика на этап Kconfig для кэширования результатов. Кроме того, если в системе установлен pigz, он будет использоваться в первую очередь для ускорения сжатия gzip. Вышеупомянутые корректировки сокращают промежуточную обработку данных, повторные шаги зондирования и сериализации соответственно.
Раннее тестирование всей серии патчей показывает, что сборки со всеми включенными модулями выполняются примерно на 36 % быстрее, инкрементные компиляции — примерно на 70 % быстрее, а сборки без операций без фактической пересборки — примерно на 90 % быстрее. Затем Phoronix протестировал полный набор патчей v4 на двухпроцессорном сервере AMD EPYC 9575F и Ubuntu 26.04 LTS. Чистая сборка ядра defconfig x86_64 была сокращена примерно с 22 секунд до 15–17 секунд, а сборка allmodconfig была сокращена более чем на 30 секунд. Однако эти цифры проверяют весь набор патчей. Linux 7.4 на данный момент включает лишь ряд изменений. Прежде чем оценивать реальные преимущества, необходимо подождать, пока будут добавлены дополнительные исправления.
Эта работа по оптимизации также опирается на инструменты искусственного интеллекта. Стоукс рассказал, что он использовал большую языковую модель, чтобы найти узкие места в строительстве и изучить решения по улучшению, но часть кода, сгенерированного этой моделью, была низкого качества; он лично просматривал и переписывал большой объем кода, а также вручную проверял результаты сборки, запуск ядер и изменения производительности.
Комментарии