1. Proposed title of this feature request
Set default value of GOMAXPROCS to reasonable number for containerised environemnt when none is provided.
2. What is the nature and description of the request?
golang assumes with the lack of a GOMAXPROCS that threads = number of cores, which is a good assumption on a bare metal environment. In a containerized environement(Openshift), having this set to a default of the maximum cores increases overhead, and potential for failures that are unexpected. In current hardware the number of cores can be greater than 400, with near future be more than a 1000. Current pod limit is around 240 pods, a setting of maxcpu / max pods, and if < 2, set to 2 would be sensible. Note a possible further enhancement may be to set this to a actual workload value based on average number of pods in amoving average.
3. Why does the customer need this? (List the business requirements here)
Business need for this is to make sure a level of fairness when no value is configured, such that customers can deliver at a reasonable level.
4. List any affected packages or components.
kubelet, operators, and customer applications written in golang.
There is multiple possible methods of implementation, from crun, to a operator.
A prototype is attached, as a mutating webhook that looks at a pod starting, and sets the value on the fly.
- impacts account
-
OCPBUGS-61881 Reduced process performance and stability when running on high-core count hardware
-
- MODIFIED
-