[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