On Thu, Dec 22, 2022 at 11:49 AM Andrew Morton <akpm@xxxxxxxxxxxxxxxxxxxx> wrote: > > On Wed, 21 Dec 2022 22:13:40 -0800 Yuanchu Xie <yuanchu@xxxxxxxxxx> wrote: > > > From: Yu Zhao <yuzhao@xxxxxxxxxx> This works; suggested-by probably works even better, since I didn't do the follow-up work. > > Currently in vm_flags in vm_area_struct, both VM_SEQ_READ and > > VM_RAND_READ indicate a lack of locality in accesses to the vma. Some > > places that check for locality are missing one of them. We add > > vma_has_locality to replace the existing locality checks for clarity. > > I'm all confused. Surely VM_SEQ_READ implies locality and VM_RAND_READ > indicates no-locality? Spatially, yes. But we focus more on the temporal criteria here, i.e., the reuse of an area within a relatively small duration. Both the active/inactive LRU and MGLRU rely on this. VM_SEQ_READ, while being a special case of spatial locality, fails the temporal criteria. VM_RAND_READ fails both criterias, obviously. Once an area passes the temporal criteria, MGLRU additionally exploits spatial locality by lru_gen_look_around(), which is also touched in this patch. This part is good to know but not really relevant here.