Сайт | Скачать | Видео | Wiki

Автор Тема: Ускорение процесса сборки ядра  (Прочитано 1853 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Ускорение процесса сборки ядра
« : 29 Декабрь 2021, 16:28:19 »
Итог

только добавил aufs. Т.е. остальное как у автора pf
Наверно уже больше 2 часов компилилось? Все же нормально, это когда 10-15 мин, :) но так долго... На лицо не целевое использование домашнего компа. )

Полезно будет доустановить пакет ccache и включить его в makepkg.conf. Сократится время повторной сборки, например, когда сборка прерывается и правятся ошибки или, как в данном случае, компилится одно ядро, но с разным конфигом.
« Последнее редактирование: 05 Январь 2022, 10:19:37 от sfs »

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Еще очень сильно зависит от потоков -j. Часто считают достаточным выставлять make -j $(( $(nproc) + 1 )), но некоторые идут дальше.


Например, в этом тесте от hakavlad, -j 128. Понятно, что в первую очередь здесь тестирование отзывчивости памяти и, возможно, именно такие высокие значения он не ставит при компиляции, но кто знает...

Коммент под статьей "Сборка и компилирование ядра Linux"
Цитата
СОВЕЕЕЕТ!!!!
при компилировании я всегда использую следующий прием
вместо make "команда"
я использую
make -j"количество ядер помноженное на 2 и + 1" "команда"

Ускоряет компиляцию ядра linux В РАЗЫ,
« Последнее редактирование: 29 Декабрь 2021, 17:06:27 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
$(nproc) + 1
В моем PKGBUILD так и сделано
Ускоряет компиляцию ядра linux В РАЗЫ
А куда торопиться-то. Если еще работаете на этом пк - наоборот лучше занизить к-во потоков

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
В моем PKGBUILD так и сделано
Код
% grep MAKEFLAGS /etc/makepkg.conf
MAKEFLAGS="-j5"

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Ускорение процесса сборки ядра
« Ответ #4 : 03 Январь 2022, 16:29:08 »
Опубликован набор патчей, ускоряющих сборку ядра Linux на 50-80%
Цитата
При полной пересборке ядра командой "make -j96 vmlinux" на тестовой систем применение патчей показало сокращение времени сборки ветки v5.16-rc7 с 231.34 до 129.97 секунд (с 15.5 до 27.7 сборок в час), а также повысило эффективность использования ядер CPU во время сборки. При инкрементальной сборке эффект от оптимизации ещё более заметен - время повторной пересборки ядра после внесения изменений в заголовочные файлы сократилось в разы (от 112% до 173% в зависимости от изменяемого заголовочного файла). Оптимизации пока доступны только для архитектур ARM64, MIPS, Sparc и x86 (32- и 64-бит).


p.s.  Кстати, "make -j96 vmlinux" как отсылка к моему посту.

Полезно будет доустановить пакет ccache и включить его в makepkg.conf. Сократится время повторной сборки, например, когда сборка прерывается и правятся ошибки или, как в данном случае, компилится одно ядро, но с разным конфигом.
« Последнее редактирование: 05 Январь 2022, 10:07:57 от sfs »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Ускорение процесса сборки ядра
« Ответ #5 : 05 Январь 2022, 10:18:43 »
Часто считают достаточным выставлять make -j $(( $(nproc) + 1 )), но некоторые идут дальше.
Я ускорения не заметил.
ccache - тоже. Создает здоровый кэш в хомяке (который у меня в tmpfs). Как минимум неудобно
Заметно ускорение на ssd вместо hdd
И при повторной компиляции  с другим конфиком - не удаляйте src - меняйте /src/.config  и makepkg -e . Чем меньше разница между конфигами - тем быстрее скомпилится. Как я понял частично используются ранее скомпиленные *.o

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Re: Ускорение процесса сборки ядра
« Ответ #6 : 05 Январь 2022, 11:25:21 »
ccache - тоже
Как я понял частично используются ранее скомпиленные *.o
Ну так, потому что включен ccache. Разве нет?

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Ускорение процесса сборки ядра
« Ответ #7 : 05 Январь 2022, 11:43:23 »
потому что включен ccache. Разве нет?
Без него
частично используются ранее скомпиленные *.o
Там где я его использовал дополнительно к этой методе - улучшения не заметил.

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Re: Ускорение процесса сборки ядра
« Ответ #8 : 05 Январь 2022, 11:54:11 »
Без него
Без него, каждая повторная компиляция будет с нуля, не зависимо что там уже собрано. Или с каких-то пор теперь по-другому в линукс?
« Последнее редактирование: 05 Январь 2022, 12:19:58 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Ускорение процесса сборки ядра
« Ответ #9 : 05 Январь 2022, 12:05:08 »
Компилил ядро без ccache не удаляя src несколько дней. Последний раз 4го. В src тем не менее .o от 2 и 3го числа
 Тут не уверен. Может при разных конфигах  некоторые  о  не использубтся

Но если удалить src  компилится в 2 раза дольше
Тут чисто мой опыт. Побочек пока не выявил

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Re: Ускорение процесса сборки ядра
« Ответ #10 : 05 Январь 2022, 12:11:36 »
Цитата
Использование ссache может значительно ускорить сборку некоторых пакетов или проектов, которые компилируются несколько раз, так как заново компилироваться будут только файлы, которые изменились с последней компиляции.
Цитата
При компилировании какого-либо файла вычисляется его хеш и, если такой файл уже присутствует в реестре скомпилированных файлов, то он не будет компилироваться заново, а будет использоваться старый бинарный файл. Это может ускорить сборку некоторых пакетов в 5—10 раз.

При этом учитываются разные версии компилятора и опции сборки. Это означает, что, если вы однажды собрали проект с оптимизацией -О2, использовав при этом ссache, то при сборке с оптимизацией -О3 файл будет компилироваться заново, при этом в реестре ссache старый файл сохранится, но добавится и новый.
https://ru.wikipedia.org/wiki/Ccache

Оффлайн krasnyh

  • Ветеран
  • *****
  • Сообщений: 5331
  • Репутация: +139/-1
  • Автор темы
Re: Ускорение процесса сборки ядра
« Ответ #11 : 05 Январь 2022, 12:14:30 »
Создает здоровый кэш в хомяке (который у меня в tmpfs). Как минимум неудобно
Местоположение можно изменять, ссылка. А так же, ограничить размер, ссылка.
« Последнее редактирование: 05 Январь 2022, 12:16:01 от krasnyh »

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Ускорение процесса сборки ядра
« Ответ #12 : 05 Январь 2022, 12:21:27 »
https://ru.wikipedia.org/wiki/Ccache
По теории красиво. Как на практике - я написал. Перепроверьте - был сосредоточен не на Ccache. Мог что-то упустить
Ну и час - 2 . Надо не часто. На фоне можно работать. Надо ли усложнять...
Тем более при отлаженных конфигах несколько раз компилить не придется

Оффлайн sfs

  • Администратор
  • Ветеран
  • *****
  • Сообщений: 33972
  • Репутация: +231/-0
    • PuppyRus-A
Re: Ускорение процесса сборки ядра
« Ответ #13 : 05 Январь 2022, 12:28:54 »
Еще посмотрел - даже  некоторые .ko от 3го числа, но в итоговом пакете их нет
Получается
Может при разных конфигах  некоторые  о  не использубтся