I would like to suggest to change how the value for smp_mflags is computed. Currently it is the number of cpus online and 16 is the max. I suggest to include the memory size into the calculation, because with for example C++ code the compiler can easily require 2GB per process. So if the builder machine doesn't have adequate memory it starts swapping and later the compiler (or linker) gets killed by the kernel OOM killer.
smp_mflags = MIN( getconf _NPROCESSORS_ONLN , RAMSIZE / TASKSIZE)
and use eg. TASKSIZE=2GB
The real case where OOM is in action during builds is on ppc64 builders with 48 (shared virtual) CPUs and 10GB of memory (+ some swap) and building ceph. I think it can also help on ARM with 4 CPUs and only 4GB of memory when they start swapping easily.
This package has changed ownership in the Fedora Package Database. Reassigning to the new owner of this component.
%_smp_mflags lives in rpm now, switching component (wow this is an old one...)
It'd need some tunables (tasksize at least) and maybe 32/64bit-ness should be taken into account for the heuristics too.
Ack, tunable "tasksize" makes sense.