aboutsummaryrefslogtreecommitdiffstats
path: root/mm/memcontrol.c
diff options
context:
space:
mode:
authorDaisuke Nishimura <nishimura@mxp.nes.nec.co.jp>2009-01-07 21:08:30 -0500
committerLinus Torvalds <torvalds@linux-foundation.org>2009-01-08 11:31:09 -0500
commit42e9abb628def2c335a4ecf130bb6c88d916d885 (patch)
treee626dcc9d8fff5834c419e39dce57bed765aa09a /mm/memcontrol.c
parent7f4d454dee2e0bdd21bafd413d1c53e443a26540 (diff)
memcg: change try_to_free_pages to hierarchical_reclaim
mem_cgroup_hierarchicl_reclaim() works properly even when !use_hierarchy now (by memcg-hierarchy-avoid-unnecessary-reclaim.patch), so, instead of try_to_free_mem_cgroup_pages(), it should be used in many cases. The only exception is force_empty. The group has no children in this case. Signed-off-by: Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> Acked-by: KAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com> Acked-by: Balbir Singh <balbir@linux.vnet.ibm.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/memcontrol.c')
-rw-r--r--mm/memcontrol.c12
1 files changed, 4 insertions, 8 deletions
diff --git a/mm/memcontrol.c b/mm/memcontrol.c
index 861037070f66..a7ecf23150c5 100644
--- a/mm/memcontrol.c
+++ b/mm/memcontrol.c
@@ -1430,8 +1430,7 @@ int mem_cgroup_shrink_usage(struct mm_struct *mm, gfp_t gfp_mask)
1430 rcu_read_unlock(); 1430 rcu_read_unlock();
1431 1431
1432 do { 1432 do {
1433 progress = try_to_free_mem_cgroup_pages(mem, gfp_mask, true, 1433 progress = mem_cgroup_hierarchical_reclaim(mem, gfp_mask, true);
1434 get_swappiness(mem));
1435 progress += mem_cgroup_check_under_limit(mem); 1434 progress += mem_cgroup_check_under_limit(mem);
1436 } while (!progress && --retry); 1435 } while (!progress && --retry);
1437 1436
@@ -1475,10 +1474,8 @@ static int mem_cgroup_resize_limit(struct mem_cgroup *memcg,
1475 if (!ret) 1474 if (!ret)
1476 break; 1475 break;
1477 1476
1478 progress = try_to_free_mem_cgroup_pages(memcg, 1477 progress = mem_cgroup_hierarchical_reclaim(memcg, GFP_KERNEL,
1479 GFP_KERNEL, 1478 false);
1480 false,
1481 get_swappiness(memcg));
1482 if (!progress) retry_count--; 1479 if (!progress) retry_count--;
1483 } 1480 }
1484 1481
@@ -1519,8 +1516,7 @@ int mem_cgroup_resize_memsw_limit(struct mem_cgroup *memcg,
1519 break; 1516 break;
1520 1517
1521 oldusage = res_counter_read_u64(&memcg->memsw, RES_USAGE); 1518 oldusage = res_counter_read_u64(&memcg->memsw, RES_USAGE);
1522 try_to_free_mem_cgroup_pages(memcg, GFP_KERNEL, true, 1519 mem_cgroup_hierarchical_reclaim(memcg, GFP_KERNEL, true);
1523 get_swappiness(memcg));
1524 curusage = res_counter_read_u64(&memcg->memsw, RES_USAGE); 1520 curusage = res_counter_read_u64(&memcg->memsw, RES_USAGE);
1525 if (curusage >= oldusage) 1521 if (curusage >= oldusage)
1526 retry_count--; 1522 retry_count--;