From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 262FFC54E58 for ; Tue, 26 Mar 2024 06:19:42 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B289F6B008A; Tue, 26 Mar 2024 02:19:41 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD5866B009B; Tue, 26 Mar 2024 02:19:41 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 9C4B06B009E; Tue, 26 Mar 2024 02:19:41 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 8BBEF6B008A for ; Tue, 26 Mar 2024 02:19:41 -0400 (EDT) Received: from smtpin19.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay01.hostedemail.com (Postfix) with ESMTP id 675E41C09B3 for ; Tue, 26 Mar 2024 06:19:41 +0000 (UTC) X-FDA: 81938188962.19.C82BC9C Received: from out30-111.freemail.mail.aliyun.com (out30-111.freemail.mail.aliyun.com [115.124.30.111]) by imf03.hostedemail.com (Postfix) with ESMTP id 6BDE020012 for ; Tue, 26 Mar 2024 06:19:37 +0000 (UTC) Authentication-Results: imf03.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=c6uiXWb4; spf=pass (imf03.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.111 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1711433978; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=VvNMGVN1rFiN9r1DX16BIWk3fnbEG8dCI8TISDnEaXg=; b=gkZpruYzntXT/N2EUz6SMbo8N5zKRAQfiv50rcm2ZQO2//wo9f61SsY+IOsH17QKu5TbKH ou5AbTbrfpJAjCsGWiFwn5vejwL4xc0ve/9NqjYb7YTOLk5RAfHICqvrDHFzADVvIRKLcK HwNPwdHAeQAPYKwhdQJHDo97PftDjfA= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1711433978; a=rsa-sha256; cv=none; b=u2Nhk4ctSADuMuAStv9cA54WXeTwdi8523UDDMZoDDMK+JkE6V+Js10uTnaaZBdmMQZEzy 88w3WPJnscBJumIII8Wg7nY9n1dI7oKDYR1B7sKZkHzaJTj69CnRhUNOCrWuxEfz0fKoCp JN1YDac7cb68nKeJ7RsuJX+gG267eRU= ARC-Authentication-Results: i=1; imf03.hostedemail.com; dkim=pass header.d=linux.alibaba.com header.s=default header.b=c6uiXWb4; spf=pass (imf03.hostedemail.com: domain of baolin.wang@linux.alibaba.com designates 115.124.30.111 as permitted sender) smtp.mailfrom=baolin.wang@linux.alibaba.com; dmarc=pass (policy=none) header.from=linux.alibaba.com DKIM-Signature:v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.alibaba.com; s=default; t=1711433974; h=Message-ID:Date:MIME-Version:Subject:To:From:Content-Type; bh=VvNMGVN1rFiN9r1DX16BIWk3fnbEG8dCI8TISDnEaXg=; b=c6uiXWb4lMjrZmhDLqhYA3Yoe6OW0fWN0gAjZJ+o8VQNyGXhvrt8oBSc7F1ij4aHFfqy6Iwu2HMMCgBTUApPDvHF4HKZF26/Qyc4sJcrxcge5ke+0CYOUvzg0QzXid4dNPVSFd0Uwa2WXqhFpBeXiPGmfJnhuAr2yths/UJjhZw= X-Alimail-AntiSpam:AC=PASS;BC=-1|-1;BR=01201311R141e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=ay29a033018045168;MF=baolin.wang@linux.alibaba.com;NM=1;PH=DS;RN=11;SR=0;TI=SMTPD_---0W3K-ROS_1711433973; Received: from 30.97.56.56(mailfrom:baolin.wang@linux.alibaba.com fp:SMTPD_---0W3K-ROS_1711433973) by smtp.aliyun-inc.com; Tue, 26 Mar 2024 14:19:34 +0800 Message-ID: <1ecde325-097b-49e9-9f1f-d93edbc8e1f1@linux.alibaba.com> Date: Tue, 26 Mar 2024 14:19:32 +0800 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH v5] mm/migrate: split source folio if it is on deferred split list To: Zi Yan , linux-mm@kvack.org Cc: Andrew Morton , "Matthew Wilcox (Oracle)" , Yang Shi , Huang Ying , "Kirill A . Shutemov" , Ryan Roberts , "Yin, Fengwei" , SeongJae Park , linux-kernel@vger.kernel.org References: <20240322193304.522496-1-zi.yan@sent.com> From: Baolin Wang In-Reply-To: <20240322193304.522496-1-zi.yan@sent.com> Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit X-Rspamd-Queue-Id: 6BDE020012 X-Rspam-User: X-Stat-Signature: zda9zykww9opwe895ipzbqczs88xdj55 X-Rspamd-Server: rspam03 X-HE-Tag: 1711433977-625189 X-HE-Meta: U2FsdGVkX1/RBOmM37i3yJ+DAjOlswZB1jpgHU1Qex88FSD2+hMOdHj0r3g6/zg//v5iNPCWYqLcWp5j9iUPkY6JwvWu02FzxwQ/2BsZnD/qoTDENbdg9pLwZy4I2gnrJYf7BHt57diefAgrCv91Ag1S5Q4gkCMWRdKxXYvIuOO29EVpubP3B+AEpwRQil6a4DOgj6oGDRgCvbj1TwA8S2reg0mp1m2MxGfzgnwO1He0KpsmMPrO10BA1gVVgh35C1P2ZRCK1R8Xni2ouTBOV1JmW86EVUlYJnOQjiiEjLhLB2f9g8cE6zVpHORRD4/jyK06Ik4YVajcbp0bDuy1NgoiAVh8rPiVBZ1dyIYFrcMICzkp5kem7w/Hi2fUtZDOxUxRrpmvTux/+5EdynCUt876rIIvQwEaJVGmDTnfGTr+GGnCOj1MjonpYF5G/6Lgsbm6SqaRhUPYPtCEx3SH+SyZio4sHP0XRP10R0/GyC5GB9j2x63tUeGW8W5dF/LsjQPHHQ0N1358MPE+CjMc1VhFNVjQjwo9NJ827KBlA8C0QOrigE5g0HtquKqmOaB/FIu5ZXnP+9WIGUEhw0ma5tMzzhkKTXBXXp6jzNhy83Quuh2I33/nVOrma4sCFgS+bNIIiAJubgS+aJCon5WTgx8BS2SYgYNMKYt+OkELimSw4904JiIbeTaToW/nW4qL84X4t1QF8JFtL8WYiLbY/q9pJMDWp785nAMgy1rnrMLNa4ZEWMTuPPCOpSZsRrpSWoOgzVnhYoFh38goC4rT+SDp/zm1ifzd5WHhZPWvlISV3rDgkrersCNur4Z/O6cWXfsZr10L7/ILeD0ErmOShy2+QuMbf33HOq3RH2rWeEbxAynJCaX2s5eXuNU1UdpGYVbIV64aikvaOUaxma9kActqJTWSkunC X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: List-Subscribe: List-Unsubscribe: On 2024/3/23 03:33, Zi Yan wrote: > From: Zi Yan > > If the source folio is on deferred split list, it is likely some subpages > are not used. Split it before migration to avoid migrating unused subpages. > > Commit 616b8371539a6 ("mm: thp: enable thp migration in generic path") > did not check if a THP is on deferred split list before migration, thus, > the destination THP is never put on deferred split list even if the source > THP might be. The opportunity of reclaiming free pages in a partially > mapped THP during deferred list scanning is lost, but no other harmful > consequence is present[1]. > > From v4: > 1. Simplify _deferred_list check without locking and do not count as > migration failures. (per Matthew Wilcox) > > From v3: > 1. Guarded deferred list code behind CONFIG_TRANSPARENT_HUGEPAGE to avoid > compilation error (per SeongJae Park). > > From v2: > 1. Split the source folio instead of migrating it (per Matthew Wilcox)[2]. > > From v1: > 1. Used dst to get correct deferred split list after migration > (per Ryan Roberts). > > [1]: https://lore.kernel.org/linux-mm/03CE3A00-917C-48CC-8E1C-6A98713C817C@nvidia.com/ > [2]: https://lore.kernel.org/linux-mm/Ze_P6xagdTbcu1Kz@casper.infradead.org/ > > Fixes: 616b8371539a ("mm: thp: enable thp migration in generic path") > Signed-off-by: Zi Yan > --- > mm/migrate.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/mm/migrate.c b/mm/migrate.c > index ab9856f5931b..6bd9319624a3 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1652,6 +1652,29 @@ static int migrate_pages_batch(struct list_head *from, > > cond_resched(); > > + /* > + * The rare folio on the deferred split list should > + * be split now. It should not count as a failure. > + * Only check it without removing it from the list. > + * Since the folio can be on deferred_split_scan() > + * local list and removing it can cause the local list > + * corruption. Folio split process below can handle it > + * with the help of folio_ref_freeze(). > + * > + * nr_pages > 2 is needed to avoid checking order-1 > + * page cache folios. They exist, in contrast to > + * non-existent order-1 anonymous folios, and do not > + * use _deferred_list. > + */ > + if (nr_pages > 2 && > + !list_empty(&folio->_deferred_list)) { > + if (try_split_folio(folio, from) == 0) { IMO, we should move the split folios into the 'split_folios' list instead of the 'from' list, otherwise there might be unhandled folios remaining in the from list. > + stats->nr_thp_split += is_thp; > + stats->nr_split++; > + continue; > + } > + } > + > /* > * Large folio migration might be unsupported or > * the allocation might be failed so we should retry > > base-commit: 08a487ab26d541a3bd0adaee144f684b724d233b