[devel] Ограничение количества сборочных процессов под размер доступной памяти
Vitaly Lipatov
lav на altlinux.ru
Чт Июл 19 08:55:33 MSK 2018
Поскольку на сборочных машинах теперь заданиям теперь выдаётся большое
количество процессов, программы на C++ с множеством модулей,
собирающихся параллельно, могут не влезть в память при компиляции.
Если написать в спеке
BuildRequires(pre): rpm-build-intro >= 2.1.6
%_tune_parallel_build_by_procsize 1500
то количество используемых при параллельной сборке процессов будет
ограничено с учётом заявленного потребления 1500Мб на процесс, примерно
по такой формуле:
__nprocs = max(min(round(MAX/NEED)-1,__nprocs),1)
где MAX и NEED — это объём доступной в системе и требуемой процессом
памяти соответственно.
Это решение с успехом применил при сборке telegram-desktop, см.
https://bugzilla.altlinux.org/show_bug.cgi?id=35112#c2
--
С уважением,
Виталий Липатов,
Etersoft
Подробная информация о списке рассылки Devel