Re: [PATCH 02/10] mm/numa: automatically generate node migration order

From: David Hildenbrand
Date: Wed Apr 14 2021 - 04:13:03 EST


On 14.04.21 10:08, Oscar Salvador wrote:
On Fri, Apr 09, 2021 at 08:07:08PM -0700, Wei Xu wrote:
On Thu, Apr 1, 2021 at 11:35 AM Dave Hansen <dave.hansen@xxxxxxxxxxxxxxx> wrote:
+ * When Node 0 fills up, its memory should be migrated to
+ * Node 1. When Node 1 fills up, it should be migrated to
+ * Node 2. The migration path start on the nodes with the
+ * processors (since allocations default to this node) and
+ * fast memory, progress through medium and end with the
+ * slow memory:
+ *
+ * 0 -> 1 -> 2 -> stop
+ * 3 -> 4 -> 5 -> stop
+ *
+ * This is represented in the node_demotion[] like this:
+ *
+ * { 1, // Node 0 migrates to 1
+ * 2, // Node 1 migrates to 2
+ * -1, // Node 2 does not migrate
+ * 4, // Node 3 migrates to 4
+ * 5, // Node 4 migrates to 5
+ * -1} // Node 5 does not migrate
+ */

In this example, if we want to support multiple nodes as the demotion
target of a source node, we can group these nodes into three tiers
(classes):

fast class:
0 -> {1, 4} // 1 is the preferred
3 -> {4, 1} // 4 is the preferred

medium class:
1 -> {2, 5} // 2 is the preferred
4 -> {5, 2} // 5 is the preferred

slow class:
2 -> stop
5 -> stop

Hi Wei Xu,

I have some questions about it

Fast class/memory are pictured as those nodes with CPUs, while Slow class/memory
are PMEM, right?
Then, what stands for medium class/memory?

My guest best is that fast class is something like HBM (High Bandwidth Memory), medium class is ordinary RAM, slow class is PMEM.

--
Thanks,

David / dhildenb