Re: [PATCH v3] memcg: remove PCG_CACHE page_cgroup flag
From: Michal Hocko <hidden>
Date: 2012-01-20 08:45:48
Also in:
lkml
On Fri 20-01-12 12:26:58, KAMEZAWA Hiroyuki wrote:
I think this version is much simplified. == From 5700a4fe9c581e1ebaa021ba6119dc8d921b024f Mon Sep 17 00:00:00 2001 From: KAMEZAWA Hiroyuki <redacted> Date: Thu, 19 Jan 2012 17:09:41 +0900 Subject: [PATCH v3] memcg: remove PCG_CACHE We record 'the page is cache' by PCG_CACHE bit to page_cgroup. Here, "CACHE" means anonymous user pages (and SwapCache). This doesn't include shmem. Consdering callers, at charge/uncharge, the caller should know what the page is and we don't need to record it by using 1bit per page. This patch removes PCG_CACHE bit and make callers of mem_cgroup_charge_statistics() to specify what the page is. Changelog since v2 - removed 'not_rss', added 'anon' - changed a meaning of arguments to mem_cgroup_charge_statisitcs() - removed a patch to mem_cgroup_uncharge_cache - simplified comment. Changelog since RFC. - rebased onto memcg-devel - rename 'file' to 'not_rss' - some cleanup and added comment. Signed-off-by: KAMEZAWA Hiroyuki <redacted> --- include/linux/page_cgroup.h | 8 +------ mm/memcontrol.c | 48 +++++++++++++++++++++++------------------- 2 files changed, 27 insertions(+), 29 deletions(-)
[...]
quoted hunk ↗ jump to hunk
diff --git a/mm/memcontrol.c b/mm/memcontrol.c index ff24520..f000c82 100644 --- a/mm/memcontrol.c +++ b/mm/memcontrol.c@@ -672,15 +672,19 @@ static unsigned long mem_cgroup_read_events(struct mem_cgroup *memcg, } static void mem_cgroup_charge_statistics(struct mem_cgroup *memcg, - bool file, int nr_pages) + bool rss, int nr_pages)
Can we make this anon as well?
{
preempt_disable();
- if (file)
- __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_CACHE],
+ /*
+ * Here, RSS means 'mapped anon' and anon's SwapCache. Shmem/tmpfs is
+ * counted as CACHE even if it's on ANON LRU.
+ */
+ if (rss)
+ __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_RSS],
nr_pages);
else
- __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_RSS],
+ __this_cpu_add(memcg->stat->count[MEM_CGROUP_STAT_CACHE],
nr_pages);
/* pagein of a big page is an event. So, ignore page size */[...] -- Michal Hocko SUSE Labs SUSE LINUX s.r.o. Lihovarska 1060/12 190 00 Praha 9 Czech Republic -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>