Skip to content

Commit

Permalink
backport of commit d274e95
Browse files Browse the repository at this point in the history
  • Loading branch information
shoenig committed Oct 24, 2022
1 parent 08dae0b commit 469f245
Showing 1 changed file with 11 additions and 4 deletions.
15 changes: 11 additions & 4 deletions client/lib/cgutil/cpuset_manager_v2.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,20 +59,20 @@ type cpusetManagerV2 struct {

func NewCpusetManagerV2(parent string, reservable []uint16, logger hclog.Logger) CpusetManager {
if err := minimumRootControllers(); err != nil {
logger.Error("failed to enabled minimum set of cgroup controllers; disable cpuset management", "error", err)
logger.Error("failed to enabled minimum set of cgroup controllers; disabling cpuset management", "error", err)
return new(NoopCpusetManager)
}

parentAbs := filepath.Join(CgroupRoot, parent)
if err := os.MkdirAll(parentAbs, 0o755); err != nil {
logger.Error("failed to ensure nomad parent cgroup exists; disable cpuset management", "error", err)
logger.Error("failed to ensure nomad parent cgroup exists; disabling cpuset management", "error", err)
return new(NoopCpusetManager)
}

if len(reservable) == 0 {
// read from group
if cpus, err := GetCPUsFromCgroup(parent); err != nil {
logger.Error("failed to lookup cpus from parent cgroup; disable cpuset management", "error", err)
logger.Error("failed to lookup cpus from parent cgroup; disabling cpuset management", "error", err)
return new(NoopCpusetManager)
} else {
reservable = cpus
Expand All @@ -98,14 +98,21 @@ func minimumRootControllers() error {
if err != nil {
return err
}

required := set.From[string]([]string{"cpuset", "cpu", "io", "memory", "pids"})
enabled := set.From[string](strings.Fields(s))
needed := required.Difference(enabled)

if needed.Size() == 0 {
return nil // already sufficient
}

sb := new(strings.Builder)
for _, controller := range needed.List() {
sb.WriteString("+" + controller + " ")
}
activation := sb.String()

activation := strings.TrimSpace(sb.String())
return e.write("cgroup.subtree_control", activation)
}

Expand Down

0 comments on commit 469f245

Please sign in to comment.