[
https://issues.apache.org/jira/browse/IMPALA-12939?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Smith resolved IMPALA-12939.
------------------------------------
Fix Version/s: Impala 4.5.0
Resolution: Fixed
> Improve default for IMPALA_BUILD_THREADS
> ----------------------------------------
>
> Key: IMPALA-12939
> URL: https://issues.apache.org/jira/browse/IMPALA-12939
> Project: IMPALA
> Issue Type: Task
> Components: Infrastructure
> Reporter: Michael Smith
> Assignee: Michael Smith
> Priority: Major
> Fix For: Impala 4.5.0
>
>
> Improve the default selection for IMPALA_BUILD_THREADS and other
> parallelization config.
> Impala's build process needs 2GB of memory per CPU core with {{-notests}} or
> 4GB of memory per CPU core when building unit test binaries (the link process
> is especially memory-intensive). Exceeding these can lead to systems with
> many cores running out of memory during the build. We currently do not
> consider memory when selecting a default value for IMPALA_BUILD_THREADS.
> We currently default IMPALA_BUILD_THREADS to {{{}nproc{}}}, which also does
> not reflect CPU slicing that may happen in containers. How to detect this
> differs between cgroups v1 and v2 (v2 is becoming more common, present on
> Ubuntu 22 and RedHat 9).
> * v1:
> {code:java}
> echo $(($(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) /
> $(/sys/fs/cgroup/cpu/cpu.cfs_period_us))){code}
> * v2:
> {code:java}
> awk '{ cores = ($1 == "max" ? '$(nproc)' : $1 / $2); print cores==int(cores)
> ? cores : int(cores)+1 }' /sys/fs/cgroup/cpu.max{code}
> Something like the following should handle all cases
> {code}
> if [[ -f /sys/fs/cgroup/cpu.max ]]; then
> awk '{ cores = ($1 == "max" ? '$(nproc)' : $1 / $2); print
> cores==int(cores) ? cores : int(cores)+1 }' /sys/fs/cgroup/cpu.max
> elif [[ -f /sys/fs/cgroup/cpu/cpu.cfs_quota_us ]]; then
> echo $(($(cat /sys/fs/cgroup/cpu/cpu.cfs_quota_us) /
> $(/sys/fs/cgroup/cpu/cpu.cfs_period_us)))
> else
> nproc
> fi
> {code}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)