On Thu 07-08-14 09:10:43, Greg Thelen wrote: > On Thu, Aug 07 2014, Johannes Weiner wrote: [...] > > So what I'm proposing works and is of equal quality from a THP POV. > > This change is complicated enough when we stick to the facts, let's > > not make up things based on gut feeling. > > I think that high order non THP page allocations also benefit from this. > Such allocations don't have a small page fallback. > > This may be in flux, but linux-next shows me that: > * mem_cgroup_reclaim() > frees at least SWAP_CLUSTER_MAX (32) pages. > * try_charge() calls mem_cgroup_reclaim() indefinitely for > costly (3) or smaller orders assuming that something is reclaimed on > each iteration. > * try_charge() uses a loop of MEM_CGROUP_RECLAIM_RETRIES (5) for > larger-than-costly orders. Unless there is __GFP_NORETRY which fails the charge after the first round of unsuccessful reclaim. This is the case regardless of nr_pages but only THP are charged with __GFP_NORETRY currently. > So for larger-than-costly allocations, try_charge() should be able to > reclaim 160 (5*32) pages which satisfies an order:7 allocation. But for > order:8+ allocations try_charge() and mem_cgroup_reclaim() are too eager > to give up without something like this. So I think this patch is a step > in the right direction. I think we should be careful for charges which are OK to fail because there is a fallback for them (THP). The only other high-order charges are coming from kmem and I am yet not sure what to do about those without memcg specific slab reclaim. I wouldn't make this discussion more complicated for this case now. > Coincidentally, we've been recently been experimenting with something > like this. Though we didn't modify the interface between > mem_cgroup_reclaim() and try_to_free_mem_cgroup_pages() - instead we > looped within mem_cgroup_reclaim() until nr_pages of margin were found. > But I have no objection the proposed plumbing of nr_pages all the way > into try_to_free_mem_cgroup_pages(). -- 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>