in cgroup/memory.go [115:168]
func memoryStats(path string, mem *MemorySubsystem) error {
f, err := os.Open(filepath.Join(path, "memory.stat"))
if err != nil {
if os.IsNotExist(err) {
return nil
}
return err
}
defer f.Close()
sc := bufio.NewScanner(f)
for sc.Scan() {
t, v, err := parseCgroupParamKeyValue(sc.Text())
if err != nil {
return err
}
switch t {
case "cache":
mem.Stats.Cache = v
case "rss":
mem.Stats.RSS = v
case "rss_huge":
mem.Stats.RSSHuge = v
case "mapped_file":
mem.Stats.MappedFile = v
case "pgpgin":
mem.Stats.PagesIn = v
case "pgpgout":
mem.Stats.PagesOut = v
case "pgfault":
mem.Stats.PageFaults = v
case "pgmajfault":
mem.Stats.MajorPageFaults = v
case "swap":
mem.Stats.Swap = v
case "active_anon":
mem.Stats.ActiveAnon = v
case "inactive_anon":
mem.Stats.InactiveAnon = v
case "active_file":
mem.Stats.ActiveFile = v
case "inactive_file":
mem.Stats.InactiveFile = v
case "unevictable":
mem.Stats.Unevictable = v
case "hierarchical_memory_limit":
mem.Stats.HierarchicalMemoryLimit = v
case "hierarchical_memsw_limit":
mem.Stats.HierarchicalMemswLimit = v
}
}
return sc.Err()
}