• Johannes Weiner's avatar
    mm: memcontrol: deprecate charge moving · da34a848
    Johannes Weiner authored
    Charge moving mode in cgroup1 allows memory to follow tasks as they
    migrate between cgroups.  This is, and always has been, a questionable
    thing to do - for several reasons.
    
    First, it's expensive.  Pages need to be identified, locked and isolated
    from various MM operations, and reassigned, one by one.
    
    Second, it's unreliable.  Once pages are charged to a cgroup, there isn't
    always a clear owner task anymore.  Cache isn't moved at all, for example.
    Mapped memory is moved - but if trylocking or isolating a page fails,
    it's arbitrarily left behind.  Frequent moving between domains may leave a
    task's memory scattered all over the place.
    
    Third, it isn't really needed.  Launcher tasks can kick off workload tasks
    directly in their target cgroup.  Using dedicated per-workload groups
    allows fine-grained policy adjustments - no need to move tasks and their
    physical pages between control domains.  The feature was never
    forward-ported to cgroup2, and it hasn't been missed.
    
    Despite it being a niche usecase, the maintenance overhead of supporting
    it is enormous.  Because pages are moved while they are live and subject
    to various MM operations, the synchronization rules are complicated. 
    There are lock_page_memcg() in MM and FS code, which non-cgroup people
    don't understand.  In some cases we've been able to shift code and cgroup
    API calls around such that we can rely on native locking as much as
    possible.  But that's fragile, and sometimes we need to hold MM locks for
    longer than we otherwise would (pte lock e.g.).
    
    Mark the feature deprecated. Hopefully we can remove it soon.
    
    And backport into -stable kernels so that people who develop against
    earlier kernels are warned about this deprecation as early as possible.
    
    [akpm@linux-foundation.org: fix memory.rst underlining]
    Link: https://lkml.kernel.org/r/Y5COd+qXwk/S+n8N@cmpxchg.orgSigned-off-by: default avatarJohannes Weiner <hannes@cmpxchg.org>
    Acked-by: default avatarShakeel Butt <shakeelb@google.com>
    Acked-by: default avatarHugh Dickins <hughd@google.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Cc: Muchun Song <songmuchun@bytedance.com>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: <stable@vger.kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    da34a848
memory.rst 39.1 KB