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=-3.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE, SPF_PASS autolearn=no 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 59D65C4727D for ; Wed, 23 Sep 2020 06:35:15 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id DAB5B221F0 for ; Wed, 23 Sep 2020 06:35:14 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=infradead.org header.i=@infradead.org header.b="dla6zQQD" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org DAB5B221F0 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=infradead.org Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 196EF6B0003; Wed, 23 Sep 2020 02:35:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 149836B0055; Wed, 23 Sep 2020 02:35:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 05D646B005A; Wed, 23 Sep 2020 02:35:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0197.hostedemail.com [216.40.44.197]) by kanga.kvack.org (Postfix) with ESMTP id E233C6B0003 for ; Wed, 23 Sep 2020 02:35:13 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id 94DC78249980 for ; Wed, 23 Sep 2020 06:35:13 +0000 (UTC) X-FDA: 77293364106.04.page44_160912727154 Received: from filter.hostedemail.com (10.5.16.251.rfc1918.com [10.5.16.251]) by smtpin04.hostedemail.com (Postfix) with ESMTP id 683AD800800B for ; Wed, 23 Sep 2020 06:35:13 +0000 (UTC) X-HE-Tag: page44_160912727154 X-Filterd-Recvd-Size: 2808 Received: from casper.infradead.org (casper.infradead.org [90.155.50.34]) by imf16.hostedemail.com (Postfix) with ESMTP for ; Wed, 23 Sep 2020 06:35:12 +0000 (UTC) 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=aAcU33sEyT651Bs441cN7gzu/F03SOeGyybtKcmc9Ys=; b=dla6zQQDgw0JL53/m4TbDgU8gz Ao7Un4pai7/CIFY8v6dOifGkde9PZs0lj5aEUqcc/CWBK5m67a8BO2o7WhvvuadO1JhB80PsqP3XZ 8R/zBKE6ZDepREYp+LCSodyCgmO82nM7q99WS986olWy3Wy40v3CNPK1DP3aN4FQyshPshcl0hF3j 7pNswzRxvrusOdDPE1GkZO62Ag5N0jFnpU0AjOfiLJi/up93jVBKdPGuSyQxiPTKFz7tzpKhYQ5Da +SRxnCW834TcZZxZDNPADi3hsOl3OzIjpupatdbIgQOBYgrMI2PtnYhbQFsMxcjhn8Gw3aqiPZP58 Xubw++QA==; Received: from hch by casper.infradead.org with local (Exim 4.92.3 #3 (Red Hat Linux)) id 1kKyMv-0005dm-HR; Wed, 23 Sep 2020 06:35:09 +0000 Date: Wed, 23 Sep 2020 07:35:09 +0100 From: Christoph Hellwig To: Rik van Riel Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@fb.com, niketa@fb.com, akpm@linux-foundation.org, sjenning@redhat.com, ddstreet@ieee.org, konrad.wilk@oracle.com, hannes@cmpxchg.org Subject: Re: [PATCH 2/2] mm,swap: skip swap readahead if page was obtained instantaneously Message-ID: <20200923063509.GB17027@infradead.org> References: <20200922020148.3261797-1-riel@surriel.com> <20200922020148.3261797-3-riel@surriel.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200922020148.3261797-3-riel@surriel.com> X-SRS-Rewrite: SMTP reverse-path rewritten from by casper.infradead.org. See http://www.infradead.org/rpr.html 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 Mon, Sep 21, 2020 at 10:01:48PM -0400, Rik van Riel wrote: > + struct page *page; > unsigned long entry_offset = swp_offset(entry); > unsigned long offset = entry_offset; > unsigned long start_offset, end_offset; > @@ -668,11 +669,18 @@ struct page *swap_cluster_readahead(swp_entry_t entry, gfp_t gfp_mask, > end_offset = si->max - 1; > > blk_start_plug(&plug); > + /* If we read the page without waiting on IO, skip readahead. */ > + page = swap_cluster_read_one(entry, offset, gfp_mask, vma, addr, false); > + if (page && PageUptodate(page)) > + goto skip_unplug; > + At least for the normal block device path the plug will prevent the I/O submission from actually happening and thus PageUptodate from becoming true. I think we need to split the different code paths more cleanly. Btw, what device type and media did you test this with? What kind of numbers did you get on what workload?