On Tue 13-12-22 14:30:40, Johannes Weiner wrote: > On Tue, Dec 13, 2022 at 02:30:57PM +0800, Huang, Ying wrote: [...] > > After these discussion, I think the solution maybe use different > > interfaces for "proactive demote" and "proactive reclaim". That is, > > reconsider "memory.demote". In this way, we will always uncharge the > > cgroup for "memory.reclaim". This avoid the possible confusion there. > > And, because demotion is considered aging, we don't need to disable > > demotion for "memory.reclaim", just don't count it. > > Hm, so in summary: > > 1) memory.reclaim would demote and reclaim like today, but it would > change to only count reclaimed pages against the goal. > > 2) memory.demote would only demote. > > a) What if the demotion targets are full? Would it reclaim or fail? > > 3) Would memory.reclaim and memory.demote still need nodemasks? Would > they return -EINVAL if a) memory.reclaim gets passed only toptier > nodes or b) memory.demote gets passed any lasttier nodes? I would also add 4) Do we want to allow to control the demotion path (e.g. which node to demote from and to) and how to achieve that? 5) Is the demotion api restricted to multi-tier systems or any numa configuration allowed as well? -- Michal Hocko SUSE Labs