On 3/5/24 09:41, Barry Song wrote: > We did implement similar idea in the pageblock granularity on OPPO's > phones by extending two special migratetypes[1]: > > * QUAD_TO_TRIP - this is mainly for 4-order mTHP allocation which can use > ARM64's CONT-PTE; but can rarely be splitted into 3 order to dull the pain > of 3-order allocation if and only if 3-order allocation has failed in both > normal buddy and the below TRIP_TO_QUAD. > > * TRIP_TO_QUAD - this is mainly for 4-order mTHP allocation which can use > ARM64's CONT-PTE; but can sometimes be splitted into 3 order to dull the > pain of 3-order allocation if and only if 3-order allocation has failed in > normal buddy. > > neither of above will be merged into 5 order or above; neither of above > will be splitted into 2 order or lower. > > in compaction, we will skip both of above. I am seeing one disadvantage > of this approach is that I have to add a separate LRU list in each > zone to place those mTHP folios. if mTHP and small folios are put > in the same LRU list, the reclamation efficiency is extremely bad. > > A separate zone, on the other hand, can avoid a separate LRU list > for mTHP as the new zone has its own LRU list. But we switched from per-zone to per-node LRU lists years ago? Is that actually a complication for the policy zones? Or does this work silently assume multigen lru which (IIRC) works differently? > [1] https://github.com/OnePlusOSS/android_kernel_oneplus_sm8650/blob/oneplus/sm8650_u_14.0.0_oneplus12/mm/page_alloc.c > >> >> [1] https://lore.kernel.org/20240215103205.2607016-1-ryan.roberts@xxxxxxx/ >> [2] https://lore.kernel.org/20200928175428.4110504-1-zi.yan@xxxxxxxx/ >> >> Signed-off-by: Yu Zhao <yuzhao@xxxxxxxxxx> > > Thanks > Barry > >