Merge pull request #343 from hqhq/hq_unify_behavior_for_memory

Unify behavior for memory cgroup
This commit is contained in:
Mrunal Patel
2015-11-02 14:58:31 -08:00
+22 -11
View File
@@ -23,14 +23,19 @@ func (s *MemoryGroup) Name() string {
func (s *MemoryGroup) Apply(d *data) (err error) {
path, err := d.path("memory")
if err != nil {
if cgroups.IsNotFound(err) {
return nil
}
if err != nil && !cgroups.IsNotFound(err) {
return err
}
if err := os.MkdirAll(path, 0755); err != nil {
return err
if memoryAssigned(d.c) {
if path != "" {
if err := os.MkdirAll(path, 0755); err != nil {
return err
}
}
if err := s.Set(path, d.c); err != nil {
return err
}
}
defer func() {
@@ -39,13 +44,10 @@ func (s *MemoryGroup) Apply(d *data) (err error) {
}
}()
if err := s.Set(path, d.c); err != nil {
return err
}
// We need to join memory cgroup after set memory limits, because
// kmem.limit_in_bytes can only be set when the cgroup is empty.
if _, err = d.join("memory"); err != nil {
_, err = d.join("memory")
if err != nil && !cgroups.IsNotFound(err) {
return err
}
@@ -136,6 +138,15 @@ func (s *MemoryGroup) GetStats(path string, stats *cgroups.Stats) error {
return nil
}
func memoryAssigned(cgroup *configs.Cgroup) bool {
return cgroup.Memory != 0 ||
cgroup.MemoryReservation != 0 ||
cgroup.MemorySwap > 0 ||
cgroup.KernelMemory > 0 ||
cgroup.OomKillDisable ||
cgroup.MemorySwappiness != -1
}
func getMemoryData(path, name string) (cgroups.MemoryData, error) {
memoryData := cgroups.MemoryData{}