On 06/14/2015 11:04 AM, Ebru Akagunduz wrote: > This patch makes optimistic check for swapin readahead > to increase thp collapse rate. Before getting swapped > out pages to memory, checks them and allows up to a > certain number. It also prints out using tracepoints > amount of unmapped ptes. > > Signed-off-by: Ebru Akagunduz <ebru.akagunduz@xxxxxxxxx> > @@ -2639,11 +2640,11 @@ static int khugepaged_scan_pmd(struct mm_struct *mm, > { > pmd_t *pmd; > pte_t *pte, *_pte; > - int ret = 0, none_or_zero = 0; > + int ret = 0, none_or_zero = 0, unmapped = 0; > struct page *page; > unsigned long _address; > spinlock_t *ptl; > - int node = NUMA_NO_NODE; > + int node = NUMA_NO_NODE, max_ptes_swap = HPAGE_PMD_NR/8; > bool writable = false, referenced = false; This has the effect of only swapping in 4kB pages to form a THP if 7/8th of the THP is already resident in memory. This is a pretty conservative thing to do. I am not sure if we would also need to take into account things like these: 1) How many pages in the THP-area are recently referenced? Maybe this does not matter if 87.5% of the 4kB pages got faulted in after swap-out, anyway? 2) How much free memory does the system have? We don't test that for collapsing a THP with lots of pte_none() ptes, so not sure how much this matters... 3) How many of the pages we want to swap in are already resident in the swap cache? Not sure exactly what to do with this number... 4) other factors? I am also not sure how we would determine such a policy, except by maybe having these patches sit in -mm and -next for a few cycles, and seeing what happens... -- All rights reversed -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@xxxxxxxxx. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@xxxxxxxxx"> email@xxxxxxxxx </a>