helm: correctly derive celery sync_parallelism from scheduler CPU limits #58733
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What
Derive celery sync_parallelism from the scheduler's resources.limits.cpu when it is defined.
Why
The default value of
sync_parallelismin Airflow is0, which causes it to fall back tomultiprocessing.cpu_count:airflow/providers/celery/src/airflow/providers/celery/executors/celery_executor.py
Line 311 in 97cd1c9
In containerized environments, cpu_count() returns the number of host machine cores, rather than the number of cores actually allocated to the container - see: python/cpython#80235
This leads to incorrect behavior. For example:
If the scheduler container has 500m CPU allocated but is running on a 16 vCPU node, Airflow will incorrectly spawn 15 (as there is minus 1) processes instead of 1 when sending Celery tasks via apply_async and when there are >= 15 tasks in queued state, leading to unnecessary resource contention and overhead.
^ Add meaningful description above
Read the Pull Request Guidelines for more information.
In case of fundamental code changes, an Airflow Improvement Proposal (AIP) is needed.
In case of a new dependency, check compliance with the ASF 3rd Party License Policy.
In case of backwards incompatible changes please leave a note in a newsfragment file, named
{pr_number}.significant.rstor{issue_number}.significant.rst, in airflow-core/newsfragments.