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 9C703C4332F for ; Thu, 14 Dec 2023 23:01:10 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 3DDCE8D00F6; Thu, 14 Dec 2023 18:01:10 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id 38DD58D00C7; Thu, 14 Dec 2023 18:01:10 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 27D288D00F6; Thu, 14 Dec 2023 18:01:10 -0500 (EST) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id 137568D00C7 for ; Thu, 14 Dec 2023 18:01:10 -0500 (EST) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id E175BA023B for ; Thu, 14 Dec 2023 23:01:09 +0000 (UTC) X-FDA: 81566946258.01.8064421 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf27.hostedemail.com (Postfix) with ESMTP id 8DD614003A for ; Thu, 14 Dec 2023 23:01:07 +0000 (UTC) Authentication-Results: imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=amm0jq7w; dmarc=none; spf=none (imf27.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1702594868; 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: in-reply-to:in-reply-to:references:references:dkim-signature; bh=ZpX9OyVmsooR71iBff+A80aL9guypQAVqM/obfLf98M=; b=Vk2EpUXDkQSQkTkBB2wRLDVW047qjPorm5XWdvQ3XqZhnIeqlN7RYeDDZk3SZPIJZuLozr cgjuOTb1Wd8gktBjSTuY3QehjzOY2j58J2Yg8WxO1Fx/9yjy90q76gb2BmR4uMNK5vfRLA 9+pYeZl9vUjr/uWC7hZYiEqkmv6cP2U= ARC-Authentication-Results: i=1; imf27.hostedemail.com; dkim=pass header.d=infradead.org header.s=casper.20170209 header.b=amm0jq7w; dmarc=none; spf=none (imf27.hostedemail.com: domain of willy@infradead.org has no SPF policy when checking 90.155.50.34) smtp.mailfrom=willy@infradead.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1702594868; a=rsa-sha256; cv=none; b=5wgzUst9LG/pKu27VWoEnOL+2NAAiLcE6nBbcWyWd4/kCmX/XkndIe2E+HBwUgrCpJImZB lCYxGPW5GE6pOqRnP1dW0EDUcm3hkue8wE7vi2/GIcaSDB9lk7B8z8lBK99tR/lXl/weZH Jyme6REGAITQR0CF2rB3+9fLO7Z/OIA= DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=infradead.org; s=casper.20170209; h=In-Reply-To:Content-Type:MIME-Version: References:Message-ID:Subject:Cc:To:From:Date:Sender:Reply-To: Content-Transfer-Encoding:Content-ID:Content-Description; bh=ZpX9OyVmsooR71iBff+A80aL9guypQAVqM/obfLf98M=; b=amm0jq7wabv6SCHJhqIwRv3xPy EhUiM5cB2+Mjp9HMu+G06vCXsQd+tfcx1bcc5YchcZUIx4FAVV0VzJgtdOyF7nFY4RBoXHfETMalt szimEYe3iSqfh18Z3K6MQUeC7xw8/TMbgkaCoAkbcNgzFKsCmTdFAMm1242vXq7KG0jckxr+OFecQ 0SCv+yThDYGMAeJwV8aVJI291SXmmnOOOX1SfRoOBi6e58aRNjHxJ9KafSsxGlxsM6nHptHuGAIoA mxgOMDplG5KBG5Pj7lz5E5Twy0ZMVZ92+3q7Eee/CbeZNJDbEfx2+C1gYASFKeqNK+VJMPUir0zpu A5Fb++zQ==; Received: from willy by casper.infradead.org with local (Exim 4.94.2 #2 (Red Hat Linux)) id 1rDuhM-00B27e-Vk; Thu, 14 Dec 2023 23:00:57 +0000 Date: Thu, 14 Dec 2023 23:00:56 +0000 From: Matthew Wilcox To: Jianfeng Wang Cc: akpm@linux-foundation.org, tim.c.chen@linux.intel.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2] mm: remove redundant lru_add_drain() prior to unmapping pages Message-ID: References: <20231214222717.50277-1-jianfeng.w.wang@oracle.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20231214222717.50277-1-jianfeng.w.wang@oracle.com> X-Rspamd-Server: rspam09 X-Rspamd-Queue-Id: 8DD614003A X-Stat-Signature: 19tijmkcaxtpyj69pg1na4b91a75ukxx X-Rspam-User: X-HE-Tag: 1702594867-809942 X-HE-Meta: U2FsdGVkX19gL0FNCINjBOvVtboUVowIvDiUBlE5uOWP4VTkgjsby/ni+hjL5M9o+63SHnZcCUgwRDGe6Ocoz49T4G+0geqTV/5FrOgo6Du+WCfkqDkYBDoDxgAic003Z/J/eVJ2pkbO3cNyDKldxDoT6S1a427JhzTTjrYJgB2+HgpwlLfkmK0rrIND9GfohuYTq8dhKfF0GK8IgYdWh/U2qo8Msq0G6cOVxRkepvL6LPu8DG5XVWwPN42bycjXLOhRNL+TA6k4M7ykAwEA0H9Zdpi93T371YITsZAtIb788sMpLhUTOyb03i0jpJa5I0BZngQ//E3fPppgkhXxzCqWAHvDKaFuSo/91+8zgN1iJs0JV0Zmt/2XKsuQOX352Lta9//rHtf8lrfvsjBGOuMwu8H+0dtgU9qJXrzd2DjuQFIc/1R38+/hquYNIRB4h7Azbxz7mM/iwdo1/RoU4cAo41rf8cXFji/4z0YXqYeRTmG+0BBNdX7Ff0POVj8iYNJFd7Dlg9veY56S0sjG+W4JsYbMj4kmvNTTTaDeafGOB1hqk8+Lbn370tRwsGp5o+6b0n+UCjrTOUCVOTUr57aunOr5c86sjSyTnpuogR1zenpXoUJe3D+Sz4wCoH0MrZcZqKrTIuhAl8WkGEWhKGCFw1KK3qNwCncgmWXuh94+uOBZezTqdVGHyAfncNzQDzEM9MxFs4bdZNSgbY4HWyLrkbIazAwbHNJmyeakVJsQ5S2k+5U2JT8k+q4G22izV7ta8snJuGXUt/FMucRbV/YNI2kDBI9VnP9FLHoh9DUDgkFhEH7wuOmp6MfhkLj48BFoe9ZHT52FmtA/zU5/IB/J7VJpS95oz2fqdmm0wlgT42DMiyPArSEZ/yHCg/X3WjPl/V8g9UetMOKeUaZIA0FivAW9ZS7dhDNrGro/CxSxUWZS+gMYpAwkIaaXDxjVMy0lUrt6p69Hukjapyp 2NpJI7Zv usBhGJf1FRiB2ivTdoNboMi73r1oonr26U5tskQMW07FOt1MyLc3QaejzbdapnnfLUQvGjsKX3zcoRAOGQXM92uEzbYAFClwi/PXI2XwjRrsPyNxmVpq9SBPOmF5chFQPKvbO5mPrW9hP+3d4y/FqyWwM3HI/kb5F85jN8EP2ySBXVeNKsE35iGKwrMc/ASCDpZJGHHGexFFIhnE= 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 Thu, Dec 14, 2023 at 02:27:17PM -0800, Jianfeng Wang wrote: > When unmapping VMA pages, pages will be gathered in batch and released by > tlb_finish_mmu() if CONFIG_MMU_GATHER_NO_GATHER is not set. The function > tlb_finish_mmu() is responsible for calling free_pages_and_swap_cache(), > which calls lru_add_drain() to drain cached pages in folio_batch before > releasing gathered pages. Thus, it is redundant to call lru_add_drain() > before gathering pages, if CONFIG_MMU_GATHER_NO_GATHER is not set. > > Remove lru_add_drain() prior to gathering and unmapping pages in > exit_mmap() and unmap_region() if CONFIG_MMU_GATHER_NO_GATHER is not set. > > Note that the page unmapping process in oom_killer (e.g., in > __oom_reap_task_mm()) also uses tlb_finish_mmu() and does not have > redundant lru_add_drain(). So, this commit makes the code more consistent. Shouldn't we put this in __tlb_gather_mmu() which already has the CONFIG_MMU_GATHER_NO_GATHER ifdefs? That would presuambly help with, eg zap_page_range_single() too. > Signed-off-by: Jianfeng Wang > --- > mm/mmap.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/mm/mmap.c b/mm/mmap.c > index 1971bfffcc03..da0308eef435 100644 > --- a/mm/mmap.c > +++ b/mm/mmap.c > @@ -2330,7 +2330,10 @@ static void unmap_region(struct mm_struct *mm, struct ma_state *mas, > struct mmu_gather tlb; > unsigned long mt_start = mas->index; > > + /* Defer lru_add_drain() to tlb_finish_mmu() for the ifndef case. */ > +#ifdef CONFIG_MMU_GATHER_NO_GATHER > lru_add_drain(); > +#endif > tlb_gather_mmu(&tlb, mm); > update_hiwater_rss(mm); > unmap_vmas(&tlb, mas, vma, start, end, tree_end, mm_wr_locked); > @@ -3300,7 +3303,10 @@ void exit_mmap(struct mm_struct *mm) > return; > } > > + /* Defer lru_add_drain() to tlb_finish_mmu() for the ifndef case. */ > +#ifdef CONFIG_MMU_GATHER_NO_GATHER > lru_add_drain(); > +#endif > flush_cache_mm(mm); > tlb_gather_mmu_fullmm(&tlb, mm); > /* update_hiwater_rss(mm) here? but nobody should be looking */ > -- > 2.42.1 > >