On Thu, Jul 16, 2020 at 6:16 AM Kirill A. Shutemov <kirill@xxxxxxxxxxxxx> wrote: > > It can also lead to performance regression: for small mremap() if only one > side of the range got aligned and there's no PMD_SIZE range to move, > kernel will still iterate over PTEs, but it would need to handle more > pte_none()s than without the patch. Ack, I've dropped the patch from my queue of experiments, because it doesn't work for the case I wanted to do, and the other cases could regress, as you say. Plus considering how many problems that patch had, I decided it wasn't as simple as I initially thought it would be anyway ;) Joel - while it's gone from my mind, if you're still interested in this, maybe you can do something _similar_ that patch, except perhaps also start out checking that the initial size is large enough for this to make sense even when one of the sides doesn't align, for example. (It might be as simple as checking that the initial 'len' is at least PMD_SIZE - then you're guaranteed that whichever side gets aligned, it's not doing extra work because the other side didn't). Linus