On Mon, 11 Sep 2017, Vlastimil Babka wrote: > > A follow-up change will set the pageblock skip for this memory since it is > > never useful for either scanner. > > """ > > > >> Also there's now a danger that in cases where there's no direct > >> compaction happening (just kcompactd), nothing will ever call > >> __reset_isolation_suitable(). > >> > > > > I'm not sure that is helpful in a context where no high-order memory can > > call direct compaction that kcompactd needlessly scanning the same memory > > over and over is beneficial. > > The point is that if it becomes beneficial again, we won't know as there > will be still be skip bits. >
Why is kcompactd_do_work() not sometimes doing __reset_isolation_suitable() in the first place, if only to reset the per-zone migration and freeing scanner cached pfns? It seems fragile to rely on other threads doing direct compaction to reset the per-zone state of compaction.