Message ID | 20200327170601.18563-3-kirill.shutemov@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | thp/khugepaged improvements and CoW semantics | expand |
On 27 Mar 2020, at 13:05, Kirill A. Shutemov wrote: > __collapse_huge_page_swapin() check number of referenced PTE to decide > if the memory range is hot enough to justify swapin. > > The problem is that it stops collapse altogether if there's not enough > refereced pages, not only swappingin. > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Fixes: 0db501f7a34c ("mm, thp: convert from optimistic swapin collapsing to conservative") > --- > mm/khugepaged.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 99bab7e4d05b..14d7afc90786 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -905,7 +905,8 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm, > /* we only decide to swapin, if there is enough young ptes */ > if (referenced < HPAGE_PMD_NR/2) { > trace_mm_collapse_huge_page_swapin(mm, swapped_in, referenced, 0); > - return false; > + /* Do not block collapse, only skip swapping in */ > + return true; > } > vmf.pte = pte_offset_map(pmd, address); > for (; vmf.address < address + HPAGE_PMD_NR*PAGE_SIZE; > -- > 2.26.0 Make sense. Reviewed-by: Zi Yan <ziy@nvidia.com> — Best Regards, Yan Zi
On Fri, Mar 27, 2020 at 10:06 AM Kirill A. Shutemov <kirill@shutemov.name> wrote: > > __collapse_huge_page_swapin() check number of referenced PTE to decide > if the memory range is hot enough to justify swapin. > > The problem is that it stops collapse altogether if there's not enough > refereced pages, not only swappingin. s/refereced/referenced > > Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> > Fixes: 0db501f7a34c ("mm, thp: convert from optimistic swapin collapsing to conservative") > --- > mm/khugepaged.c | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 99bab7e4d05b..14d7afc90786 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -905,7 +905,8 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm, > /* we only decide to swapin, if there is enough young ptes */ > if (referenced < HPAGE_PMD_NR/2) { > trace_mm_collapse_huge_page_swapin(mm, swapped_in, referenced, 0); > - return false; > + /* Do not block collapse, only skip swapping in */ > + return true; > } > vmf.pte = pte_offset_map(pmd, address); > for (; vmf.address < address + HPAGE_PMD_NR*PAGE_SIZE; > -- > 2.26.0 > >
diff --git a/mm/khugepaged.c b/mm/khugepaged.c index 99bab7e4d05b..14d7afc90786 100644 --- a/mm/khugepaged.c +++ b/mm/khugepaged.c @@ -905,7 +905,8 @@ static bool __collapse_huge_page_swapin(struct mm_struct *mm, /* we only decide to swapin, if there is enough young ptes */ if (referenced < HPAGE_PMD_NR/2) { trace_mm_collapse_huge_page_swapin(mm, swapped_in, referenced, 0); - return false; + /* Do not block collapse, only skip swapping in */ + return true; } vmf.pte = pte_offset_map(pmd, address); for (; vmf.address < address + HPAGE_PMD_NR*PAGE_SIZE;
__collapse_huge_page_swapin() check number of referenced PTE to decide if the memory range is hot enough to justify swapin. The problem is that it stops collapse altogether if there's not enough refereced pages, not only swappingin. Signed-off-by: Kirill A. Shutemov <kirill.shutemov@linux.intel.com> Fixes: 0db501f7a34c ("mm, thp: convert from optimistic swapin collapsing to conservative") --- mm/khugepaged.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)