On Wed, Oct 26, 2022 at 01:11:40PM +0200, David Hildenbrand wrote: > > In the appliance case, it doesn't matter if the intent is that "all > > application data should use high bandwidth memory where possible and > > the application phase behaviour is predictable" and that may very well > > work fine for the users of the Broadcom platforms with multiple memory > > controllers. It does not work at all for the general where access must > > be restricted to a subset of tasks in a general system that can only be > > controlled with memory policies. > > > > The high bandwidth memory should be representated as a NUMA node, optionally > > to create that node as ZONE_MOVABLE and relying on the zonelists to select > > the movable zone as the first preference. > > ... that boils down to my remark to tiered memory and eventually using > devdax to expose this memory to the system and letting the admin decide to > online it to ZONE_MOVABLE. Of course, that's just one way of doing it. > I don't see this approach being inherently bad as such, particularly in the appliance space where it is known in advance what exactly is running and what the requirements are. It's not automagical but it's not worse than specifying something like movablecore=100M@2G,100M@3G,1G@1024G. In either case, knowledge of the address ranges needing special treatment is required with the difference being that access to the special memory can be restricted by policies in the general case. -- Mel Gorman SUSE Labs