Messages in this thread | | | Subject | Re: [RFC V2 12/12] mm: Tag VMA with VM_CDM flag explicitly during mbind(MPOL_BIND) | From | Dave Hansen <> | Date | Tue, 7 Feb 2017 10:07:28 -0800 |
| |
On 01/30/2017 08:36 PM, Anshuman Khandual wrote: > On 01/30/2017 11:24 PM, Dave Hansen wrote: >> On 01/29/2017 07:35 PM, Anshuman Khandual wrote: >>> + if ((new_pol->mode == MPOL_BIND) >>> + && nodemask_has_cdm(new_pol->v.nodes)) >>> + set_vm_cdm(vma); >> So, if you did: >> >> mbind(addr, PAGE_SIZE, MPOL_BIND, all_nodes, ...); >> mbind(addr, PAGE_SIZE, MPOL_BIND, one_non_cdm_node, ...); >> >> You end up with a VMA that can never have KSM done on it, etc... Even >> though there's no good reason for it. I guess /proc/$pid/smaps might be >> able to help us figure out what was going on here, but that still seems >> like an awful lot of damage. > > Agreed, this VMA should not remain tagged after the second call. It does > not make sense. For this kind of scenarios we can re-evaluate the VMA > tag every time the nodemask change is attempted. But if we are looking for > some runtime re-evaluation then we need to steal some cycles are during > general VMA processing opportunity points like merging and split to do > the necessary re-evaluation. Should do we do these kind two kinds of > re-evaluation to be more optimal ?
I'm still unconvinced that you *need* detection like this. Scanning big VMAs is going to be really painful.
I thought I asked before but I can't find it in this thread. But, we have explicit interfaces for disabling KSM and khugepaged. Why do we need implicit ones like this in addition to those?
| |