On Wed 27-02-13 18:57:32, Roman Gushchin wrote: [...] > >> + * > >> + */ > >> +unsigned int mem_cgroup_low_limit_scale(struct lruvec *lruvec) > >> +{ > >> + struct mem_cgroup_per_zone *mz; > >> + struct mem_cgroup *memcg; > >> + unsigned long long low_limit; > >> + unsigned long long usage; > >> + unsigned int i; > >> + > >> + mz = container_of(lruvec, struct mem_cgroup_per_zone, lruvec); > >> + memcg = mz->memcg; > >> + if (!memcg) > >> + return 0; > >> + > >> + low_limit = res_counter_read_u64(&memcg->res, RES_LOW_LIMIT); > >> + if (!low_limit) > >> + return 0; > >> + > >> + usage = res_counter_read_u64(&memcg->res, RES_USAGE); > >> + > >> + if (usage < low_limit) > >> + return DEF_PRIORITY - 2; > >> + > >> + for (i = 0; i < DEF_PRIORITY - 2; i++) > >> + if (usage - low_limit > (usage >> (i + 3))) > >> + break; > > > > why this doesn't depend in the current reclaim priority? > > How do you want to use reclaim priority here? But then you can get up to 2*DEF_PRIORITY-2 priority (in get_scan_count) in the end and we are back to my original and more fundamental objection that the low_limit depends on the group size because small groups basically do not get scanned when under/close_to limit while big groups do get scanned and reclaimed. > I don't like an idea to start ignoring low limit on some priorities. Well, but you are doing that already. If you are reclaiming for prio 0 then you add up just DEF_PRIORITY-2 which means you reclaim for all groups with more than 1024 pages on the LRUs. [...] -- Michal Hocko SUSE Labs -- 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>