You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
UPSTREAM: <carry>: disable load balancing on created cgroups when managed is enabled
Previously, cpu load balancing was enabled in cri-o by manually changing the sched_domain of cpus in sysfs.
However, RHEL 9 dropped support for this knob, instead requiring it be changed in cgroups directly.
To enable cpu load balancing on cgroupv1, the specified cgroup must have cpuset.sched_load_balance set to 0, as well as
all of that cgroup's parents, plus all of the cgroups that contain a subset of the cpus that load balancing is disabled for.
By default, all cpusets inherit the set from their parent and sched_load_balance as 1. Since we need to keep the cpus that need
load balancing disabled in the root cgroup, all slices will inherit the full cpuset.
Rather than rebalancing every cgroup whenever a new guaranteed cpuset cgroup is created, the approach this PR takes is to
set load balancing to disabled for all slices. Since slices definitionally don't have any processes in them, setting load balancing won't
affect the actual scheduling decisions of the kernel. All it will do is open the opportunity for CRI-O to set the actually set load balancing to
disabled for containers that request it.
Signed-off-by: Peter Hunt <[email protected]>
UPSTREAM: <carry>: kubelet/cm: disable cpu load balancing on slices when using static cpu manager policy
There are situations where cpu load balance disabling is desired when the kubelet is not in managed state.
Instead of using that condition, set the cpu load balancing parameter for new slices when the cpu policy is static
Signed-off-by: Peter Hunt <[email protected]>
UPSTREAM: <carry>: cm: reorder setting of sched_load_balance for sandbox slice
If we call mgr.Apply() first, libcontainer's cpusetCopyIfNeeded()
will copy the parent cpuset and set load balancing to 1 by default.
This causes the kernel to set the cpus to not load balanced for a brief moment
which causes churn.
instead, create the cgroup and set load balance, then have Apply() copy the values into it.
Signed-off-by: Peter Hunt <[email protected]>
UPSTREAM: <carry>: kubelet/cm: use MkdirAll when creating cpuset to ignore file exists error
Signed-off-by: Peter Hunt <[email protected]>
0 commit comments