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 24A89C5478C for ; Wed, 28 Feb 2024 03:49:36 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 988C180019; Tue, 27 Feb 2024 22:49:35 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 9393280015; Tue, 27 Feb 2024 22:49:35 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 800B580019; Tue, 27 Feb 2024 22:49:35 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 7095380015 for ; Tue, 27 Feb 2024 22:49:35 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay02.hostedemail.com (Postfix) with ESMTP id 1B1C4120B05 for ; Wed, 28 Feb 2024 03:49:35 +0000 (UTC) X-FDA: 81839833110.01.B146235 Received: from mail-pf1-f172.google.com (mail-pf1-f172.google.com [209.85.210.172]) by imf29.hostedemail.com (Postfix) with ESMTP id 71B07120004 for ; Wed, 28 Feb 2024 03:49:33 +0000 (UTC) Authentication-Results: imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dp4oTbSY; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1709092173; 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-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=NQlUYyJ2eXhnbobYPXDOgBr3jKeBkHk1CGOLpbMiMT0=; b=mTt4IR3/vNnWadkN91iPMUMJrOCuSMRECYIUyHYuWOOJsZpD6ewKFioKBUYn8Y37lhbA/t iBeB6YrNmkgqIcKrL5kGBudFvxJox3FvlQIezrFWjNic3K+UHluyrGRgo61QHWrHEwkMIX QfObhVZTcJCzJtGFyOcx8bypeROMQNw= ARC-Authentication-Results: i=1; imf29.hostedemail.com; dkim=pass header.d=gmail.com header.s=20230601 header.b=dp4oTbSY; dmarc=pass (policy=none) header.from=gmail.com; spf=pass (imf29.hostedemail.com: domain of 21cnbao@gmail.com designates 209.85.210.172 as permitted sender) smtp.mailfrom=21cnbao@gmail.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1709092173; a=rsa-sha256; cv=none; b=5rYEBExkLSO5p5/fleX5cjYbSi2R14/Dh3O3OqOblCDQ2lxo8rvLM4QAA8QbF28Q9uEnGk ogXDfySufzkIcUnWUBYvugqpRQnqgzVIKD6SPdNQWp2IilG8Q+DjIQ3IaQpLy5lnmRQfqb KzIF7xV534maiCp3sZK2OPLWaZDnabg= Received: by mail-pf1-f172.google.com with SMTP id d2e1a72fcca58-6e55bb75c9eso453967b3a.3 for ; Tue, 27 Feb 2024 19:49:33 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1709092172; x=1709696972; darn=kvack.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=NQlUYyJ2eXhnbobYPXDOgBr3jKeBkHk1CGOLpbMiMT0=; b=dp4oTbSYNJyDbtkgcnC08LvPygdo4szl3ByTB8t+Kx76LGXZJF04kaMaM66/2X7JVF NSr5yG7cYrfC/sLt6bbuEwlxhiB9tSql66nnc8Ngb9dlodxe4qFPhWPJDDL2JSRQVBi4 Y5/HGBcLjg0bhL82wepWF78ekR8MdisWZE15oPvfg0n/DKIoWREvLGSYluVha2vAn2Bw qNe8F+HbzjZ52acxgP4yYsj4OSz1tUYCDfRpzTyw4ee8W8ODSeH2IV0dMrNUlNHmw0Km d7Ux8kRFi56JqL2thrqbm5IOr2/Yi5kHyNH6e7kcwTMsC+qIk8SxKmDEc+XtmXx6udSU TkWA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709092172; x=1709696972; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=NQlUYyJ2eXhnbobYPXDOgBr3jKeBkHk1CGOLpbMiMT0=; b=Oj67wOtuhbmfNNlOeKW+XRmXnpUv2QKDWixLSrc0EqVQpSRUFbtm49DKkSzmUPe9XR qarNkAcUXKMEZhGIOaY47vKQ3tGFhYtnR8JPLbMiuMOZX3u5CIhWGogvL28pDy09yKF6 QhQn1w7Iy6/23pfeVJW0ShEA7IoUe3PmyaY+lmXkEzm+xSJSQoZBRW0xn0V3P/vBsD22 rmCFWZw88VMNHuswYWtCeo0jS1jID6qMXChpm0UpZAZU+qb6yMTkNB1LmrgztjPG4Et/ J+P+EtwQ5UOrTgcwFCy7RlAPiN+XHYoONoDJtRR8PzDn+9WzRMhXQ12AswesfMstPrQq BVwQ== X-Forwarded-Encrypted: i=1; AJvYcCUOF/o/gpC3jcheKOpaGo1+vS3/JUZgXAjQzDx3DNFnkf25lHys293g6eWozj6JsJK442qUHs+NIQaHpKZ/fvGvYjk= X-Gm-Message-State: AOJu0Yw70W0HPl+dAizbRJmsA3zSkbnVJwOgM9SDaJ2nMqvXsfu+31zz /Yd3ZyJuMcfRblAizNnPxVxV0AUSJn9T5K6JXVYg1GXwjSQb0HXi X-Google-Smtp-Source: AGHT+IFZf3UkJGMFdoMTVJXNs+EvRyKPGXTGgjO3Givm+ElB2niZvrZWAVSLHnfq28gpw6myICQ0Yw== X-Received: by 2002:a05:6a20:e605:b0:1a1:e83:8eb4 with SMTP id my5-20020a056a20e60500b001a10e838eb4mr3472377pzb.9.1709092172179; Tue, 27 Feb 2024 19:49:32 -0800 (PST) Received: from barry-desktop.hub ([2407:7000:8942:5500:e4ad:9b94:2418:969e]) by smtp.gmail.com with ESMTPSA id p16-20020a17090b011000b00299e946b9cdsm374033pjz.20.2024.02.27.19.49.25 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 27 Feb 2024 19:49:31 -0800 (PST) From: Barry Song <21cnbao@gmail.com> To: 21cnbao@gmail.com, ryan.roberts@arm.com Cc: akpm@linux-foundation.org, david@redhat.com, hanchuanhua@oppo.com, linux-kernel@vger.kernel.org, linux-mm@kvack.org, mhocko@suse.com, shy828301@gmail.com, steven.price@arm.com, surenb@google.com, v-songbaohua@oppo.com, wangkefeng.wang@huawei.com, willy@infradead.org, xiang@kernel.org, ying.huang@intel.com, yuzhao@google.com, Chris Li , Minchan Kim , SeongJae Park , Johannes Weiner Subject: Re: [PATCH RFC 6/6] mm: madvise: don't split mTHP for MADV_PAGEOUT Date: Wed, 28 Feb 2024 16:49:06 +1300 Message-Id: <20240228034906.83872-1-21cnbao@gmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: References: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 71B07120004 X-Stat-Signature: 78r5fa8b1g54k4941wbzs7uzhbahiydb X-Rspam-User: X-HE-Tag: 1709092173-164704 X-HE-Meta: U2FsdGVkX1+kCd69kO5HXkY1QO23Gy7r8oRhR1A5YvCPZ0+jhnhe2RomHsFYonBTcAQbzlgSX0p1acPX0y3rQQivdPIp65JyTtFCM8OmDIgeTgCFdLirDheCmTqoHXCVX9c64tEt685cugB6f+MhOtr19zJphBp16lcBm6HmJK56lUUInauckz8eiFEqD0dej04Jo+C5YPXdNj+xbj2y/uYE/5AmisMQ6zHEQCvKVrMdg44b74MIxIgBm5aIO06M1B1WEmdbDH604MFJoGUs+bghUSmKfq6k5u1hLiYTu1jNePRltZozkgB6U1h7VoQQE/w4uzzW7/7bMGrvVYXbXW5NApH2Lt7SSfrsQ6HEXCiGWUqybsMOpz81wUAUJAxHpTMM3CsPVWJGUNGKx3WGUVBcE7AwMmIhOR5bcWqpF2EUIhrEjhlJ3aTKuDRCoDKnFQybgSjRIQSv2v+fGSovIwRvZMwduYhOtAKhJYGHKnCcH6+u7HyExuLSFb/KentfqA1gCITTBm3NC1cMUspkcM/ZIogwJChHzlaZ5E+RleP2W836cBCZeth1/8NTrmGPgJ1ToZSp9xV4FjDOVZw0qW1bmrrwjnrcanUbddI7Jv/EaKJ0mD+2xohkg35p7PUDnYxSQcs+yw60TpWHkw02c9EsXyw3+/gMvz8QLh0CWjdcOxgqfLWHsQtimsYRCjxifzfLvIDotExCIOWLVFXZtM0nX33SL6wAqBwFEppRxcgSX1XTta9Z7FnOF+i8CKl3bUdUq5umU3P+4cED4M9BfYkCm5935pSHcB3uPU9Dr83VKfhX+/YZtcrdX07LETB2fl3sy/mBKMFrvltB+waphbBmChZd5B7c06GNyPAKpSfkbA00Wf+BkeTL+6hQHzbcPgohP0DpKjTgOKTzQ9ZS1To0/L84P/WM9Yi5lJ2YVo4dvBXIAcWzEqfzd+vIqzDRUGlPYvONSv/ZLpK9i4+ eH/5puAh Uza7LJKwD/gft3UQR4O5sK5ILvZ188jZYY9bAKgem3PYJIA068SwFpI1EE1NMWvipSE/IFth1XFZpaZCxgZUo3zIuwAS9Y3b5OwflrV+YeQe8uQJQRzCMTiSCJ7SrqDJmL7DjcDcSWVJsI+Oons+zUHHrawZj/1AnxgA2 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: >> I'm going to rework this patch and integrate it into my series if that's ok with >> you? > > This is perfect. Please integrate it into your swap-out series which is the > perfect place for this MADV_PAGEOUT. BTW, Ryan, while you integrate this into your swap-put series, can you also add the below one which is addressing one comment of Chris, From: Barry Song Date: Tue, 27 Feb 2024 22:03:59 +1300 Subject: [PATCH] mm: madvise: extract common function folio_deactivate_or_add_to_reclaim_list For madvise_cold_or_pageout_pte_range, both pmd-mapped and pte-mapped normal folios are duplicating the same code right now, and we might have more such as pte-mapped large folios to use it. It is better to extract a common function. Cc: Chris Li Cc: Minchan Kim Cc: SeongJae Park Cc: Michal Hocko Cc: Johannes Weiner Signed-off-by: Barry Song --- mm/madvise.c | 52 ++++++++++++++++++++-------------------------------- 1 file changed, 20 insertions(+), 32 deletions(-) diff --git a/mm/madvise.c b/mm/madvise.c index 44a498c94158..1812457144ea 100644 --- a/mm/madvise.c +++ b/mm/madvise.c @@ -321,6 +321,24 @@ static inline bool can_do_file_pageout(struct vm_area_struct *vma) file_permission(vma->vm_file, MAY_WRITE) == 0; } +static inline void folio_deactivate_or_add_to_reclaim_list(struct folio *folio, bool pageout, + struct list_head *folio_list) +{ + folio_clear_referenced(folio); + folio_test_clear_young(folio); + + if (folio_test_active(folio)) + folio_set_workingset(folio); + if (!pageout) + return folio_deactivate(folio); + if (folio_isolate_lru(folio)) { + if (folio_test_unevictable(folio)) + folio_putback_lru(folio); + else + list_add(&folio->lru, folio_list); + } +} + static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, unsigned long addr, unsigned long end, struct mm_walk *walk) @@ -394,19 +412,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, tlb_remove_pmd_tlb_entry(tlb, pmd, addr); } - folio_clear_referenced(folio); - folio_test_clear_young(folio); - if (folio_test_active(folio)) - folio_set_workingset(folio); - if (pageout) { - if (folio_isolate_lru(folio)) { - if (folio_test_unevictable(folio)) - folio_putback_lru(folio); - else - list_add(&folio->lru, &folio_list); - } - } else - folio_deactivate(folio); + folio_deactivate_or_add_to_reclaim_list(folio, pageout, &folio_list); huge_unlock: spin_unlock(ptl); if (pageout) @@ -498,25 +504,7 @@ static int madvise_cold_or_pageout_pte_range(pmd_t *pmd, tlb_remove_tlb_entry(tlb, pte, addr); } - /* - * We are deactivating a folio for accelerating reclaiming. - * VM couldn't reclaim the folio unless we clear PG_young. - * As a side effect, it makes confuse idle-page tracking - * because they will miss recent referenced history. - */ - folio_clear_referenced(folio); - folio_test_clear_young(folio); - if (folio_test_active(folio)) - folio_set_workingset(folio); - if (pageout) { - if (folio_isolate_lru(folio)) { - if (folio_test_unevictable(folio)) - folio_putback_lru(folio); - else - list_add(&folio->lru, &folio_list); - } - } else - folio_deactivate(folio); + folio_deactivate_or_add_to_reclaim_list(folio, pageout, &folio_list); } if (start_pte) { -- 2.34.1 Thanks Barry