On Thu 27-10-22 15:46:07, Aneesh Kumar K V wrote: > On 10/27/22 2:32 PM, Michal Hocko wrote: > > >> > >> Sorry, I meant MAP_ANONYMOUS | MAP_SHARED. > > > > I am still not sure where you are targeting to be honest. MAP_SHARED or > > MAP_PRIVATE both can have page shared between several vmas. > > > What I was checking was w.r.t demotion and shared pages do we need to > cross-check all the related memory policies? On the page fault side, we don't do that. Yes, because on the page fault we do have an originator and so we can apply some reasonable semantic. For the memory reclaim there is no such originator for a specific page. A completely unrelated context might be reclaiming a page with some mempolicy constrain and you do not have any records who has faulted it in. The fact that we have a memory policy also at the task level makes a completely consistent semantic rather hard if possible at all (e.g. what if different thread are simply bound to a different node because shared memory is prefaulted and local thread mappings will be always local). I do not think shared mappings are very much special in that regards. It is our mempolicy API that allows to specify a policy for vmas as well as tasks and the later makes the semantic for reclaim really awkward. -- Michal Hocko SUSE Labs