提交 3a235693 编写于 作者: D Dave Hansen 提交者: Linus Torvalds

mm/vmscan: never demote for memcg reclaim

Global reclaim aims to reduce the amount of memory used on a given node or
set of nodes.  Migrating pages to another node serves this purpose.

memcg reclaim is different.  Its goal is to reduce the total memory
consumption of the entire memcg, across all nodes.  Migration does not
assist memcg reclaim because it just moves page contents between nodes
rather than actually reducing memory consumption.

Link: https://lkml.kernel.org/r/20210715055145.195411-9-ying.huang@intel.comSigned-off-by: NDave Hansen <dave.hansen@linux.intel.com>
Signed-off-by: N"Huang, Ying" <ying.huang@intel.com>
Suggested-by: NYang Shi <yang.shi@linux.alibaba.com>
Reviewed-by: NYang Shi <shy828301@gmail.com>
Reviewed-by: NZi Yan <ziy@nvidia.com>
Cc: Michal Hocko <mhocko@suse.com>
Cc: Wei Xu <weixugc@google.com>
Cc: Oscar Salvador <osalvador@suse.de>
Cc: David Rientjes <rientjes@google.com>
Cc: Dan Williams <dan.j.williams@intel.com>
Cc: David Hildenbrand <david@redhat.com>
Cc: Greg Thelen <gthelen@google.com>
Cc: Keith Busch <kbusch@kernel.org>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 a2a36488
...@@ -524,8 +524,13 @@ static long add_nr_deferred(long nr, struct shrinker *shrinker, ...@@ -524,8 +524,13 @@ static long add_nr_deferred(long nr, struct shrinker *shrinker,
static bool can_demote(int nid, struct scan_control *sc) static bool can_demote(int nid, struct scan_control *sc)
{ {
if (sc && sc->no_demotion) if (sc) {
return false; if (sc->no_demotion)
return false;
/* It is pointless to do demotion in memcg reclaim */
if (cgroup_reclaim(sc))
return false;
}
if (next_demotion_node(nid) == NUMA_NO_NODE) if (next_demotion_node(nid) == NUMA_NO_NODE)
return false; return false;
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册