On Mon, 1 Dec 2008 10:50:38 +0900 KAMEZAWA Hiroyuki <kamezawa.hiroyu@xxxxxxxxxxxxxx> wrote: > On Mon, 1 Dec 2008 01:18:09 +0000 (GMT) > Hugh Dickins <hugh@xxxxxxxxxxx> wrote: > > It comes from the fact that memcg reclaims memory not because of memory shortage > but of memory limit. > "From which zone the memory should be reclaimed" is not problem. > I used GFP_HIGHUSER_MOVABLE to show "reclaim from anyware" in explicit way. > too bad ? > Maybe I got your point.. Hmm...but... mmotm-Nov29's following gfp_mask is buggy (mis leading). == int add_to_page_cache_locked(struct page *page, struct address_space *mapping, pgoff_t offset, gfp_t gfp_mask) { int error; error = mem_cgroup_cache_charge(page, current->mm, gfp_mask & ~__GFP_HIGHMEM); if (error) == mem_cgroup_cache_charge() has to reclaim memory from HIGHMEM (if used.) to make room. (not to reclaim memory from some specified area.) (Anyway) memcg's page reclaim code uses following == unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *mem_cont, gfp_t gfp_mask, bool noswap) { sc.gfp_mask = (gfp_mask & GFP_RECLAIM_MASK) | (GFP_HIGHUSER_MOVABLE & ~GFP_RECLAIM_MASK); .... } == And we don't see bug.. I'll try mmotm-Nov30 and find some way to do better explanation. This gfp semantics of memcg is a bit different from other gfp's. Thanks, -Kame -- To unsubscribe from this list: send the line "unsubscribe linux-fsdevel" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html