func memoryStats()

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()
}