diff for duplicates of <20110706141825.2df34560.kamezawa.hiroyu@jp.fujitsu.com>
diff --git a/a/1.txt b/N1/1.txt
index 5a58ecc..fca7cd3 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -9,233 +9,4 @@ CONFIG_CGROUP_MEM_RES_CTLR=y/n
Patch is onto mmotm-0630.
-==
->From 7daf93a277e19026bb6edef3e0ac01bbd31dcb5e Mon Sep 17 00:00:00 2001
-From: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
-Date: Fri, 1 Jul 2011 10:35:57 +0900
-Subject: [PATCH] export memory cgroup's swappines by mem_cgroup_swappiness()
-
-Each memory cgroup has 'swappiness' value and it can be accessed by
-get_swappiness(memcg). The major user is try_to_free_mem_cgroup_pages()
-and swappiness is passed by argument. It's propagated by scan_control.
-
-get_swappiness is static function but some planned updates will need to
-get swappiness from files other than memcontrol.c
-This patch exports get_swappiness() as mem_cgroup_swappiness().
-By this, we can remove the argument of swapiness from try_to_free...
-and drop swappiness from scan_control. only memcg uses it.
-
-Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
-
-Changelog:
- - move definistions out of CONFIG_SWAP.
- - fixed/tested allyesconfig/allnoconfig compile failure.
- - adjusted signedness to vm_swappiness.
- - drop swappiness from scan_control
----
- include/linux/swap.h | 13 +++++++++----
- mm/memcontrol.c | 15 +++++++--------
- mm/vmscan.c | 23 ++++++++++-------------
- 3 files changed, 26 insertions(+), 25 deletions(-)
-
-Index: mmotm-0701/include/linux/swap.h
-===================================================================
---- mmotm-0701.orig/include/linux/swap.h
-+++ mmotm-0701/include/linux/swap.h
-@@ -254,11 +254,9 @@ static inline void lru_cache_add_file(st
- extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order,
- gfp_t gfp_mask, nodemask_t *mask);
- extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem,
-- gfp_t gfp_mask, bool noswap,
-- unsigned int swappiness);
-+ gfp_t gfp_mask, bool noswap);
- extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,
- gfp_t gfp_mask, bool noswap,
-- unsigned int swappiness,
- struct zone *zone,
- unsigned long *nr_scanned);
- extern int __isolate_lru_page(struct page *page, int mode, int file);
-@@ -301,7 +299,14 @@ static inline void scan_unevictable_unre
-
- extern int kswapd_run(int nid);
- extern void kswapd_stop(int nid);
--
-+#ifdef CONFIG_CGROUP_MEM_RES_CTLR
-+extern int mem_cgroup_swappiness(struct mem_cgroup *mem);
-+#else
-+static inline int mem_cgroup_swappiness(struct mem_cgroup *mem)
-+{
-+ return vm_swappiness;
-+}
-+#endif
- #ifdef CONFIG_SWAP
- /* linux/mm/page_io.c */
- extern int swap_readpage(struct page *);
-Index: mmotm-0701/mm/memcontrol.c
-===================================================================
---- mmotm-0701.orig/mm/memcontrol.c
-+++ mmotm-0701/mm/memcontrol.c
-@@ -248,7 +248,7 @@ struct mem_cgroup {
- atomic_t oom_lock;
- atomic_t refcnt;
-
-- unsigned int swappiness;
-+ int swappiness;
- /* OOM-Killer disable */
- int oom_kill_disable;
-
-@@ -1328,7 +1328,7 @@ static unsigned long mem_cgroup_margin(s
- return margin >> PAGE_SHIFT;
- }
-
--static unsigned int get_swappiness(struct mem_cgroup *memcg)
-+int mem_cgroup_swappiness(struct mem_cgroup *memcg)
- {
- struct cgroup *cgrp = memcg->css.cgroup;
-
-@@ -1775,12 +1775,11 @@ static int mem_cgroup_hierarchical_recla
- /* we use swappiness of local cgroup */
- if (check_soft) {
- ret = mem_cgroup_shrink_node_zone(victim, gfp_mask,
-- noswap, get_swappiness(victim), zone,
-- &nr_scanned);
-+ noswap, zone, &nr_scanned);
- *total_scanned += nr_scanned;
- } else
- ret = try_to_free_mem_cgroup_pages(victim, gfp_mask,
-- noswap, get_swappiness(victim));
-+ noswap);
- css_put(&victim->css);
- /*
- * At shrinking usage, we can't check we should stop here or
-@@ -3776,7 +3775,7 @@ try_to_free:
- goto out;
- }
- progress = try_to_free_mem_cgroup_pages(mem, GFP_KERNEL,
-- false, get_swappiness(mem));
-+ false);
- if (!progress) {
- nr_retries--;
- /* maybe some writeback is necessary */
-@@ -4238,7 +4237,7 @@ static u64 mem_cgroup_swappiness_read(st
- {
- struct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp);
-
-- return get_swappiness(memcg);
-+ return mem_cgroup_swappiness(memcg);
- }
-
- static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft,
-@@ -4947,7 +4946,7 @@ mem_cgroup_create(struct cgroup_subsys *
- INIT_LIST_HEAD(&mem->oom_notify);
-
- if (parent)
-- mem->swappiness = get_swappiness(parent);
-+ mem->swappiness = mem_cgroup_swappiness(parent);
- atomic_set(&mem->refcnt, 1);
- mem->move_charge_at_immigrate = 0;
- mutex_init(&mem->thresholds_lock);
-Index: mmotm-0701/mm/vmscan.c
-===================================================================
---- mmotm-0701.orig/mm/vmscan.c
-+++ mmotm-0701/mm/vmscan.c
-@@ -95,8 +95,6 @@ struct scan_control {
- /* Can pages be swapped as part of reclaim? */
- int may_swap;
-
-- int swappiness;
--
- int order;
-
- /*
-@@ -1729,6 +1727,13 @@ static unsigned long shrink_list(enum lr
- return shrink_inactive_list(nr_to_scan, zone, sc, priority, file);
- }
-
-+static int vmscan_swappiness(struct scan_control *sc)
-+{
-+ if (scanning_global_lru(sc))
-+ return vm_swappiness;
-+ return mem_cgroup_swappiness(sc->mem_cgroup);
-+}
-+
- /*
- * Determine how aggressively the anon and file LRU lists should be
- * scanned. The relative value of each set of LRU lists is determined
-@@ -1789,8 +1794,8 @@ static void get_scan_count(struct zone *
- * With swappiness at 100, anonymous and file have the same priority.
- * This scanning priority is essentially the inverse of IO cost.
- */
-- anon_prio = sc->swappiness;
-- file_prio = 200 - sc->swappiness;
-+ anon_prio = vmscan_swappiness(sc);
-+ file_prio = 200 - vmscan_swappiness(sc);
-
- /*
- * OK, so we have swap space and a fair amount of page cache
-@@ -2179,7 +2184,6 @@ unsigned long try_to_free_pages(struct z
- .nr_to_reclaim = SWAP_CLUSTER_MAX,
- .may_unmap = 1,
- .may_swap = 1,
-- .swappiness = vm_swappiness,
- .order = order,
- .mem_cgroup = NULL,
- .nodemask = nodemask,
-@@ -2203,7 +2207,6 @@ unsigned long try_to_free_pages(struct z
-
- unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,
- gfp_t gfp_mask, bool noswap,
-- unsigned int swappiness,
- struct zone *zone,
- unsigned long *nr_scanned)
- {
-@@ -2213,7 +2216,6 @@ unsigned long mem_cgroup_shrink_node_zon
- .may_writepage = !laptop_mode,
- .may_unmap = 1,
- .may_swap = !noswap,
-- .swappiness = swappiness,
- .order = 0,
- .mem_cgroup = mem,
- };
-@@ -2242,8 +2244,7 @@ unsigned long mem_cgroup_shrink_node_zon
-
- unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,
- gfp_t gfp_mask,
-- bool noswap,
-- unsigned int swappiness)
-+ bool noswap)
- {
- struct zonelist *zonelist;
- unsigned long nr_reclaimed;
-@@ -2253,7 +2254,6 @@ unsigned long try_to_free_mem_cgroup_pag
- .may_unmap = 1,
- .may_swap = !noswap,
- .nr_to_reclaim = SWAP_CLUSTER_MAX,
-- .swappiness = swappiness,
- .order = 0,
- .mem_cgroup = mem_cont,
- .nodemask = NULL, /* we don't care the placement */
-@@ -2403,7 +2403,6 @@ static unsigned long balance_pgdat(pg_da
- * we want to put equal scanning pressure on each zone.
- */
- .nr_to_reclaim = ULONG_MAX,
-- .swappiness = vm_swappiness,
- .order = order,
- .mem_cgroup = NULL,
- };
-@@ -2873,7 +2872,6 @@ unsigned long shrink_all_memory(unsigned
- .may_writepage = 1,
- .nr_to_reclaim = nr_to_reclaim,
- .hibernation_mode = 1,
-- .swappiness = vm_swappiness,
- .order = 0,
- };
- struct shrink_control shrink = {
-@@ -3060,7 +3058,6 @@ static int __zone_reclaim(struct zone *z
- .nr_to_reclaim = max_t(unsigned long, nr_pages,
- SWAP_CLUSTER_MAX),
- .gfp_mask = gfp_mask,
-- .swappiness = vm_swappiness,
- .order = order,
- };
- struct shrink_control shrink = {
\ No newline at end of file
+==
\ No newline at end of file
diff --git a/a/content_digest b/N1/content_digest
index 5186980..32c1996 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -63,236 +63,7 @@
"\n",
"Patch is onto mmotm-0630.\n",
"\n",
- "==\n",
- ">From 7daf93a277e19026bb6edef3e0ac01bbd31dcb5e Mon Sep 17 00:00:00 2001\n",
- "From: KAMEZAWA Hiroyuki <kamezawa.hiroyu\@jp.fujitsu.com>\n",
- "Date: Fri, 1 Jul 2011 10:35:57 +0900\n",
- "Subject: [PATCH] export memory cgroup's swappines by mem_cgroup_swappiness()\n",
- "\n",
- "Each memory cgroup has 'swappiness' value and it can be accessed by\n",
- "get_swappiness(memcg). The major user is try_to_free_mem_cgroup_pages()\n",
- "and swappiness is passed by argument. It's propagated by scan_control.\n",
- "\n",
- "get_swappiness is static function but some planned updates will need to\n",
- "get swappiness from files other than memcontrol.c\n",
- "This patch exports get_swappiness() as mem_cgroup_swappiness().\n",
- "By this, we can remove the argument of swapiness from try_to_free...\n",
- "and drop swappiness from scan_control. only memcg uses it.\n",
- "\n",
- "Signed-off-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu\@jp.fujitsu.com>\n",
- "\n",
- "Changelog:\n",
- " - move definistions out of CONFIG_SWAP.\n",
- " - fixed/tested allyesconfig/allnoconfig compile failure.\n",
- " - adjusted signedness to vm_swappiness.\n",
- " - drop swappiness from scan_control\n",
- "---\n",
- " include/linux/swap.h | 13 +++++++++----\n",
- " mm/memcontrol.c | 15 +++++++--------\n",
- " mm/vmscan.c | 23 ++++++++++-------------\n",
- " 3 files changed, 26 insertions(+), 25 deletions(-)\n",
- "\n",
- "Index: mmotm-0701/include/linux/swap.h\n",
- "===================================================================\n",
- "--- mmotm-0701.orig/include/linux/swap.h\n",
- "+++ mmotm-0701/include/linux/swap.h\n",
- "\@\@ -254,11 +254,9 \@\@ static inline void lru_cache_add_file(st\n",
- " extern unsigned long try_to_free_pages(struct zonelist *zonelist, int order,\n",
- " \t\t\t\t\tgfp_t gfp_mask, nodemask_t *mask);\n",
- " extern unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem,\n",
- "-\t\t\t\t\t\t gfp_t gfp_mask, bool noswap,\n",
- "-\t\t\t\t\t\t unsigned int swappiness);\n",
- "+\t\t\t\t\t\t gfp_t gfp_mask, bool noswap);\n",
- " extern unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,\n",
- " \t\t\t\t\t\tgfp_t gfp_mask, bool noswap,\n",
- "-\t\t\t\t\t\tunsigned int swappiness,\n",
- " \t\t\t\t\t\tstruct zone *zone,\n",
- " \t\t\t\t\t\tunsigned long *nr_scanned);\n",
- " extern int __isolate_lru_page(struct page *page, int mode, int file);\n",
- "\@\@ -301,7 +299,14 \@\@ static inline void scan_unevictable_unre\n",
- " \n",
- " extern int kswapd_run(int nid);\n",
- " extern void kswapd_stop(int nid);\n",
- "-\n",
- "+#ifdef CONFIG_CGROUP_MEM_RES_CTLR\n",
- "+extern int mem_cgroup_swappiness(struct mem_cgroup *mem);\n",
- "+#else\n",
- "+static inline int mem_cgroup_swappiness(struct mem_cgroup *mem)\n",
- "+{\n",
- "+\treturn vm_swappiness;\n",
- "+}\n",
- "+#endif\n",
- " #ifdef CONFIG_SWAP\n",
- " /* linux/mm/page_io.c */\n",
- " extern int swap_readpage(struct page *);\n",
- "Index: mmotm-0701/mm/memcontrol.c\n",
- "===================================================================\n",
- "--- mmotm-0701.orig/mm/memcontrol.c\n",
- "+++ mmotm-0701/mm/memcontrol.c\n",
- "\@\@ -248,7 +248,7 \@\@ struct mem_cgroup {\n",
- " \tatomic_t\toom_lock;\n",
- " \tatomic_t\trefcnt;\n",
- " \n",
- "-\tunsigned int\tswappiness;\n",
- "+\tint\tswappiness;\n",
- " \t/* OOM-Killer disable */\n",
- " \tint\t\toom_kill_disable;\n",
- " \n",
- "\@\@ -1328,7 +1328,7 \@\@ static unsigned long mem_cgroup_margin(s\n",
- " \treturn margin >> PAGE_SHIFT;\n",
- " }\n",
- " \n",
- "-static unsigned int get_swappiness(struct mem_cgroup *memcg)\n",
- "+int mem_cgroup_swappiness(struct mem_cgroup *memcg)\n",
- " {\n",
- " \tstruct cgroup *cgrp = memcg->css.cgroup;\n",
- " \n",
- "\@\@ -1775,12 +1775,11 \@\@ static int mem_cgroup_hierarchical_recla\n",
- " \t\t/* we use swappiness of local cgroup */\n",
- " \t\tif (check_soft) {\n",
- " \t\t\tret = mem_cgroup_shrink_node_zone(victim, gfp_mask,\n",
- "-\t\t\t\tnoswap, get_swappiness(victim), zone,\n",
- "-\t\t\t\t&nr_scanned);\n",
- "+\t\t\t\tnoswap, zone, &nr_scanned);\n",
- " \t\t\t*total_scanned += nr_scanned;\n",
- " \t\t} else\n",
- " \t\t\tret = try_to_free_mem_cgroup_pages(victim, gfp_mask,\n",
- "-\t\t\t\t\t\tnoswap, get_swappiness(victim));\n",
- "+\t\t\t\t\t\tnoswap);\n",
- " \t\tcss_put(&victim->css);\n",
- " \t\t/*\n",
- " \t\t * At shrinking usage, we can't check we should stop here or\n",
- "\@\@ -3776,7 +3775,7 \@\@ try_to_free:\n",
- " \t\t\tgoto out;\n",
- " \t\t}\n",
- " \t\tprogress = try_to_free_mem_cgroup_pages(mem, GFP_KERNEL,\n",
- "-\t\t\t\t\t\tfalse, get_swappiness(mem));\n",
- "+\t\t\t\t\t\tfalse);\n",
- " \t\tif (!progress) {\n",
- " \t\t\tnr_retries--;\n",
- " \t\t\t/* maybe some writeback is necessary */\n",
- "\@\@ -4238,7 +4237,7 \@\@ static u64 mem_cgroup_swappiness_read(st\n",
- " {\n",
- " \tstruct mem_cgroup *memcg = mem_cgroup_from_cont(cgrp);\n",
- " \n",
- "-\treturn get_swappiness(memcg);\n",
- "+\treturn mem_cgroup_swappiness(memcg);\n",
- " }\n",
- " \n",
- " static int mem_cgroup_swappiness_write(struct cgroup *cgrp, struct cftype *cft,\n",
- "\@\@ -4947,7 +4946,7 \@\@ mem_cgroup_create(struct cgroup_subsys *\n",
- " \tINIT_LIST_HEAD(&mem->oom_notify);\n",
- " \n",
- " \tif (parent)\n",
- "-\t\tmem->swappiness = get_swappiness(parent);\n",
- "+\t\tmem->swappiness = mem_cgroup_swappiness(parent);\n",
- " \tatomic_set(&mem->refcnt, 1);\n",
- " \tmem->move_charge_at_immigrate = 0;\n",
- " \tmutex_init(&mem->thresholds_lock);\n",
- "Index: mmotm-0701/mm/vmscan.c\n",
- "===================================================================\n",
- "--- mmotm-0701.orig/mm/vmscan.c\n",
- "+++ mmotm-0701/mm/vmscan.c\n",
- "\@\@ -95,8 +95,6 \@\@ struct scan_control {\n",
- " \t/* Can pages be swapped as part of reclaim? */\n",
- " \tint may_swap;\n",
- " \n",
- "-\tint swappiness;\n",
- "-\n",
- " \tint order;\n",
- " \n",
- " \t/*\n",
- "\@\@ -1729,6 +1727,13 \@\@ static unsigned long shrink_list(enum lr\n",
- " \treturn shrink_inactive_list(nr_to_scan, zone, sc, priority, file);\n",
- " }\n",
- " \n",
- "+static int vmscan_swappiness(struct scan_control *sc)\n",
- "+{\n",
- "+\tif (scanning_global_lru(sc))\n",
- "+\t\treturn vm_swappiness;\n",
- "+\treturn mem_cgroup_swappiness(sc->mem_cgroup);\n",
- "+}\n",
- "+\n",
- " /*\n",
- " * Determine how aggressively the anon and file LRU lists should be\n",
- " * scanned. The relative value of each set of LRU lists is determined\n",
- "\@\@ -1789,8 +1794,8 \@\@ static void get_scan_count(struct zone *\n",
- " \t * With swappiness at 100, anonymous and file have the same priority.\n",
- " \t * This scanning priority is essentially the inverse of IO cost.\n",
- " \t */\n",
- "-\tanon_prio = sc->swappiness;\n",
- "-\tfile_prio = 200 - sc->swappiness;\n",
- "+\tanon_prio = vmscan_swappiness(sc);\n",
- "+\tfile_prio = 200 - vmscan_swappiness(sc);\n",
- " \n",
- " \t/*\n",
- " \t * OK, so we have swap space and a fair amount of page cache\n",
- "\@\@ -2179,7 +2184,6 \@\@ unsigned long try_to_free_pages(struct z\n",
- " \t\t.nr_to_reclaim = SWAP_CLUSTER_MAX,\n",
- " \t\t.may_unmap = 1,\n",
- " \t\t.may_swap = 1,\n",
- "-\t\t.swappiness = vm_swappiness,\n",
- " \t\t.order = order,\n",
- " \t\t.mem_cgroup = NULL,\n",
- " \t\t.nodemask = nodemask,\n",
- "\@\@ -2203,7 +2207,6 \@\@ unsigned long try_to_free_pages(struct z\n",
- " \n",
- " unsigned long mem_cgroup_shrink_node_zone(struct mem_cgroup *mem,\n",
- " \t\t\t\t\t\tgfp_t gfp_mask, bool noswap,\n",
- "-\t\t\t\t\t\tunsigned int swappiness,\n",
- " \t\t\t\t\t\tstruct zone *zone,\n",
- " \t\t\t\t\t\tunsigned long *nr_scanned)\n",
- " {\n",
- "\@\@ -2213,7 +2216,6 \@\@ unsigned long mem_cgroup_shrink_node_zon\n",
- " \t\t.may_writepage = !laptop_mode,\n",
- " \t\t.may_unmap = 1,\n",
- " \t\t.may_swap = !noswap,\n",
- "-\t\t.swappiness = swappiness,\n",
- " \t\t.order = 0,\n",
- " \t\t.mem_cgroup = mem,\n",
- " \t};\n",
- "\@\@ -2242,8 +2244,7 \@\@ unsigned long mem_cgroup_shrink_node_zon\n",
- " \n",
- " unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont,\n",
- " \t\t\t\t\t gfp_t gfp_mask,\n",
- "-\t\t\t\t\t bool noswap,\n",
- "-\t\t\t\t\t unsigned int swappiness)\n",
- "+\t\t\t\t\t bool noswap)\n",
- " {\n",
- " \tstruct zonelist *zonelist;\n",
- " \tunsigned long nr_reclaimed;\n",
- "\@\@ -2253,7 +2254,6 \@\@ unsigned long try_to_free_mem_cgroup_pag\n",
- " \t\t.may_unmap = 1,\n",
- " \t\t.may_swap = !noswap,\n",
- " \t\t.nr_to_reclaim = SWAP_CLUSTER_MAX,\n",
- "-\t\t.swappiness = swappiness,\n",
- " \t\t.order = 0,\n",
- " \t\t.mem_cgroup = mem_cont,\n",
- " \t\t.nodemask = NULL, /* we don't care the placement */\n",
- "\@\@ -2403,7 +2403,6 \@\@ static unsigned long balance_pgdat(pg_da\n",
- " \t\t * we want to put equal scanning pressure on each zone.\n",
- " \t\t */\n",
- " \t\t.nr_to_reclaim = ULONG_MAX,\n",
- "-\t\t.swappiness = vm_swappiness,\n",
- " \t\t.order = order,\n",
- " \t\t.mem_cgroup = NULL,\n",
- " \t};\n",
- "\@\@ -2873,7 +2872,6 \@\@ unsigned long shrink_all_memory(unsigned\n",
- " \t\t.may_writepage = 1,\n",
- " \t\t.nr_to_reclaim = nr_to_reclaim,\n",
- " \t\t.hibernation_mode = 1,\n",
- "-\t\t.swappiness = vm_swappiness,\n",
- " \t\t.order = 0,\n",
- " \t};\n",
- " \tstruct shrink_control shrink = {\n",
- "\@\@ -3060,7 +3058,6 \@\@ static int __zone_reclaim(struct zone *z\n",
- " \t\t.nr_to_reclaim = max_t(unsigned long, nr_pages,\n",
- " \t\t\t\t SWAP_CLUSTER_MAX),\n",
- " \t\t.gfp_mask = gfp_mask,\n",
- "-\t\t.swappiness = vm_swappiness,\n",
- " \t\t.order = order,\n",
- " \t};\n",
- " \tstruct shrink_control shrink = {"
+ "=="
]
-256f64ed0f52aaa6c13c0a2c0599ee45aca96f8680d302f3ca3c92b9bc3d6854
+c6755aa2e28bed8bcb3980827e99703458b833ba0f0fd0a00a61c23d40227ce9
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.