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 X-Spam-Level: X-Spam-Status: No, score=-6.8 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY, SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1888CC43331 for ; Fri, 27 Mar 2020 18:10:58 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id CABC92071B for ; Fri, 27 Mar 2020 18:10:57 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="PqPTCWuS" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org CABC92071B Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 73FB86B000E; Fri, 27 Mar 2020 14:10:57 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 6F0CF6B0010; Fri, 27 Mar 2020 14:10:57 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 6070B6B0032; Fri, 27 Mar 2020 14:10:57 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0228.hostedemail.com [216.40.44.228]) by kanga.kvack.org (Postfix) with ESMTP id 46DF26B000E for ; Fri, 27 Mar 2020 14:10:57 -0400 (EDT) Received: from smtpin05.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay05.hostedemail.com (Postfix) with ESMTP id 50878181AD0A5 for ; Fri, 27 Mar 2020 18:10:57 +0000 (UTC) X-FDA: 76641933354.05.error06_5f9789f6a4636 X-HE-Tag: error06_5f9789f6a4636 X-Filterd-Recvd-Size: 4620 Received: from mail-ed1-f68.google.com (mail-ed1-f68.google.com [209.85.208.68]) by imf03.hostedemail.com (Postfix) with ESMTP for ; Fri, 27 Mar 2020 18:10:56 +0000 (UTC) Received: by mail-ed1-f68.google.com with SMTP id a43so12377427edf.6 for ; Fri, 27 Mar 2020 11:10:56 -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=GxOm5Cqys+PxGvLcPKjOizM9gBvYiN0iEtZZFqlOl9tKbFwhiqVZK+MfQ+3dDVgjmH vkQVR/35iZ8Dtj+o0TSIbaGWIlk/V6BBqi48687OYwZckrFVGrDaQ23in7sqlJXFLTNe V+776+zPx5hKFysKJI39WvHwJGxt/9yJ/jIjjE8P5X+4sK835jUlLUp9T9+vOzkzHQns 6p1Uq3EBdvj1amA5GPC2sSVrIUQW562wUt7YPKlyEeviiYoRpn46kWWrLuJ6xuEbV6nF 7SCNSWQ17i9ZpBw+Th8rmbmdV5uuMFlOaxPC1Rt7R8Yq2KZ8+u5bTlWgcALRBLjaBPaM WdEQ== X-Gm-Message-State: ANhLgQ0I3qh01z2HeeCmiNnNLIi1Mi1jsIjJA0VVsTRHu0DDovXeA1ji EHMKRZrzcx9BPj2+bUGbYuRG2f3vCzNGZ/NN0ek= X-Google-Smtp-Source: ADFU+vvN0UUlONTwZNdlp5HxOlnmdQrR7kdvIyEMSXCJV2YAqXTiDG8jHfNVJcFGibcS0ZsRpTeOTKu5AMbgzliGcQU= 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" 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: 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 > >