Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7f016ee8 authored by KOSAKI Motohiro's avatar KOSAKI Motohiro Committed by Linus Torvalds
Browse files

memcg: show reclaim stat



Add the following four fields to memory.stat file:

  - inactive_ratio
  - recent_rotated_anon
  - recent_rotated_file
  - recent_scanned_anon
  - recent_scanned_file

Acked-by: default avatarRik van Riel <riel@redhat.com>
Signed-off-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
Signed-off-by: default avatarKOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Cc: Balbir Singh <balbir@in.ibm.com>
Cc: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp>
Cc: Hugh Dickins <hugh@veritas.com>
Cc: KOSAKI Motohiro <kosaki.motohiro@jp.fujitsu.com>
Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9439c1c9
Loading
Loading
Loading
Loading
+25 −0
Original line number Diff line number Diff line
@@ -289,6 +289,31 @@ will be charged as a new owner of it.
  Because rmdir() moves all pages to parent, some out-of-use page caches can be
  moved to the parent. If you want to avoid that, force_empty will be useful.

5.2 stat file
  memory.stat file includes following statistics (now)
	cache			- # of pages from page-cache and shmem.
	rss			- # of pages from anonymous memory.
	pgpgin			- # of event of charging
	pgpgout			- # of event of uncharging
	active_anon		- # of pages on active lru of anon, shmem.
	inactive_anon 		- # of pages on active lru of anon, shmem
	active_file		- # of pages on active lru of file-cache
	inactive_file		- # of pages on inactive lru of file cache
	unevictable		- # of pages cannot be reclaimed.(mlocked etc)

	Below is depend on CONFIG_DEBUG_VM.
	inactive_ratio		- VM inernal parameter. (see mm/page_alloc.c)
	recent_rotated_anon	- VM internal parameter. (see mm/vmscan.c)
	recent_rotated_file	- VM internal parameter. (see mm/vmscan.c)
	recent_scanned_anon 	- VM internal parameter. (see mm/vmscan.c)
	recent_scanned_file 	- VM internal parameter. (see mm/vmscan.c)

  Memo:
	recent_rotated means recent frequency of lru rotation.
	recent_scanned means recent # of scans to lru.
	showing for better debug please see the code for meanings.


6. Hierarchy support

The memory controller supports a deep hierarchy and hierarchical accounting.
+30 −0
Original line number Diff line number Diff line
@@ -1816,6 +1816,36 @@ static int mem_control_stat_show(struct cgroup *cont, struct cftype *cft,
		cb->fill(cb, "unevictable", unevictable * PAGE_SIZE);

	}

#ifdef CONFIG_DEBUG_VM
	cb->fill(cb, "inactive_ratio", mem_cont->inactive_ratio);

	{
		int nid, zid;
		struct mem_cgroup_per_zone *mz;
		unsigned long recent_rotated[2] = {0, 0};
		unsigned long recent_scanned[2] = {0, 0};

		for_each_online_node(nid)
			for (zid = 0; zid < MAX_NR_ZONES; zid++) {
				mz = mem_cgroup_zoneinfo(mem_cont, nid, zid);

				recent_rotated[0] +=
					mz->reclaim_stat.recent_rotated[0];
				recent_rotated[1] +=
					mz->reclaim_stat.recent_rotated[1];
				recent_scanned[0] +=
					mz->reclaim_stat.recent_scanned[0];
				recent_scanned[1] +=
					mz->reclaim_stat.recent_scanned[1];
			}
		cb->fill(cb, "recent_rotated_anon", recent_rotated[0]);
		cb->fill(cb, "recent_rotated_file", recent_rotated[1]);
		cb->fill(cb, "recent_scanned_anon", recent_scanned[0]);
		cb->fill(cb, "recent_scanned_file", recent_scanned[1]);
	}
#endif

	return 0;
}