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=-14.4 required=3.0 tests=DKIMWL_WL_MED,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED, USER_IN_DEF_DKIM_WL 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 BE31BC47404 for ; Wed, 9 Oct 2019 22:25:24 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 7F8B0206BB for ; Wed, 9 Oct 2019 22:25:24 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=google.com header.i=@google.com header.b="Hh2WEp7p" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7F8B0206BB Authentication-Results: mail.kernel.org; dmarc=fail (p=reject dis=none) header.from=google.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 269E86B0003; Wed, 9 Oct 2019 18:25:24 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 21A4A6B0005; Wed, 9 Oct 2019 18:25:24 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 131CA8E0003; Wed, 9 Oct 2019 18:25:24 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0116.hostedemail.com [216.40.44.116]) by kanga.kvack.org (Postfix) with ESMTP id E63CA6B0003 for ; Wed, 9 Oct 2019 18:25:23 -0400 (EDT) Received: from smtpin17.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay01.hostedemail.com (Postfix) with SMTP id 79F46180AD801 for ; Wed, 9 Oct 2019 22:25:23 +0000 (UTC) X-FDA: 76025678526.17.fuel16_86555f2b9b813 X-HE-Tag: fuel16_86555f2b9b813 X-Filterd-Recvd-Size: 5487 Received: from mail-yw1-f65.google.com (mail-yw1-f65.google.com [209.85.161.65]) by imf38.hostedemail.com (Postfix) with ESMTP for ; Wed, 9 Oct 2019 22:25:23 +0000 (UTC) Received: by mail-yw1-f65.google.com with SMTP id d192so1430632ywa.1 for ; Wed, 09 Oct 2019 15:25:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=dOr0EjO8ZYNpH3XybPh3rB6lRmS6eQuMeIiMtrlftWQ=; b=Hh2WEp7plONxJwvwa0Y5K4Bolxjg6ELdA9/VQOmm/eXpB2wi1N+HeCBFz5IZTxgUFV Xcf8tlsDgb9eCYjocQeo/pUUIYP18pGn6R1hQR+oU7llCulW49MnRaDpAl+v4+pG6kjd 81Ha2F9Uuwl5gHtUrY4LoAn86wOeNDOJPnH6SGL35pIMGeBz27Pn3PZ7LE8MNxAaBBFZ IM1t//IDIxoTiUxSxI3pKnVme7HdhdBLFzdawkhMN8OiZqgKyble+uJ++HC6ec/vzJF2 yWmhLJkSXrbplHrHwtubCcdpv7PyG1+RYeYelIZxkZFTXGQCtufnKvrGlYutBev6z295 OFbw== 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=dOr0EjO8ZYNpH3XybPh3rB6lRmS6eQuMeIiMtrlftWQ=; b=cr3QirQ+TUk/wBlYVoFl+3gotAbEtfCD742k38q7zniGGlbJeairLPGekrOIDvycTZ Cbs0fmG+0GzfBwojqEYxWbgaG3Hrp3laIsixX5Sf5yGXRg8JUolsDYFmaEzDU28W8xJ7 2Kj0tjJPpkU4xbNS+HhJVtYW0oJQpSxnLTxFCNLBsANookHG8NUNjs8nWDSNggpfUKeM AISMF2aovO8LOmfvBnlt5Wb3j2vZJe9zM5OjyyLtHrTZTta9FRztRZM1Jifdxo8wEgP1 S+WNm2NGruYwX2p0hye3Eh9ZnsYdjNjD0WEqaniBdluhaxTlB0Xo1V+fSJTRk/1xMmbj P90w== X-Gm-Message-State: APjAAAXx40WxdcZdex7ifbP6o4nDyov5/+pLMZ8YKG9XLq6R8DIADTZ7 JNELjcfgseU/hYH26mh8Uo6VzYS2vsJfA8gMmRabQQ== X-Google-Smtp-Source: APXvYqynlHxg47jhvD1rer1MqzgbiOH4AqQFxJXN5dDv8yvBvhs6kCc4akm6Ky14f2e2fKcjn59wpkg7sORtQq7GYIw= X-Received: by 2002:a81:9907:: with SMTP id q7mr4387541ywg.296.1570659922107; Wed, 09 Oct 2019 15:25:22 -0700 (PDT) MIME-Version: 1.0 References: <20191009211857.35587-1-minchan@kernel.org> In-Reply-To: <20191009211857.35587-1-minchan@kernel.org> From: Shakeel Butt Date: Wed, 9 Oct 2019 15:25:10 -0700 Message-ID: Subject: Re: [PATCH] fs: annotate refault stalls from bdev_read_page To: Minchan Kim Cc: Andrew Morton , LKML , linux-mm , Minchan Kim , Johannes Weiner 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 Wed, Oct 9, 2019 at 2:19 PM Minchan Kim wrote: > > From: Minchan Kim > > If block device supports rw_page operation, it doesn't submit bio > so annotation in submit_bio for refault stall doesn't work. > It happens with zram in android, especially swap read path which > could consume CPU cycle for decompress. What about zswap? Do we need the same in zswap_frontswap_load()? > > Annotate bdev_read_page() to account the synchronous IO overhead > to prevent underreport memory pressure. > > Cc: Johannes Weiner > Signed-off-by: Minchan Kim > --- > fs/block_dev.c | 13 +++++++++++++ > mm/memory.c | 1 + > 2 files changed, 14 insertions(+) > > diff --git a/fs/block_dev.c b/fs/block_dev.c > index 9c073dbdc1b0..82ca28eb9a57 100644 > --- a/fs/block_dev.c > +++ b/fs/block_dev.c > @@ -26,6 +26,7 @@ > #include > #include > #include > +#include > #include > #include > #include > @@ -701,6 +702,8 @@ int bdev_read_page(struct block_device *bdev, sector_t sector, > { > const struct block_device_operations *ops = bdev->bd_disk->fops; > int result = -EOPNOTSUPP; > + unsigned long pflags; > + bool workingset_read; > > if (!ops->rw_page || bdev_get_integrity(bdev)) > return result; > @@ -708,9 +711,19 @@ int bdev_read_page(struct block_device *bdev, sector_t sector, > result = blk_queue_enter(bdev->bd_queue, 0); > if (result) > return result; > + > + workingset_read = PageWorkingset(page); > + if (workingset_read) > + psi_memstall_enter(&pflags); > + > result = ops->rw_page(bdev, sector + get_start_sect(bdev), page, > REQ_OP_READ); > + > + if (workingset_read) > + psi_memstall_leave(&pflags); > + > blk_queue_exit(bdev->bd_queue); > + > return result; > } > EXPORT_SYMBOL_GPL(bdev_read_page); > diff --git a/mm/memory.c b/mm/memory.c > index 06935826d71e..6357d5a0a2a5 100644 > --- a/mm/memory.c > +++ b/mm/memory.c > @@ -2801,6 +2801,7 @@ vm_fault_t do_swap_page(struct vm_fault *vmf) > if (page) { > __SetPageLocked(page); > __SetPageSwapBacked(page); > + SetPageWorkingset(page); > set_page_private(page, entry.val); > lru_cache_add_anon(page); > swap_readpage(page, true); > -- > 2.23.0.581.g78d2f28ef7-goog >