Исторически время компиляции ядра Linux было связано с традиционным перерывом на кофе или даже полноценным приемом пищи. Даже при значительно меньших размерах исходного кода по сравнению с сегодняшним днем этот процесс на старом оборудовании занимал очень много времени. Теперь же индустрия находится на пороге того, чтобы чистая сборка ядра по умолчанию для архитектуры x86_64 занимала всего десять секунд. В сочетании с производительными процессорами и последними программными инновациями компиляция последней версии ядра Linux на доступном железе теперь может выполняться примерно за 15 секунд, а с процессорами следующего поколения ожидается результат в 10 секунд.
Подобный прогресс невероятно важен для быстрой итерации при чистых сборках или поиске регрессий с помощью бисекции. Новейшие программные улучшения сборки также помогают пропорционально сократить время компиляции для тех пользователей, которые не используют передовые процессоры. Стоит отметить, что общая кодовая база ядра Linux насчитывает почти 41 миллион строк. При этом сборка allmodconfig, включающая каждый возможный модуль ядра, теперь также снизилась до менее чем двух минут, что значительно ускоряет процесс для подобных задач.
Оптимизация Kbuild и роль искусственного интеллекта
Появление столь быстрых сборок стало возможным благодаря серии патчей для оптимизации времени компиляции ядра, разработанной разработчиком подсистемы памяти Linux Лоренцо Стоуксом (Lorenzo Stoakes). Лоренцо при содействии искусственного интеллекта и языковых моделей занялся устранением множества узких мест в коде Kbuild, которые снижали параллельный потенциал процесса сборки ядра.
Разработчик на этой неделе опубликовал четвертую версию (v4) своего набора патчей, состоящую из 22 улучшений. Некоторые из них уже приняты в ветку kbuild-for-next, а другие предложения планируется внедрить в ядро Linux 7.4. Ожидается, что с этими изменениями чистые сборки ускорятся примерно на 36%, а инкрементальные — примерно на 70%. Это обеспечивает огромную экономию времени без жесткой зависимости от самого нового или дорогого оборудования.
Тестирование на процессорах AMD EPYC
В сопроводительной документации к патчам отмечалось, что на двухпроцессорном сервере с AMD EPYC время сборки defconfig снизилось с 28 до 20 секунд. В бенчмарках времени компиляции ядра Linux двухпроцессорная конфигурация на базе AMD EPYC 9575F неизменно показывает себя как самое быстрое решение для компиляции x86_64 defconfig ядра, обычно укладываясь примерно в 20 секунд. Для сравнения, во времена тестирования процессоров AMD EPYC Milan преодоление отметки в 30 секунд уже считалось значительным достижением.
Процессор AMD EPYC 9575F обладает 64 ядрами и 128 потоками на сокет, максимальной тактовой частотой в режиме boost до 5,0 ГГц, всеядерной частотой 4,5 ГГц и 256 МБ кеш-памяти L3. В качестве перспективного решения в материале также упоминается грядущий высокочастотный чип архитектуры Venice — AMD EPYC 9686F с 96 ядрами, 129 потоками, частотой до 5,0 ГГц и 384 МБ кеша L3. Тем не менее, до тех пор, пока компиляторы не научатся распараллеливать компиляцию отдельных исходных файлов, максимально высокие показатели ядер не всегда являются оптимальными для сборочных серверов.
Технические детали патчей и особенности оборудования
В ходе работы над устранением узких мест в коде Kbuild Лоренцо Стоукс использовал ИИ и LLM, что изначально привело к появлению большого количества «уродливого» кода, но в итоге помогло обнаружить серьезные проблемы, сдерживавшие параллельный потенциал сборки. Текущий набор патчей версии v4 включает 22 улучшения, а также упоминает несколько сопутствующих патчей, которые также стоит задействовать.
В качестве тестовой платформы в документации к патчам упоминался сервер под управлением операционной системы Ubuntu 26.04 LTS, оснащенный процессорами AMD EPYC 9754 архитектуры Bergamo (Zen 4). Сам автор статьи отмечает, что использует двухпроцессорную систему на базе AMD EPYC 9575F, которая демонстрирует лучшие результаты, стабильно завершая дефолтную сборку x86_64 примерно за 20 секунд. Напомним, что в период тестирования серии AMD EPYC Milan результат в 30 секунд воспринимался как важный исторический рубеж.
Также в поле зрения попадают перспективные решения линейки Venice — в частности, будущий процессор AMD EPYC 9686F, который получит 96 ядер и 129 потоков, тактовую частоту в режиме boost до 5,0 ГГц, 384 МБ кеш-памяти L3 и поддержку памяти MRDIMM-12800. Тем не менее, автор подчеркивает, что из-за отсутствия в компиляторах функции распараллеливания компиляции внутри отдельных исходных файлов (над чем велись безуспешные работы в прошлые годы), экстремально высокие показатели количества ядер далеко не всегда оказываются наиболее эффективными для сборочных серверов.





