On Tue, Aug 22, 2017 at 12:55 PM, Liang, Kan wrote: > >> So I propose testing the attached trivial patch. > > It doesn’t work. > The call stack is the same. So I would have expected the stack trace to be the same, and I would even expect the CPU usage to be fairly similar, because you'd see repeating from the callers (taking the fault again if the page is - once again - being migrated). But I was hoping that the wait queues would be shorter because the loop for the retry would be bigger. Oh well. I'm slightly out of ideas. Apparently the yield() worked ok (apart from not catching all cases), and maybe we could do a version that waits on the page bit in the non-contended case, but yields under contention? IOW, maybe this is the best we can do for now? Introducing that "wait_on_page_migration()" helper might allow us to tweak this a bit as people come up with better ideas.. And then add Tim's patch for the general worst-case just in case? Linus