Re: [PATCH 4/7] migrate_pages(): fix failure counting for THP subpages retrying

From: Baolin Wang
Date: Sun Jun 26 2022 - 23:59:56 EST




On 6/27/2022 9:46 AM, Huang, Ying wrote:
Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx> writes:

On 6/24/2022 10:53 AM, Huang Ying wrote:
If THP is failed to be migrated for -ENOSYS and -ENOMEM, the THP will
be split into thp_split_pages, and after other pages are migrated,
pages in thp_split_pages will be migrated with no_subpage_counting ==
true, because its failure have been counted already. If some pages in
thp_split_pages are retried during migration, we should not count
their failure if no_subpage_counting == true too. This is done this
patch to fix the failure counting for THP subpages retrying.

Good catch. Totally agree with you. It seems we can move the condition
into -EAGAIN case like other cases did?

diff --git a/mm/migrate.c b/mm/migrate.c
index 1ece23d80bc4..491c2d07402b 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1463,7 +1463,7 @@ int migrate_pages(struct list_head *from,
new_page_t get_new_page,
case -EAGAIN:
if (is_thp)
thp_retry++;
- else
+ else if (!no_subpage_counting)
retry++;
break;

This has another effect except fixing the failure counting. That is,
the split subpages of THP will not be retried for 10 times for -EAGAIN.

Ah, yes.

TBH, I think that we should do that. But because this has some behavior

OK. So you afraid that 10 times retry for each subpage of THP will waste lots of time?

change, it's better to be done in a separate patch? Do you have
interest to do that on top of this patchset?

Sure. I can send a patch which can be folded into your series. Is this OK for you?

By the way, if I do like I said, the patch 4 can be avoided.


Anyway this patch looks good to me.
Reviewed-by: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>

Thanks!

Best Regards,
Huang, Ying

Signed-off-by: "Huang, Ying" <ying.huang@xxxxxxxxx>
Fixes: 5984fabb6e82 ("mm: move_pages: report the number of non-attempted pages")
Cc: Baolin Wang <baolin.wang@xxxxxxxxxxxxxxxxx>
Cc: Zi Yan <ziy@xxxxxxxxxx>
Cc: Yang Shi <shy828301@xxxxxxxxx>
--- > mm/migrate.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/mm/migrate.c b/mm/migrate.c
index 542533e4e3cf..61dab3025a1d 100644
--- a/mm/migrate.c
+++ b/mm/migrate.c
@@ -1477,7 +1477,8 @@ int migrate_pages(struct list_head *from, new_page_t get_new_page,
}
}
}
- nr_failed += retry;
+ if (!no_subpage_counting)
+ nr_failed += retry;
nr_thp_failed += thp_retry;
/*
* Try to migrate subpages of fail-to-migrate THPs, no nr_failed