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 Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by smtp.lore.kernel.org (Postfix) with ESMTP id 9A7A8C76196 for ; Thu, 6 Apr 2023 10:22:48 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id D64776B0075; Thu, 6 Apr 2023 06:22:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id D149E6B0078; Thu, 6 Apr 2023 06:22:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id C031D6B007B; Thu, 6 Apr 2023 06:22:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0010.hostedemail.com [216.40.44.10]) by kanga.kvack.org (Postfix) with ESMTP id B6F4C6B0075 for ; Thu, 6 Apr 2023 06:22:47 -0400 (EDT) Received: from smtpin03.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 70322A0EF3 for ; Thu, 6 Apr 2023 10:22:47 +0000 (UTC) X-FDA: 80650577574.03.E2DC5D7 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by imf28.hostedemail.com (Postfix) with ESMTP id 73284C000E for ; Thu, 6 Apr 2023 10:22:44 +0000 (UTC) Authentication-Results: imf28.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=p8twOzyM; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=fvEb94Uk; spf=pass (imf28.hostedemail.com: domain of mgorman@suse.de designates 195.135.220.29 as permitted sender) smtp.mailfrom=mgorman@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1680776564; h=from:from:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:cc:mime-version:mime-version: content-type:content-type:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=KmZpdSSRqedV0L7p5sCVaHyO+NhMzOfLvKiiIVQfLvg=; b=0SedCjCRIWKMy0ORjJlhhdU2R1Q8b7JLOOqXg4s6w1m5/DmbSJl+TTP/9iUxr27f2/VitK 9Hmx5HwX48LYhzo+BNfO6sVA3PT+iChv2SbxGpJI3nqbju9tFEN5txkwHbtmhNmTp2qgxI BJY0CoGtzaHE8Ce4BOSfvLYJrJ9weHM= ARC-Authentication-Results: i=1; imf28.hostedemail.com; dkim=pass header.d=suse.de header.s=susede2_rsa header.b=p8twOzyM; dkim=pass header.d=suse.de header.s=susede2_ed25519 header.b=fvEb94Uk; spf=pass (imf28.hostedemail.com: domain of mgorman@suse.de designates 195.135.220.29 as permitted sender) smtp.mailfrom=mgorman@suse.de; dmarc=pass (policy=none) header.from=suse.de ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1680776564; a=rsa-sha256; cv=none; b=ptv7sw0syeH1bxwhFDKMToVZow9OCXeppIPChU9LGergyf9hehbI+wvKgfe0f/f6XVN2T8 q8/3Uj9tBseEjVRUyxNDXErUH70eY75g3Nke6f2ptys1wyQafDJUcWv9mjXO2AyeiQBUq2 0l2FY8VAClYJFM5DclRqxemdeKiGtDo= Received: from relay2.suse.de (relay2.suse.de [149.44.160.134]) by smtp-out2.suse.de (Postfix) with ESMTP id E13931FF44; Thu, 6 Apr 2023 10:22:42 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1680776562; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KmZpdSSRqedV0L7p5sCVaHyO+NhMzOfLvKiiIVQfLvg=; b=p8twOzyMqekzYVHbnSfUCGsRvaWbAlJVrUr4lF2JYoaz6PuMrR7t8MCEvG4DT+mBuiXHzk GhkSOtOiTUENZe4KTkUFzIRIbqhgBmmLoq+aOXY9LTKelXrumvsGM3r/Y0QnpBFvcKwsgW lYccqJholuEk/e7jSCLUc05rNKGqOnY= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1680776562; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=KmZpdSSRqedV0L7p5sCVaHyO+NhMzOfLvKiiIVQfLvg=; b=fvEb94UkWMbvJiMXj0MmBfL2BzXpKfqnksEu7MQ5Ex+xNNR/rRfIUKyFJSfrv73FxRd2qL JJnnxwJHTZGg2SAA== Received: from suse.de (unknown [10.163.43.106]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by relay2.suse.de (Postfix) with ESMTPS id 2F06C2C142; Thu, 6 Apr 2023 10:22:39 +0000 (UTC) Date: Thu, 6 Apr 2023 11:22:38 +0100 From: Mel Gorman To: Qi Zheng Cc: akpm@linux-foundation.org, willy@infradead.org, lstoakes@gmail.com, vbabka@suse.cz, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH v2 1/2] mm: swap: fix performance regression on sparsetruncate-tiny Message-ID: <20230406102238.i7jhmjl3vggncog5@suse.de> References: <20230405161854.6931-1-zhengqi.arch@bytedance.com> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-15 Content-Disposition: inline In-Reply-To: <20230405161854.6931-1-zhengqi.arch@bytedance.com> X-Stat-Signature: 9byof1mgf45twttm1n8hzea7a4sj8dc3 X-Rspam-User: X-Rspamd-Queue-Id: 73284C000E X-Rspamd-Server: rspam06 X-HE-Tag: 1680776564-951390 X-HE-Meta: U2FsdGVkX1/Go4Cbw6oTvY/ac0r0x6G0OpD4L1R4cf9DlQq9eTJ9wDIJpxYF9SzSD9ENPDqYGMRo70hYFrHrPEEJHacYreVHRUhYxm7uVeVJRMycwBeYTcJSxgio3djUzIzlUmprnlgVpSMSV7xeYJuahfGkjnxVCuJ7c1s+ftD4HfntOryPOkrxvL0DumfoffG9/YssdVBpw4G2ybLUGCDjrxCi7atIBl1JiyvdmmlAEBmVP0ag1QbIDBUrVEPbfDFbKL33cBtYBkx18RGlM5OIlNQ32+6xc/GQiqa6pgQYMNNQAyT2Dqw6YQCEnXv03N1FayA9+wBLOn9atHzIOJBfWKh4ZRyEcpcq8kDn5jXmWhuCtCvbFMh5/pO2aHMAZyVuT6x3sgseCUGwHUjzs5xEvUw7RbSEW04D+ascdlH3xekHWjztFebboBia9ZVxAKpEworwhLO7FDCitl4YPYoYIM9zdmYMPv67slAypq2n8csuxNI7S98k63Yy6n8qim4OKwkFJueGTKT4MOKZ3CAKAYKyNgg27Rrg3GxZW1u/ZN+Yw1dA6d63dhynV1XkapLAEJpiHaPlGhtKZHI/nJmi3ZiXB7YFTUcIWKbA51SWdM4qKJEnwyxQWP4bv77Y0kdsYqZ/SFuj7Fn5BbJMvgUiKIxGJ52LiWSv1tMMhA5ogaM2caGqc4oFAoVTOYWtm9mtuWA7ccD00ia3OzzKlWRZyHBF5Aar5wrKGtWLTpYPj6xky1di6+MY+NVA9BZrYp4b0bMGulzCkL3N5ATMVSRaPjLzCqxAYhrhtqiVZCNEHzCUvhWrGz0DrzLQK1Qr64OSSbWczGXor2tWMDXA0JjkQ8hA8ZJ2QL7xkhlvLdjfahOQ7Fa8QZTwZkLJe7YPJnDWEyHQUevVnXYBWWzjzdLG7oakhnlmMsOyF84SXGwyWjy8He/zD2vWwhsoh8MnIV5fgv1YkyNhbXxUCBt ofjvDN+Z 4lDCYe9IZJePFbnBKaIt2he4i0oQCUBnyxohXQ5t+v78O4BQyEh7kVk6zMLUw0ARsUwC8Xqxyol8FvfBUvruz0MDMwRN/C/ftZxImwHR93AjZ6yj41z1ahFjPHHgAHtRumer0pZQFDHzu0Dm1BhlWSVhwBKJ3Bq2pC1cBT94Du9Lc93o7wE96iCiVuvRScpjGF+S3OnO+9npzX0N+EYcRBranb+5oF+8s29UgfZ2N4LQKJg1XIpGD7wZz6MPkS5tsKwDW 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 Thu, Apr 06, 2023 at 12:18:53AM +0800, Qi Zheng wrote: > The ->percpu_pvec_drained was originally introduced by > commit d9ed0d08b6c6 ("mm: only drain per-cpu pagevecs once per > pagevec usage") to drain per-cpu pagevecs only once per pagevec > usage. But after converting the swap code to be more folio-based, > the commit c2bc16817aa0 ("mm/swap: add folio_batch_move_lru()") > breaks this logic, which would cause ->percpu_pvec_drained to be > reset to false, that means per-cpu pagevecs will be drained > multiple times per pagevec usage. > > In theory, there should be no functional changes when converting > code to be more folio-based. We should call folio_batch_reinit() > in folio_batch_move_lru() instead of folio_batch_init(). And to > verify that we still need ->percpu_pvec_drained, I ran > mmtests/sparsetruncate-tiny and got the following data: > > baseline with > baseline/ patch/ > Min Time 326.00 ( 0.00%) 328.00 ( -0.61%) > 1st-qrtle Time 334.00 ( 0.00%) 336.00 ( -0.60%) > 2nd-qrtle Time 338.00 ( 0.00%) 341.00 ( -0.89%) > 3rd-qrtle Time 343.00 ( 0.00%) 347.00 ( -1.17%) > Max-1 Time 326.00 ( 0.00%) 328.00 ( -0.61%) > Max-5 Time 327.00 ( 0.00%) 330.00 ( -0.92%) > Max-10 Time 328.00 ( 0.00%) 331.00 ( -0.91%) > Max-90 Time 350.00 ( 0.00%) 357.00 ( -2.00%) > Max-95 Time 395.00 ( 0.00%) 390.00 ( 1.27%) > Max-99 Time 508.00 ( 0.00%) 434.00 ( 14.57%) > Max Time 547.00 ( 0.00%) 476.00 ( 12.98%) > Amean Time 344.61 ( 0.00%) 345.56 * -0.28%* > Stddev Time 30.34 ( 0.00%) 19.51 ( 35.69%) > CoeffVar Time 8.81 ( 0.00%) 5.65 ( 35.87%) > BAmean-99 Time 342.38 ( 0.00%) 344.27 ( -0.55%) > BAmean-95 Time 338.58 ( 0.00%) 341.87 ( -0.97%) > BAmean-90 Time 336.89 ( 0.00%) 340.26 ( -1.00%) > BAmean-75 Time 335.18 ( 0.00%) 338.40 ( -0.96%) > BAmean-50 Time 332.54 ( 0.00%) 335.42 ( -0.87%) > BAmean-25 Time 329.30 ( 0.00%) 332.00 ( -0.82%) > > From the above it can be seen that we get similar data to when > ->percpu_pvec_drained was introduced, so we still need it. Let's > call folio_batch_reinit() in folio_batch_move_lru() to restore > the original logic. > > Fixes: c2bc16817aa0 ("mm/swap: add folio_batch_move_lru()") > Signed-off-by: Qi Zheng Well spotted, Acked-by: Mel Gorman -- Mel Gorman SUSE Labs