(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. 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=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>