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 6437ED13570 for ; Mon, 28 Oct 2024 04:42:46 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AAC376B008C; Mon, 28 Oct 2024 00:42:45 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A35C36B0092; Mon, 28 Oct 2024 00:42:45 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 8D6076B0093; Mon, 28 Oct 2024 00:42:45 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0014.hostedemail.com [216.40.44.14]) by kanga.kvack.org (Postfix) with ESMTP id 6A1306B008C for ; Mon, 28 Oct 2024 00:42:45 -0400 (EDT) Received: from smtpin28.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay06.hostedemail.com (Postfix) with ESMTP id C6655AD95A for ; Mon, 28 Oct 2024 04:42:00 +0000 (UTC) X-FDA: 82721765238.28.04DF914 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.12]) by imf02.hostedemail.com (Postfix) with ESMTP id D35058000A for ; Mon, 28 Oct 2024 04:41:58 +0000 (UTC) Authentication-Results: imf02.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="QhyUQ/yW"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf02.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.12 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730090521; a=rsa-sha256; cv=none; b=0apSLfliPpqcMqhhwBBMICmsqD33sgz6Y0+7KgV1EZRh0DDBeJIaD23EFXTvIJhAAfYw23 3GUiS1LoKNO40Ctbc5emoOjJgch2Oynab1FMhuaMZMKmMitQIqD7gv0LbqnbWOSz4diMem DcDAWvfImlXuSP9WwteuqI2lhfB3U+c= ARC-Authentication-Results: i=1; imf02.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b="QhyUQ/yW"; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf02.hostedemail.com: domain of ying.huang@intel.com designates 192.198.163.12 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730090521; 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=a8bFyUlrUnNEIxXMfdJZVKCJskywGk4a6mUicXOsmM4=; b=HQw5vqtNmxcNrBBf+xX8Vz+69GoLnglNAGaFX/NYVDuR8qs2lC8LtIBLHvv2Bhi0/QPInh PxN34zp5dTHToN31ZCSswRxb7Nh717RDuWynzH/vL+1YNQGUJNeRKWok+6kwOzGc4DQo+3 5SMl9BBLhh5md7XNCsq4sCXCI3VsLzg= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1730090562; x=1761626562; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version; bh=pAbyscq/8o1RULEwswI7SeZXYGter4pYg9fdxDjM0I4=; b=QhyUQ/yWt0/kQb/R9kfzX8DxDA56q80fqnEWyJs5eUJ1e1evuqtE0pMT kH5vbBGguJvrtraHkfu3Vaf7YnN95iJM56SuIhp3VTMCyrFWV5OdObguc WEYBZddTM2rpJHOWyCpG1rBnJLQ3NO3iFQcZcyz+yZo36VVT/Qb0Rby24 q38dH3AgTF83faP+hjLozRLxb6s5IxBI0EXlQ94xuntQ47nqbxf4+2Hhh WOV8FqMagkkalmj8FYyL0PwAWevc0eQt38ig78XaMITVOFzvD+5ttPNjB kUQ/5lV0I9j+rVDaG/63d3YyjcCxn5R2+HUiYYC60hIKKehg9DVsDHqc6 A==; X-CSE-ConnectionGUID: mkqUAjDGTgKeJKAa5JL/tQ== X-CSE-MsgGUID: uRKlO8UyR1Ku3m5PjEX08g== X-IronPort-AV: E=McAfee;i="6700,10204,11238"; a="33583996" X-IronPort-AV: E=Sophos;i="6.11,238,1725346800"; d="scan'208";a="33583996" Received: from fmviesa009.fm.intel.com ([10.60.135.149]) by fmvoesa106.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Oct 2024 21:42:41 -0700 X-CSE-ConnectionGUID: 5L2RfXbES6WMB5cZrm5fzQ== X-CSE-MsgGUID: U0FUjabDR+mSHTYumqPmSw== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,238,1725346800"; d="scan'208";a="81547893" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by fmviesa009-auth.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 27 Oct 2024 21:42:38 -0700 From: "Huang, Ying" To: Gregory Price Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@meta.com, akpm@linux-foundation.org, weixugc@google.com, dave.hansen@linux.intel.com, osalvador@suse.de, shy828301@gmail.com, stable@vger.kernel.org Subject: Re: [PATCH] vmscan,migrate: fix double-decrement on node stats when demoting pages In-Reply-To: <20241025141724.17927-1-gourry@gourry.net> (Gregory Price's message of "Fri, 25 Oct 2024 10:17:24 -0400") References: <20241025141724.17927-1-gourry@gourry.net> Date: Mon, 28 Oct 2024 12:39:05 +0800 Message-ID: <878qu8yh7a.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=ascii X-Rspam-User: X-Stat-Signature: 4891oi6resm5jcaudyo1f5ewy68byob7 X-Rspamd-Queue-Id: D35058000A X-Rspamd-Server: rspam02 X-HE-Tag: 1730090518-863481 X-HE-Meta: U2FsdGVkX1+jPo6Iyy/CvMP8QtUEsi0LVvOy4rEZTmJ0IjI2hLSTQJRyL4G9yLGTqWbz4cup2Ku+c6uLaRZV6H9xqmsZtuDcYZbN0IZ0KGlbgSjJfaLvrKU3tFflxnVSv+5rvdLf6T7vE5uPWCYyMmOpfotDLppz0/845vPs9Rof0e2KSfH3QgYy2EGMlgvMIdQ+ra5WKGjN+jksqs31/wgQRYu5vxHGMMc65JhUiMf+JbCs+j8lxEDqJHsfRy5ZubVQr87muqpCEmlx7UXGN7xSF6uhwJwV1qiFjHVa5Jp8HURiDwsfE4FvlFe/h3Py3Nk1i5lg3S9gJFkzeNcEPaa1w52V+y+AOW2AH4E/h6sew/WhGQzkvBYIZWZGcwkb5oSqGN76ivSIF/hv/CnvtL/DbYqsn7cy9G4tS8AolYr9kEx8BKZq1IE0y9Z4K8fdKdHFpEcdCtN83NsVT+9P3LX5VqV6DNXgJ0zbSqQ16N92UpANG0IeHkQ62Y+XsE2JSnnfAswTAJOW8HnDL7GiQSywLUXNlp4yHCFS+HaThyfaU2ZLJc0bNPNQdXoyHp6AYnePuc/v60/NUoIiIB6u3q7mZuFDGtJhMLlQ0coJsSWuG28yl0fCiUP2Re2Kk3RapHJQuDHylPNhejPizjKIs7/EtKFSIfl/Y/bTkbNBhbFCktDWLlqNoW2EXcDvWsMOGMkdyBM5Y8feAhHVrHyxHo1W8Jz1WIqeGKAqc8Lu2icSJigy8quO0GRQHNbeJhHhTRmiPl9P/b6hFyOJpeCkS8SMedhCv8UVVxvSXgOQirApkK/IW9xZNV3SMS01Ghx0CO5qcQHMklzTZjHqDqctafG9vB7vPNU8G+o2blwELUbZmCn4OI1B/m++ffVWL/h1ENqYPFkBpXBTuBEYnSr4GgB3QvsW0zt0t333MNPWBUqSU2hQiwUiB16N9VlvXZPgQa9MEmcSNl8OlAMAUfN 0uUeZaEk /X2w4cMasNLb5RS1opJdzPUurlAkZgrvvSFctq0IacmlgioWN2/DXuzBDGcdUmNzXi+L7m//K1owT1QLlhZys9cC+NcP2q8dS+LWj9gffY5jP9ekFyIFHC7q+xFVRcsPXVIHRo17/FSmovzZACLunPGOit9/ZB07eRqY1l3LpT+cIpGaTy0PY9SBwY9zc1US/0DwbhR0bhRybUkDcuPt9ExdSE+0rgtp3D82JOYTHn2Yepi3VJBxmoOozvPqmOWYc0d4jHFomri7kj9PCrqrjJ16ckg== 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: List-Subscribe: List-Unsubscribe: Gregory Price writes: > When numa balancing is enabled with demotion, vmscan will call > migrate_pages when shrinking LRUs. Successful demotions will > cause node vmstat numbers to double-decrement, leading to an > imbalanced page count. The result is dmesg output like such: > > $ cat /proc/sys/vm/stat_refresh > > [77383.088417] vmstat_refresh: nr_isolated_anon -103212 > [77383.088417] vmstat_refresh: nr_isolated_file -899642 > > This negative value may impact compaction and reclaim throttling. > > The double-decrement occurs in the migrate_pages path: > > caller to shrink_folio_list decrements the count > shrink_folio_list > demote_folio_list > migrate_pages > migrate_pages_batch > migrate_folio_move > migrate_folio_done > mod_node_page_state(-ve) <- second decrement > > This path happens for SUCCESSFUL migrations, not failures. Typically > callers to migrate_pages are required to handle putback/accounting for > failures, but this is already handled in the shrink code. > > When accounting for migrations, instead do not decrement the count > when the migration reason is MR_DEMOTION. As of v6.11, this demotion > logic is the only source of MR_DEMOTION. > > Signed-off-by: Gregory Price > Fixes: 26aa2d199d6f2 ("mm/migrate: demote pages during reclaim") > Cc: stable@vger.kernel.org > --- > mm/migrate.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mm/migrate.c b/mm/migrate.c > index 923ea80ba744..e3aac274cf16 100644 > --- a/mm/migrate.c > +++ b/mm/migrate.c > @@ -1099,7 +1099,7 @@ static void migrate_folio_done(struct folio *src, > * not accounted to NR_ISOLATED_*. They can be recognized > * as __folio_test_movable > */ > - if (likely(!__folio_test_movable(src))) > + if (likely(!__folio_test_movable(src)) && reason != MR_DEMOTION) > mod_node_page_state(folio_pgdat(src), NR_ISOLATED_ANON + > folio_is_file_lru(src), -folio_nr_pages(src)); Good catch! Thanks for doing this! Feel free to add Reviewed-by: "Huang, Ying" in the future versions.