diff options
author | Daisuke Nishimura <nishimura@mxp.nes.nec.co.jp> | 2009-01-07 21:08:30 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2009-01-08 11:31:09 -0500 |
commit | 42e9abb628def2c335a4ecf130bb6c88d916d885 (patch) | |
tree | e626dcc9d8fff5834c419e39dce57bed765aa09a /mm/memcontrol.c | |
parent | 7f4d454dee2e0bdd21bafd413d1c53e443a26540 (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.c | 12 |
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--; |