-
Notifications
You must be signed in to change notification settings - Fork 143
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
feat: resource and concurrency settings #2872
Conversation
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
✅ Deploy Preview for docs-kargo-io ready!
To edit notification comments on pull requests, go to your Netlify site configuration. |
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2872 +/- ##
==========================================
- Coverage 50.09% 49.95% -0.14%
==========================================
Files 275 275
Lines 24427 24493 +66
==========================================
Hits 12236 12236
- Misses 11521 11587 +66
Partials 670 670 ☔ View full report in Codecov by Sentry. |
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
Signed-off-by: Kent Rancourt <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💯
Signed-off-by: Kent Rancourt <[email protected]>
This PR is a bundle of resource utilization and concurrency improvements @hiddeco and I agreed on after extensively troubleshooting #2544 and #2836 with @wmiller112.
Sets GOMAXPROCS on all components to match (explicit or implicit) CPU limit on the container. i.e. GOMAXPROCS = cores available rounded up to the nearest integer. This prevents Go from backing goroutines with a number of OS threads exceeding the number of cores available, which is a condition that results in losing compute time to avoidable context switches. This value is logged at startup for all components to assist in troubleshooting efforts when necessary.
Sets GOMEMLIMIT (soft memory limit) on all components to match (explicit or implicit) memory limits on the container. This help Go to optimize GC. This value is logged at startup for all components to assist in troubleshooting efforts when necessary.
Allows
MaxConcurrentReconciles
to be set on a per-reconciler basis in both the controller(s) and management controller. There is a default of four for each. For Warehouses especially, the ability to tune this parameter may help decrease wait times for reconciliation of Warehouses overall when some Warehouses, due either to their configuration or to rate limits, take a long time to reconcile. The maximum number of concurrent reconciles for is logged at startup for all reconcilers to assist in troubleshooting efforts when necessary.