On Tue 13-09-11 01:37:46, Kirill A. Shutemov wrote: > On Mon, Sep 12, 2011 at 12:57:18PM +0200, Johannes Weiner wrote: [...] > > while (1) { > > - victim = mem_cgroup_select_victim(root_memcg); > > - if (victim == root_memcg) { > > + victim = mem_cgroup_iter(root_memcg, victim, true); > > + if (!victim) { > > loop++; > > /* > > * We are not draining per cpu cached charges during > > @@ -1689,10 +1644,8 @@ static int mem_cgroup_hierarchical_reclaim(struct mem_cgroup *root_memcg, > > * anything, it might because there are > > * no reclaimable pages under this hierarchy > > */ > > - if (!check_soft || !total) { > > - css_put(&victim->css); > > + if (!check_soft || !total) > > break; > > - } > > /* > > * We want to do more targeted reclaim. > > * excess >> 2 is not to excessive so as to > > @@ -1700,15 +1653,13 @@ static int mem_cgroup_hierarchical_reclaim(struct mem_cgroup *root_memcg, > > * coming back to reclaim from this cgroup > > */ > > if (total >= (excess >> 2) || > > - (loop > MEM_CGROUP_MAX_RECLAIM_LOOPS)) { > > - css_put(&victim->css); > > + (loop > MEM_CGROUP_MAX_RECLAIM_LOOPS)) > > break; > > - } > > } > > + continue; > > Souldn't we do > > victim = root_memcg; > > instead? You want to save mem_cgroup_iter call? Yes it will work... I am not sure it is really an improvement. If we just continue we can rely on mem_cgroup_iter doing the right thing. Assignment might be not that obvious. But I dunno. -- Michal Hocko SUSE Labs SUSE LINUX s.r.o. Lihovarska 1060/12 190 00 Praha 9 Czech Republic -- 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/ . Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/ Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>