33 lines
1.1 KiB
Bash
33 lines
1.1 KiB
Bash
setupThreadLimit() {
|
|
# Limit number of threads used during checks. Default is "all cores".
|
|
# Using all cores causes high load on builders if checks are executed with NIX_BUILD_CORE parallelism.
|
|
# This gets even worse if multiple builds are scheduled on the same machine, potentially growing O(n^3) without explicit core limits.
|
|
|
|
# global value to override all of these at once
|
|
NIX_CHECK_PHASE_DEFAULT_NUM_THREADS="${NIX_CHECK_PHASE_DEFAULT_NUM_THREADS:-1}"
|
|
|
|
thread_vars=(
|
|
OMP_NUM_THREADS
|
|
OPENBLAS_NUM_THREADS
|
|
MKL_NUM_THREADS
|
|
BLIS_NUM_THREADS
|
|
VECLIB_MAXIMUM_THREADS
|
|
NUMBA_NUM_THREADS
|
|
NUMEXPR_NUM_THREADS
|
|
)
|
|
|
|
echo "setting known thread variables to default: $NIX_CHECK_PHASE_DEFAULT_NUM_THREADS"
|
|
for var in "${thread_vars[@]}"; do
|
|
export "$var=${!var:-$NIX_CHECK_PHASE_DEFAULT_NUM_THREADS}"
|
|
printf " %s=%s" "$var" "${!var}"
|
|
done
|
|
printf "\n"
|
|
}
|
|
|
|
|
|
if [[ -z "${dontLimitCheckPhaseThreads-}" ]]; then
|
|
echo "Using checkPhaseThreadLimitHook"
|
|
preCheckHooks+=('setupThreadLimit')
|
|
preInstallCheckHooks+=('setupThreadLimit')
|
|
fi
|