• Mina Almasry's avatar
    mm: add nodes= arg to memory.reclaim · 12a5d395
    Mina Almasry authored
    The nodes= arg instructs the kernel to only scan the given nodes for
    proactive reclaim.  For example use cases, consider a 2 tier memory
    system:
    
    nodes 0,1 -> top tier
    nodes 2,3 -> second tier
    
    $ echo "1m nodes=0" > memory.reclaim
    
    This instructs the kernel to attempt to reclaim 1m memory from node 0. 
    Since node 0 is a top tier node, demotion will be attempted first.  This
    is useful to direct proactive reclaim to specific nodes that are under
    pressure.
    
    $ echo "1m nodes=2,3" > memory.reclaim
    
    This instructs the kernel to attempt to reclaim 1m memory in the second
    tier, since this tier of memory has no demotion targets the memory will be
    reclaimed.
    
    $ echo "1m nodes=0,1" > memory.reclaim
    
    Instructs the kernel to reclaim memory from the top tier nodes, which can
    be desirable according to the userspace policy if there is pressure on the
    top tiers.  Since these nodes have demotion targets, the kernel will
    attempt demotion first.
    
    Since commit 3f1509c5 ("Revert "mm/vmscan: never demote for memcg
    reclaim""), the proactive reclaim interface memory.reclaim does both
    reclaim and demotion.  Reclaim and demotion incur different latency costs
    to the jobs in the cgroup.  Demoted memory would still be addressable by
    the userspace at a higher latency, but reclaimed memory would need to
    incur a pagefault.
    
    The 'nodes' arg is useful to allow the userspace to control demotion and
    reclaim independently according to its policy: if the memory.reclaim is
    called on a node with demotion targets, it will attempt demotion first; if
    it is called on a node without demotion targets, it will only attempt
    reclaim.
    
    Link: https://lkml.kernel.org/r/20221202223533.1785418-1-almasrymina@google.comSigned-off-by: default avatarMina Almasry <almasrymina@google.com>
    Acked-by: default avatarMichal Hocko <mhocko@suse.com>
    Acked-by: default avatarShakeel Butt <shakeelb@google.com>
    Acked-by: default avatarMuchun Song <songmuchun@bytedance.com>
    Cc: Bagas Sanjaya <bagasdotme@gmail.com>
    Cc: "Huang, Ying" <ying.huang@intel.com>
    Cc: Johannes Weiner <hannes@cmpxchg.org>
    Cc: Jonathan Corbet <corbet@lwn.net>
    Cc: Roman Gushchin <roman.gushchin@linux.dev>
    Cc: Tejun Heo <tj@kernel.org>
    Cc: Wei Xu <weixugc@google.com>
    Cc: Yang Shi <yang.shi@linux.alibaba.com>
    Cc: Yosry Ahmed <yosryahmed@google.com>
    Cc: zefan li <lizefan.x@bytedance.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    12a5d395
vmscan.c 214 KB