On 05/24/2017 02:31 PM, Vlastimil Babka wrote: > On 05/24/2017 12:39 PM, Mike Rapoport wrote: >>> Hm so the prctl does: >>> >>> if (arg2) >>> me->mm->def_flags |= VM_NOHUGEPAGE; >>> else >>> me->mm->def_flags &= ~VM_NOHUGEPAGE; >>> >>> That's rather lazy implementation IMHO. Could we change it so the flag >>> is stored elsewhere in the mm, and the code that decides to (not) use >>> THP will check both the per-vma flag and the per-mm flag? >> >> I afraid I don't understand how that can help. >> What we need is an ability to temporarily disable collapse of the pages in >> VMAs that do not have VM_*HUGEPAGE flags set and that after we re-enable >> THP, the vma->vm_flags for those VMAs will remain intact. > > That's what I'm saying - instead of implementing the prctl flag via > mm->def_flags (which gets permanently propagated to newly created vma's > but e.g. doesn't affect already existing ones), it would be setting a > flag somewhere in mm, which khugepaged (and page faults) would check in > addition to the per-vma flags. I do not insist, but this would make existing paths (checking for flags) be 2 times slower -- from now on these would need to check two bits (vma flags and mm flags) which are 100% in different cache lines. What Mike is proposing is the way to fine-tune the existing vma flags. This would keep current paths as fast (or slow ;) ) as they are now. All the complexity would go to rare cases when someone needs to turn thp off for a while and then turn it back on. -- Pavel -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>