• Johannes Weiner's avatar
    mm: workingset: tell cache transitions from workingset thrashing · 1899ad18
    Johannes Weiner authored
    Refaults happen during transitions between workingsets as well as in-place
    thrashing.  Knowing the difference between the two has a range of
    applications, including measuring the impact of memory shortage on the
    system performance, as well as the ability to smarter balance pressure
    between the filesystem cache and the swap-backed workingset.
    
    During workingset transitions, inactive cache refaults and pushes out
    established active cache.  When that active cache isn't stale, however,
    and also ends up refaulting, that's bonafide thrashing.
    
    Introduce a new page flag that tells on eviction whether the page has been
    active or not in its lifetime.  This bit is then stored in the shadow
    entry, to classify refaults as transitioning or thrashing.
    
    How many page->flags does this leave us with on 32-bit?
    
    	20 bits are always page flags
    
    	21 if you have an MMU
    
    	23 with the zone bits for DMA, Normal, HighMem, Movable
    
    	29 with the sparsemem section bits...
    1899ad18
migrate.c 75.9 KB