On Wed 26-10-22 18:05:46, Aneesh Kumar K V wrote: > On 10/26/22 5:51 PM, Michal Hocko wrote: > > On Wed 26-10-22 17:38:06, Aneesh Kumar K V wrote: > >> On 10/26/22 4:32 PM, Michal Hocko wrote: > >>> On Wed 26-10-22 16:12:25, Aneesh Kumar K V wrote: > >>>> On 10/26/22 2:49 PM, Michal Hocko wrote: > >>>>> On Wed 26-10-22 16:00:13, Feng Tang wrote: > >>>>>> On Wed, Oct 26, 2022 at 03:49:48PM +0800, Aneesh Kumar K V wrote: > >>>>>>> On 10/26/22 1:13 PM, Feng Tang wrote: > >>>>>>>> In page reclaim path, memory could be demoted from faster memory tier > >>>>>>>> to slower memory tier. Currently, there is no check about cpuset's > >>>>>>>> memory policy, that even if the target demotion node is not allowd > >>>>>>>> by cpuset, the demotion will still happen, which breaks the cpuset > >>>>>>>> semantics. > >>>>>>>> > >>>>>>>> So add cpuset policy check in the demotion path and skip demotion > >>>>>>>> if the demotion targets are not allowed by cpuset. > >>>>>>>> > >>>>>>> > >>>>>>> What about the vma policy or the task memory policy? Shouldn't we respect > >>>>>>> those memory policy restrictions while demoting the page? > >>>>>> > >>>>>> Good question! We have some basic patches to consider memory policy > >>>>>> in demotion path too, which are still under test, and will be posted > >>>>>> soon. And the basic idea is similar to this patch. > >>>>> > >>>>> For that you need to consult each vma and it's owning task(s) and that > >>>>> to me sounds like something to be done in folio_check_references. > >>>>> Relying on memcg to get a cpuset cgroup is really ugly and not really > >>>>> 100% correct. Memory controller might be disabled and then you do not > >>>>> have your association anymore. > >>>>> > >>>> > >>>> I was looking at this recently and I am wondering whether we should worry about VM_SHARE > >>>> vmas. > >>>> > >>>> ie, page_to_policy() can just reverse lookup just one VMA and fetch the policy right? > >>> > >>> How would that help for private mappings shared between parent/child? > >> > >> > >> this is MAP_PRIVATE | MAP_SHARED? > > > > 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. -- Michal Hocko SUSE Labs