• Johannes Weiner's avatar
    mm: memcg: fix compaction/migration failing due to memcg limits · 0030f535
    Johannes Weiner authored
    
    
    Compaction (and page migration in general) can currently be hindered
    through pages being owned by memory cgroups that are at their limits and
    unreclaimable.
    
    The reason is that the replacement page is being charged against the limit
    while the page being replaced is also still charged.  But this seems
    unnecessary, given that only one of the two pages will still be in use
    after migration finishes.
    
    This patch changes the memcg migration sequence so that the replacement
    page is not charged.  Whatever page is still in use after successful or
    failed migration gets to keep the charge of the page that was going to be
    replaced.
    
    The replacement page will still show up temporarily in the rss/cache
    statistics, this can be fixed in a later patch as it's less urgent.
    Reported-by: default avatarDavid Rientjes <rientjes@google.com>
    Signed-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarKAMEZAWA Hiroyuki <kamezawa.hiroyu@jp.fujitsu.com>
    Acked-by: Michal Hocko <mh...
    0030f535
migrate.c 33.4 KB