in metric/system/cgroup/cgv1/memory.go [143:196]
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 := cgcommon.ParseCgroupParamKeyValue(sc.Text())
if err != nil {
return err
}
switch t {
case "cache":
mem.Stats.Cache.Bytes = v
case "rss":
mem.Stats.RSS.Bytes = v
case "rss_huge":
mem.Stats.RSSHuge.Bytes = v
case "mapped_file":
mem.Stats.MappedFile.Bytes = 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.Bytes = v
case "active_anon":
mem.Stats.ActiveAnon.Bytes = v
case "inactive_anon":
mem.Stats.InactiveAnon.Bytes = v
case "active_file":
mem.Stats.ActiveFile.Bytes = v
case "inactive_file":
mem.Stats.InactiveFile.Bytes = v
case "unevictable":
mem.Stats.Unevictable.Bytes = v
case "hierarchical_memory_limit":
mem.Stats.HierarchicalMemoryLimit.Bytes = v
case "hierarchical_memsw_limit":
mem.Stats.HierarchicalMemswLimit.Bytes = v
}
}
return sc.Err()
}