Merge pull request #417 from HuKeping/master

cgroups: add support for oom control
This commit is contained in:
Victor Marmol 2015-03-06 08:31:40 -08:00
commit dd3cb88223
3 changed files with 36 additions and 0 deletions

View File

@ -56,6 +56,12 @@ func (s *MemoryGroup) Set(path string, cgroup *configs.Cgroup) error {
} }
} }
if cgroup.OomKillDisable {
if err := writeFile(path, "memory.oom_control", "1"); err != nil {
return err
}
}
return nil return nil
} }

View File

@ -173,3 +173,30 @@ func TestMemoryStatsBadMaxUsageFile(t *testing.T) {
t.Fatal("Expected failure") t.Fatal("Expected failure")
} }
} }
func TestMemorySetOomControl(t *testing.T) {
helper := NewCgroupTestUtil("memory", t)
defer helper.cleanup()
const (
oom_kill_disable = 1 // disable oom killer, default is 0
)
helper.writeFileContents(map[string]string{
"memory.oom_control": strconv.Itoa(oom_kill_disable),
})
memory := &MemoryGroup{}
if err := memory.Set(helper.CgroupPath, helper.CgroupData.c); err != nil {
t.Fatal(err)
}
value, err := getCgroupParamUint(helper.CgroupPath, "memory.oom_control")
if err != nil {
t.Fatalf("Failed to parse memory.oom_control - %s", err)
}
if value != oom_kill_disable {
t.Fatalf("Got the wrong value, set memory.oom_control failed.")
}
}

View File

@ -51,4 +51,7 @@ type Cgroup struct {
// Parent slice to use for systemd TODO: remove in favor or parent // Parent slice to use for systemd TODO: remove in favor or parent
Slice string `json:"slice"` Slice string `json:"slice"`
// Whether to disable OOM Killer
OomKillDisable bool `json:"oom_kill_disable"`
} }