Received: by 2002:a25:c205:0:0:0:0:0 with SMTP id s5csp2149648ybf; Mon, 2 Mar 2020 03:01:32 -0800 (PST) X-Google-Smtp-Source: APXvYqzjiHEjPeLYc/BMz6brSLhrKneRaapWWetu3R8ci59/1j3mhtgqCVz4nYJ8pTRQXJluFw51 X-Received: by 2002:a9d:51cb:: with SMTP id d11mr6896939oth.219.1583146892019; Mon, 02 Mar 2020 03:01:32 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1583146892; cv=none; d=google.com; s=arc-20160816; b=Jj0EG+rQKpPpeqAbqTVtMXYxKLA/Winq8j8TX386huQxacvEgpkOTsVPO/Ez6/OnAe bPoChaQLJFmeDX9UUghcDZOfusz07rlPSSjH97EMIwRndLxznOTMFCG65TUnFhm1tNX6 Kw4+ermF3rGb701YDSLtOSzZXtf8HJoL9rmXuxGN0727a50LnzW6pW6sayHuDEG3vS9J wr31/Igp4K0RiBgTMhiRtkmtUdIxnMiXz4hKycabowcqLBdkYoXY3KBcAZUMrZszKYnQ QcVSZSrBshB0ANkF+mrmZl5GphVm4HTYwua+hZqiVOhhjIW20VfvOIYppyV1W+C3+2aj dv/A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:references:in-reply-to:message-id:date :subject:cc:to:from; bh=rwKMB0TipH3gTQ1mFEK0t0PHC8EXfUrjrpLHoKLvjOA=; b=IQIS33Eb7H42b7Dfs/k+XQhtPNIXoSf1H0fuw51PSzvWmt2bjIKCApXLNoQIGxRoNN qLjBploAcVD3sSYFUZevb5AQ21abLEgaAYBhOh8qF/xbdvMWwJ0A0Uu7c0l9TBdhUBNM uPwiAAOt9/gw9SCNKSSk0Dz1MJms0HHPYNttoOQ0WvAn71aldzC0e9AfqLC9VAHPpKWj QZ3cMvlpHnJCCvjPrR2AsCTpPhEmHSq3bqypiKozwXqMOv7L6n7AT+8xWIHqpaWnDkx3 SXEqIyQ7EtQGcPn1/ViGEl1FwopcEIKD82vYOtIwbNEPMaxos8Qz5jcA4lyBJuEALHtt i52w== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id e24si2201524oii.259.2020.03.02.03.01.18; Mon, 02 Mar 2020 03:01:32 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=alibaba.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727644AbgCBLBH (ORCPT + 99 others); Mon, 2 Mar 2020 06:01:07 -0500 Received: from out30-44.freemail.mail.aliyun.com ([115.124.30.44]:33971 "EHLO out30-44.freemail.mail.aliyun.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726871AbgCBLBF (ORCPT ); Mon, 2 Mar 2020 06:01:05 -0500 X-Alimail-AntiSpam: AC=PASS;BC=-1|-1;BR=01201311R681e4;CH=green;DM=||false|;DS=||;FP=0|-1|-1|-1|0|-1|-1|-1;HT=e01f04397;MF=alex.shi@linux.alibaba.com;NM=1;PH=DS;RN=14;SR=0;TI=SMTPD_---0TrQzvPm_1583146860; Received: from localhost(mailfrom:alex.shi@linux.alibaba.com fp:SMTPD_---0TrQzvPm_1583146860) by smtp.aliyun-inc.com(127.0.0.1); Mon, 02 Mar 2020 19:01:01 +0800 From: Alex Shi To: cgroups@vger.kernel.org, akpm@linux-foundation.org, mgorman@techsingularity.net, tj@kernel.org, hughd@google.com, khlebnikov@yandex-team.ru, daniel.m.jordan@oracle.com, yang.shi@linux.alibaba.com, willy@infradead.org, hannes@cmpxchg.org, lkp@intel.com Cc: Alex Shi , linux-kernel@vger.kernel.org, linux-mm@kvack.org Subject: [PATCH v9 16/20] mm/swap: only change the lru_lock iff page's lruvec is different Date: Mon, 2 Mar 2020 19:00:26 +0800 Message-Id: <1583146830-169516-17-git-send-email-alex.shi@linux.alibaba.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1583146830-169516-1-git-send-email-alex.shi@linux.alibaba.com> References: <1583146830-169516-1-git-send-email-alex.shi@linux.alibaba.com> Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Since we introduced relock_page_lruvec, we could use it in more place to reduce spin_locks. Signed-off-by: Alex Shi Cc: Andrew Morton Cc: Johannes Weiner Cc: Konstantin Khlebnikov Cc: Hugh Dickins Cc: linux-kernel@vger.kernel.org Cc: cgroups@vger.kernel.org Cc: linux-mm@kvack.org --- mm/swap.c | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/mm/swap.c b/mm/swap.c index 50c856246f84..74e03589adde 100644 --- a/mm/swap.c +++ b/mm/swap.c @@ -197,13 +197,15 @@ static void pagevec_lru_move_fn(struct pagevec *pvec, if (isolation && !TestClearPageLRU(page)) continue; - lruvec = lock_page_lruvec_irqsave(page, &flags); + lruvec = relock_page_lruvec_irqsave(page, lruvec, &flags); (*move_fn)(page, lruvec, arg); - unlock_page_lruvec_irqrestore(lruvec, flags); if (isolation) SetPageLRU(page); } + if (lruvec) + unlock_page_lruvec_irqrestore(lruvec, flags); + release_pages(pvec->pages, pvec->nr); pagevec_reinit(pvec); } @@ -821,14 +823,11 @@ void release_pages(struct page **pages, int nr) } if (TestClearPageLRU(page)) { - struct lruvec *new_lruvec = mem_cgroup_page_lruvec(page, page_pgdat(page)); + struct lruvec *pre_lruvec = lruvec; - if (new_lruvec != lruvec) { - if (lruvec) - unlock_page_lruvec_irqrestore(lruvec, flags); + lruvec = relock_page_lruvec_irqsave(page, lruvec, &flags); + if (pre_lruvec != lruvec) lock_batch = 0; - lruvec = lock_page_lruvec_irqsave(page, &flags); - } del_page_from_lru_list(page, lruvec, page_off_lru(page)); } -- 1.8.3.1