On Tue 14-12-21 11:33:41, Christoph Lameter wrote: > On Tue, 14 Dec 2021, Michal Hocko wrote: > > > This patch takes a different approach (following a lead of [3]) and it > > pre allocates pgdat for all possible nodes in an arch indipendent code > > - free_area_init. All uninitialized nodes are treated as memoryless > > nodes. node_state of the node is not changed because that would lead to > > other side effects - e.g. sysfs representation of such a node and from > > past discussions [4] it is known that some tools might have problems > > digesting that. > > Would it be possible to define a pgdat statically and place it in read > only memory? Populate with values that ensure that the page allocator > does not blow up but does a defined fallback. > > Point the pgdat for all nodes not online to that readonly pgdat? > > Maybe that would save some memory. When the node comes online then a real > pgdat could be allocated. This is certainly possible but also it is more complex. I aim for as simple as possible at this stage. The reason I am not concerned about memory overhead so much (even though the pgdat is a large data structure) is that these unpopulated nodes are rather rare. We might see more of them in the future but we are not quite there yet so I do not think this is a major obstacle for now. -- Michal Hocko SUSE Labs