Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> writes:
On 2021/11/8 14:48, Huang, Ying writes:
Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> writes:
On 2021/11/7 23:20, Dave Hansen wrote:Per my understanding, in most cases, the number of demotion target
On 11/7/21 1:33 AM, Baolin Wang wrote:
Thanks for your suggestion. After some thinking, can we change theHow large is that in the worst case?
node_demotion[] structure like below? Which means one source node can be
demoted to mutiple target node, and we can set up the target node mask
according to the node distance. How do you think? Thanks.
static nodemask_t node_demotion[MAX_NUMNODES] __read_mostly =
{[0 ... MAX_NUMNODES - 1] = NODE_MASK_NONE};
For the worst case (MAX_NUMNODES=1024), the size of the node_demotion
is 131072 bytes, while the size of original data structure is 4096
bytes. Maybe we can allocate the node_demotion dynamically?
nodes
should be quite small. So why not restrict the number of demotion
target nodes to make it some kind of simple array?
Yes, agree. Something like below is reasonable for you?
#define DEMOTION_TARGET_NODES 16
typedef struct { DECLARE_BITMAP(bits, DEMOTION_TARGET_NODES); }
demotemask_t;
static demotemask_t node_demotion[MAX_NUMNODES];
I don't think we need a bitmap. May be something as following,
#define DEMOTION_TARGET_NODES 15
struct demotion_nodes {
unsigned short nr;
unsigned short nodes[DEMOTION_TARGET_NODES];
};