Received: by 2002:a25:6193:0:0:0:0:0 with SMTP id v141csp2741800ybb; Fri, 27 Mar 2020 11:12:04 -0700 (PDT) X-Google-Smtp-Source: ADFU+vvaxmwho9sZn31mycD+rticMjMogRYPP3yNDn4XQimxO+1l+rEh0b0CD4hfN5HJUob+YMCx X-Received: by 2002:a9d:7992:: with SMTP id h18mr5226239otm.315.1585332723885; Fri, 27 Mar 2020 11:12:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1585332723; cv=none; d=google.com; s=arc-20160816; b=Ne2Kju9ZE7yb1RnfRJi9WFQpgS2IvZ57OwJFjeuq7npDAxAT7z0hw1wtsakGbAne4i EMvhji18Hr46xm/rA1qYByVSsShPJ8kQCkLJiaoNaCz/bI6k6GWsx4NmRG/1yB4q+ZLQ xp0fAsDWFMwMxOlCUl7B2bg39ywFPqLLqHQLHcsaZJ5c9zyTErnIikcU0olHIb3E0DZ9 qGsuZGianuWam7F5QYVQAaL72USGFQWZBP16LlILZcnXNRey/9oTE4BwjKnjX6z4Yzlr b9y1GPA95khnKLfT0Ok9BYuKvJjH2ojO62npTJSMH4gsQVwQOedgTngvSgXMQDvgn0VH TMxw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:cc:to:subject:message-id:date:from :in-reply-to:references:mime-version:dkim-signature; bh=HgLPKsmfWVu/jSbaiK5YtS+h03FH0KlNpjtZGdb44ik=; b=sVTx3hhSI4AsjMfvP+V8sCN0qwTzwnTE8lbE3lN7+7vsxcfoEbHwrGZvCkYobyuWcn /VJUAvV25eZzHLHKRYn+Hcy0g3e01lb2mvKaLcKovE8MY+UZYmwXb4jCNuTGuokmvpZj rAyrNHNNLoOTnuUVLvCGunDDCVNfjnwd8Pxh/1RUyG2gAkMxCYnfVfTuZwXnm5/UaPMT /CZFiDLrdyjX2VJB4lerJftDDBM9VOsxyZwqwce4Ojn6W4lUCeJCOD5ckTC91pqcq63h GpA6X+iajZTK49e38TVwNr40M8UXSnvVyg4SiseUEC5lgMmzmYNF1QQry0/egUmk7IQ/ 14HA== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PqPTCWuS; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id h9si2339899oti.155.2020.03.27.11.11.35; Fri, 27 Mar 2020 11:12:03 -0700 (PDT) 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; dkim=pass header.i=@gmail.com header.s=20161025 header.b=PqPTCWuS; 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=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726900AbgC0SK5 (ORCPT + 99 others); Fri, 27 Mar 2020 14:10:57 -0400 Received: from mail-ed1-f68.google.com ([209.85.208.68]:37276 "EHLO mail-ed1-f68.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726515AbgC0SK5 (ORCPT ); Fri, 27 Mar 2020 14:10:57 -0400 Received: by mail-ed1-f68.google.com with SMTP id de14so12389796edb.4 for ; Fri, 27 Mar 2020 11:10:55 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=HgLPKsmfWVu/jSbaiK5YtS+h03FH0KlNpjtZGdb44ik=; b=PqPTCWuS2ibLmwAWw9gb1YvuH5vJbKB6wXMzh5L9/UuhpBLj5DVX4tuRr7KTUhNp0B WcFVL9vHWL3RL9KJ92YsCMGDSW8p+jRDCzOgfwhaEmzNd8u0GzMFg2rdpDIBr7mqjMFD ZxGlBmrGxCQp86bJgQVTzymz+3cysJ36qPZ6kQXql6GwdRgvpf0rUZFXFszV7cKU+hEO oDl1yR1VVozpU+HbHYKKuOt9CH8o9R9BXRJhDPkAHhm9nT/a9XaCRVKJw0Z1HPAJ38ZE yrUU7Dl805Q2gOPrz0x8UqCrN4ivWL4ME5dBaRilk0FaYu1z6W5W7x9eCF1XlKf/qY3m gSlA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=HgLPKsmfWVu/jSbaiK5YtS+h03FH0KlNpjtZGdb44ik=; b=GCZuAfElRnPDbBr5a9vB9uLG6uEWJswUjsID1G+sfP7xbVo6c44Q1Mv2YytB50XGwg Z6p0azcb5AGFRBOcz+qCkZmK3bf6TpHfpLQFtoa3e7IFNddkV7Gup2GWsgz7A6PQFTWs oRe7hkhqxPVaZLeeHL/9k5ABbuL5FURQnYwGBiz1D4hzopp0Igyi+Zs/cLwsUBSgLTcs uu4QxjQqnbppUY3SyGS18G5H++ReLPee5RVIxU7ihOBU9DWaZDVkSVfrxP9a1g03SyS3 Vohg5Hu1zzJpZTFKu6M41aADYMuH+fOH2JlZ5IgpvK7aNQmKUYlZ+vn08XrP90HBMIFh 0aJg== X-Gm-Message-State: ANhLgQ3bkBWE20yA2fmp6gCNBSfURWmuGKrEksWBR3YJQgLNsZ6MyTe7 hPCWlz5FcOwPEI1RZTuI+yyq+rL5mMOKNNZcjmY= X-Received: by 2002:a50:9f6e:: with SMTP id b101mr352734edf.372.1585332655311; Fri, 27 Mar 2020 11:10:55 -0700 (PDT) MIME-Version: 1.0 References: <20200327170601.18563-1-kirill.shutemov@linux.intel.com> <20200327170601.18563-4-kirill.shutemov@linux.intel.com> In-Reply-To: <20200327170601.18563-4-kirill.shutemov@linux.intel.com> From: Yang Shi Date: Fri, 27 Mar 2020 11:10:40 -0700 Message-ID: Subject: Re: [PATCH 3/7] khugepaged: Drain LRU add pagevec to get rid of extra pins To: "Kirill A. Shutemov" Cc: Andrew Morton , Andrea Arcangeli , Linux MM , Linux Kernel Mailing List , "Kirill A. Shutemov" Content-Type: text/plain; charset="UTF-8" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Fri, Mar 27, 2020 at 10:06 AM Kirill A. Shutemov wrote: > > __collapse_huge_page_isolate() may fail due to extra pin in the LRU add > pagevec. It's petty common for swapin case: we swap in pages just to > fail due to the extra pin. > > Signed-off-by: Kirill A. Shutemov > --- > mm/khugepaged.c | 8 ++++++++ > 1 file changed, 8 insertions(+) > > diff --git a/mm/khugepaged.c b/mm/khugepaged.c > index 14d7afc90786..39e0994abeb8 100644 > --- a/mm/khugepaged.c > +++ b/mm/khugepaged.c > @@ -585,11 +585,19 @@ static int __collapse_huge_page_isolate(struct vm_area_struct *vma, > * The page must only be referenced by the scanned process > * and page swap cache. > */ > + if (page_count(page) != 1 + PageSwapCache(page)) { > + /* > + * Drain pagevec and retry just in case we can get rid > + * of the extra pin, like in swapin case. > + */ > + lru_add_drain(); This is definitely correct. I'm wondering if we need one more lru_add_drain() before PageLRU check in khugepaged_scan_pmd() or not? The page might be in lru cache then get skipped. This would improve the success rate. Reviewed-by: Yang Shi > + } > if (page_count(page) != 1 + PageSwapCache(page)) { > unlock_page(page); > result = SCAN_PAGE_COUNT; > goto out; > } > + > if (pte_write(pteval)) { > writable = true; > } else { > -- > 2.26.0 > >