On Thu, May 12, 2011 at 01:00:10PM -0500, Christoph Lameter wrote: > On Thu, 12 May 2011, Andrea Arcangeli wrote: > > > order 1 should work better, because it's less likely we end up here > > (which leaves RECLAIM_MODE_LUMPYRECLAIM on and then see what happens > > at the top of page_check_references()) > > > > else if (sc->order && priority < DEF_PRIORITY - 2) > > Why is this DEF_PRIORITY - 2? Shouldnt it be DEF_PRIORITY? An accomodation > for SLAB order 1 allocs? That's to allow a few loops of the shrinker (i.e. not take down everything in the way regardless of any aging information in pte/page if there's no memory pressure). This "- 2" is independent of the allocation order. If it was < DEF_PRIORITY it'd trigger lumpy already at the second loop (in do_try_to_free_pages). So it'd make things worse. Like it'd make things worse decreasing the PAGE_ALLOC_COSTLY_ORDER define to 2 and keeping slub at 3. > May I assume that the case of order 2 and 3 allocs in that case was not > very well tested after the changes to introduce compaction since people > were focusing on RHEL testing? Not really, I had to eliminate lumpy before compaction was developed. RHEL6 has zero lumpy code (not even at compile time) and compaction enabled by default, so even if we enabled SLUB=y it should work ok (not sure why James still crashes with patch 2 applied that clears __GFP_WAIT, that crash likely has nothing to do with compaction or lumpy as both are off with __GFP_WAIT not set). Lumpy is also eliminated upstream now (but only at runtime when COMPACTION=y), unless __GFP_REPEAT is set, in which case I think lumpy will still work upstream too but few unfrequent things like increasing nr_hugepages uses that. -- To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html