summaryrefslogtreecommitdiffstats
path: root/mm/migrate.c
diff options
context:
space:
mode:
authorBaolin Wang <baolin.wang@linux.alibaba.com>2022-01-14 14:08:46 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2022-01-15 16:30:31 +0200
commit7813a1b5257b8eb2cb915cd08e7ba857070fdfd3 (patch)
tree99ed8f321920321f356b74d55f83688444dda6d2 /mm/migrate.c
parentac16ec835314677dd7405dfb5a5e007c3ca424c7 (diff)
downloadlinux-7813a1b5257b8eb2cb915cd08e7ba857070fdfd3.tar.gz
linux-7813a1b5257b8eb2cb915cd08e7ba857070fdfd3.tar.bz2
linux-7813a1b5257b8eb2cb915cd08e7ba857070fdfd3.zip
mm: migrate: add more comments for selecting target node randomly
As Yang Shi suggested [1], it will be helpful to explain why we should select target node randomly now if there are multiple target nodes. [1] https://lore.kernel.org/all/CAHbLzkqSqCL+g7dfzeOw8fPyeEC0BBv13Ny1UVGHDkadnQdR=g@mail.gmail.com/ Link: https://lkml.kernel.org/r/c31d36bd097c6e9e69fc0f409c43b78e53e64fc2.1637766801.git.baolin.wang@linux.alibaba.com Signed-off-by: Baolin Wang <baolin.wang@linux.alibaba.com> Reviewed-by: Yang Shi <shy828301@gmail.com> Cc: "Huang, Ying" <ying.huang@intel.com> Cc: Dave Hansen <dave.hansen@linux.intel.com> Cc: Zi Yan <ziy@nvidia.com> Cc: zhongjiang-ali <zhongjiang-ali@linux.alibaba.com> Cc: Xunlei Pang <xlpang@linux.alibaba.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'mm/migrate.c')
-rw-r--r--mm/migrate.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/mm/migrate.c b/mm/migrate.c
index 9d2642a34018..f50087d3ebf2 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1206,6 +1206,14 @@ int next_demotion_node(int node)
/*
* If there are multiple target nodes, just select one
* target node randomly.
+ *
+ * In addition, we can also use round-robin to select
+ * target node, but we should introduce another variable
+ * for node_demotion[] to record last selected target node,
+ * that may cause cache ping-pong due to the changing of
+ * last target node. Or introducing per-cpu data to avoid
+ * caching issue, which seems more complicated. So selecting
+ * target node randomly seems better until now.
*/
index = get_random_int() % target_nr;
break;