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 436F9D5B852 for ; Tue, 29 Oct 2024 00:38:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id B22166B00B2; Mon, 28 Oct 2024 20:38:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id AD1586B00B3; Mon, 28 Oct 2024 20:38:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 923D86B00B5; Mon, 28 Oct 2024 20:38:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0012.hostedemail.com [216.40.44.12]) by kanga.kvack.org (Postfix) with ESMTP id 733956B00B2 for ; Mon, 28 Oct 2024 20:38:14 -0400 (EDT) Received: from smtpin26.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 1DFBFA07B0 for ; Tue, 29 Oct 2024 00:38:14 +0000 (UTC) X-FDA: 82724777352.26.723699A Received: from mgamail.intel.com (mgamail.intel.com [198.175.65.14]) by imf23.hostedemail.com (Postfix) with ESMTP id CFCBF140011 for ; Tue, 29 Oct 2024 00:37:55 +0000 (UTC) Authentication-Results: imf23.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Jobe37UG; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf23.hostedemail.com: domain of ying.huang@intel.com designates 198.175.65.14 as permitted sender) smtp.mailfrom=ying.huang@intel.com ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730162163; a=rsa-sha256; cv=none; b=eXMGqCacjemrpEod7bPdUvJbOoi91snFSZarGk0yDbzil1ne6KteMMIQ09j7XJthHg8SO+ BkVEX3NDKMN50WjWLSYv8PbC8BLrGGSzcZJD/4ZowQ1CBj9MI2QvnhdMm4rMrQgphGoG1n V5Z6KX2TWkR61f7/55873+8V7cs75J4= ARC-Authentication-Results: i=1; imf23.hostedemail.com; dkim=pass header.d=intel.com header.s=Intel header.b=Jobe37UG; dmarc=pass (policy=none) header.from=intel.com; spf=pass (imf23.hostedemail.com: domain of ying.huang@intel.com designates 198.175.65.14 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=1730162163; 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:content-transfer-encoding: in-reply-to:in-reply-to:references:references:dkim-signature; bh=V92JUYw3OE2C0myDneo3vflC2twUsqPgxNVJljRr/CY=; b=CHHMnMhX9s4S1kBkOF6rX9bJ9g1aaAcb3ZFCh5WcXErKa8pWw+mXvAYAb6XZs129XhdVIZ M1D4fEZ5cvuAOqXHTyKQQZruSspJ5QS4EqbaWCREsbCZ2rqCSE0ZovgPV75u5zqInC1uUD zn8P0qtwRrjW9koF3CA7oLVFtE+tKw4= DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1730162292; x=1761698292; h=from:to:cc:subject:in-reply-to:references:date: message-id:mime-version:content-transfer-encoding; bh=3K2dglKZn7wUtYTDSsva58MuIimxAP4MGOPDH/JDycU=; b=Jobe37UGnvrti/ZmxS0xZ9AN+mO5hKtGWbnz910PudC5nj5t15sINszZ pZ2AxAvjnq9NDYyUt78i423f4vDEKcg75XxMimYxhk31SUxew4nzNhRV/ /Ywfn4O343jvQBxoNa5JxvPhXt/c0V3Yrsl3QKqQKZhu9L5wPsMI01tti krF9lTizozX73JRrDVPNf511tK6z7IJ0h3g6hMpVawo90DbdC4yue0K33 bxjgRCAjDiu9uYl9w0+7VK6N4bWY9aTkLtBC0uTN8sYFVk2JZ1gvIF/uC DIrYdGiHHOIj/9W82hZP54tTZGynz7vUeiJOjGJXbeAJ5nL1TYkTeq4xn Q==; X-CSE-ConnectionGUID: 8OkyUuuFT0u1vi2tmd367Q== X-CSE-MsgGUID: NcXiyl0sR02NMVimo2CrSg== X-IronPort-AV: E=McAfee;i="6700,10204,11239"; a="33574626" X-IronPort-AV: E=Sophos;i="6.11,240,1725346800"; d="scan'208";a="33574626" Received: from orviesa008.jf.intel.com ([10.64.159.148]) by orvoesa106.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2024 17:38:10 -0700 X-CSE-ConnectionGUID: k0aWpVU7SbWu9VZPyjYQEw== X-CSE-MsgGUID: ZKMTSNDQRAmSlMypoWqD1w== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.11,240,1725346800"; d="scan'208";a="82602018" Received: from yhuang6-desk2.sh.intel.com (HELO yhuang6-desk2.ccr.corp.intel.com) ([10.238.208.55]) by orviesa008-auth.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Oct 2024 17:38:08 -0700 From: "Huang, Ying" To: Gregory Price Cc: Yang Shi , 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, stable@vger.kernel.org Subject: Re: [PATCH] vmscan,migrate: fix double-decrement on node stats when demoting pages In-Reply-To: (Gregory Price's message of "Mon, 28 Oct 2024 17:25:15 -0400") References: <20241025141724.17927-1-gourry@gourry.net> Date: Tue, 29 Oct 2024 08:34:34 +0800 Message-ID: <87msinwxut.fsf@yhuang6-desk2.ccr.corp.intel.com> User-Agent: Gnus/5.13 (Gnus v5.13) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Rspamd-Server: rspam12 X-Rspamd-Queue-Id: CFCBF140011 X-Stat-Signature: i639i86cqbmzhswq8wgfefxjp93t7jcn X-Rspam-User: X-HE-Tag: 1730162275-328186 X-HE-Meta: U2FsdGVkX18aKdDcPTEBSxH9zSSNnK5rCRdUMjlJaWD+YQuWgTi35FPe2BdvrgA55Ya20tS3cwHeMuXsqKhDexBB/7y5y+RFq6KwO2diK1K49uq0KTjmqTP306r/ExeW7HOgnwehz4bMIEamffOMlFiFEbwf6vTv2lcsskWWd2m58+OzpJdVlHCRvXArdxSnezLd6GKeHNslsxaNbn26L1I+uAQQL/N44l7ICHKIof4o6cDIVCgDABXuxT00QoL1/4oCNDG6f0z6ezU2yO0uIYOSgZKGwMm+rCCNSmyN7B9kNKy0KFkDlsEl8D2fFfafH8Y1JqNRM/tHbkrv6cl5dyn8xMvcYEnuw0Uv68RBQodWoitZtON8YISjYABrKs0fq5G9vNjvFA203r/8Z9k99xR05I/cC1tUBRcQTyqrGPaHaLVNTR8DpFsoqOX0TVvWo+yvNdv8abNBDAaqmuhE6huwGHeY1zPwZE/Cx3ljGeLKM8fcj48t0lR58rcubK+09TvDMAyNjUD1ZgGWRD6qb+bNYnHn2YxNsnRygLfjl30orjJHHT1Rvd7wFMJDGKtfhpXs7tqE42iHet3N5fuvshzwip0x0Mhb1z9DOfaFyYl+bKMBitvKdhzV//azuy8U5uxFC85kS1Q2GnGeI7Fek7UuRi/ytHuzFIpgeUI6CUelNIdgnryKy+xNq4DZPh10cxV3KxyYaTsaVkbui+ewUolqElPU0O3dWfHpuPa9tevxidhPzt9rHVvi2CC/n+dtD/XbME+kAV85T9F9VVV94FWgFPH6sb3z+/vdQFDvWO2ZeZDZLB9X3Xl6sz1zUyvFmXH9bnjOVDxIRBPGG4gpDgxm6MLCpVZXN2/6lQlQujkaRVxxMUDMhv3/ZI5di89AGPSd5l8dpg9tpc4Gs4allxTDYJIEsEV6ZP8SLMHG5xolxnAIVhcsjiHYQYXjO9YBMAEgTE4K56MMdHIWgZa OJb8IEy/ JybaN848AEwHnYdjPfUiBBaKMXdk3GS7AfcgiE6i7wyQIHIl1aSQFDyNFyi91SH5hUysWUTZmXBzreIHYXSdzy/7D8R/XtZcGP8+jDNalAoJPkk9oJ+el7WnvK7P5cHgQF5P5QUsFq7R0JMo3OTby0I24XiJCM3/IEhp+mXgEUZa19DSivhuCbMHVQMEca21R8J7soaulQhZFyrHn/nGttOEs0seYjjyDdP+lTAApHTvUHjK2kjDXR7SWVEVEook8Eixgre4buALrTfFx++i4flr/7A== 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: > On Mon, Oct 28, 2024 at 01:45:48PM -0700, Yang Shi wrote: >> On Fri, Oct 25, 2024 at 7:17=E2=80=AFAM Gregory Price wrote: >> > >> > 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. >>=20 >> AFAIK, MGLRU doesn't dec/inc this counter, so it is not >> double-decrement for MGLRU. Maybe "imbalance update" is better? >> Anyway, it is just a nit. I'd suggest capturing the MGLRU case in the >> commit log too. >> > > Gotcha, so yeah saying it's an imbalance fix is more accurate. > > So more accurate changelog is: > > > [PATCH] vmscan,migrate: fix page count imbalance on node stats when demot= ing pages > > When numa balancing is enabled with demotion, vmscan will call > migrate_pages when shrinking LRUs. migrate_pages will decrement the > the node's isolated page count, leading to an imbalanced count when > invoked from (MG)LRU code. > > 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 following path produces the decrement: > > shrink_folio_list > demote_folio_list > migrate_pages > migrate_pages_batch > migrate_folio_move > migrate_folio_done > mod_node_page_state(-ve) <- decrement I think that it may be better to mention the different behavior of LRU and MGLRU. But that's not a big deal, change it again only if you think it's necessary. -- Best Regards, Huang, Ying > 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 >>=20 >> Thanks for catching this. Reviewed-by: Yang Shi >>=20 >> > --- >> > 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 !=3D MR_DEMOT= ION) >> > mod_node_page_state(folio_pgdat(src), NR_ISOLATED_ANON= + >> > folio_is_file_lru(src), -folio_nr_= pages(src)); >> > >> > -- >> > 2.43.0 >> >