On Sun, Jun 17, 2012 at 7:58 PM, Kamezawa Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > (2012/06/07 3:24), Ying Han wrote: >> The function zone_reclaimable() marks zone->all_unreclaimable based on >> per-zone pages_scanned and reclaimable_pages. If all_unreclaimable is true, >> alloc_pages could go to OOM instead of getting stuck in page reclaim. >> >> In memcg kernel, cgroup under its softlimit is not targeted under global >> reclaim. So we need to remove those pages from reclaimable_pages, otherwise >> it will cause reclaim mechanism to get stuck trying to reclaim from >> all_unreclaimable zone. >> >> Signed-off-by: Ying Han<yinghan@xxxxxxxxxx> >> --- >> mm/vmscan.c | 24 ++++++++++++++++++------ >> 1 files changed, 18 insertions(+), 6 deletions(-) >> >> diff --git a/mm/vmscan.c b/mm/vmscan.c >> index 65febc1..163b197 100644 >> --- a/mm/vmscan.c >> +++ b/mm/vmscan.c >> @@ -3142,14 +3142,26 @@ unsigned long global_reclaimable_pages(void) >> >> unsigned long zone_reclaimable_pages(struct zone *zone) >> { >> - int nr; >> + int nr = 0; >> + struct mem_cgroup *memcg; >> >> - nr = zone_page_state(zone, NR_ACTIVE_FILE) + >> - zone_page_state(zone, NR_INACTIVE_FILE); >> + memcg = mem_cgroup_iter(NULL, NULL, NULL); >> + do { >> + struct mem_cgroup_zone mz = { >> + .mem_cgroup = memcg, >> + .zone = zone, >> + }; >> >> - if (nr_swap_pages> 0) >> - nr += zone_page_state(zone, NR_ACTIVE_ANON) + >> - zone_page_state(zone, NR_INACTIVE_ANON); >> + if (should_reclaim_mem_cgroup(memcg)) { >> + nr += zone_nr_lru_pages(&mz, LRU_INACTIVE_FILE) + >> + zone_nr_lru_pages(&mz, LRU_ACTIVE_FILE); >> + >> + if (nr_swap_pages> 0) >> + nr += zone_nr_lru_pages(&mz, LRU_ACTIVE_ANON) + >> + zone_nr_lru_pages(&mz, LRU_INACTIVE_ANON); >> + } >> + memcg = mem_cgroup_iter(NULL, memcg, NULL); >> + } while (memcg); >> > > Shouldn't you handle 'ignore_softlimit' case ? > Anyway, Kosaki-san is now trying to modify zone->all_unreclaimable etc.. > we need to check it with softlimit context. Yes, I am about to post the next version which I included Kosaki's patch as replacement Thanks ~ --Ying > > Thanks, > -Kame > > -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href