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 41493D5B156 for ; Mon, 28 Oct 2024 21:25:15 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id AE32F8D0006; Mon, 28 Oct 2024 17:25:14 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A91F58D0003; Mon, 28 Oct 2024 17:25:14 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 90D4D8D0006; Mon, 28 Oct 2024 17:25:14 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0015.hostedemail.com [216.40.44.15]) by kanga.kvack.org (Postfix) with ESMTP id 705EB8D0003 for ; Mon, 28 Oct 2024 17:25:14 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id 244D51404B5 for ; Mon, 28 Oct 2024 21:25:14 +0000 (UTC) X-FDA: 82724290572.01.BD9A1E7 Received: from mail-qk1-f179.google.com (mail-qk1-f179.google.com [209.85.222.179]) by imf04.hostedemail.com (Postfix) with ESMTP id EF11D40017 for ; Mon, 28 Oct 2024 21:24:41 +0000 (UTC) Authentication-Results: imf04.hostedemail.com; dkim=pass header.d=gourry.net header.s=google header.b=s2div8fX; spf=pass (imf04.hostedemail.com: domain of gourry@gourry.net designates 209.85.222.179 as permitted sender) smtp.mailfrom=gourry@gourry.net; dmarc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1730150501; 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=585mKsRT7d06ESGh3mIJ8b6bPBzsGlMV5JaQkeOeFsk=; b=I19oLLjySNxi9PmELL70dHZNan4HJGie0hAHuvsCBRmSXobwZ3MlkYwIJywj7NlIjHZDc0 0MYRHJe5ODJcYHulaRrUx8KV8RB0ll3ZfzXCL1xhRKA1kwI54956YY2bgrdq5750WLK02m 4GRSFUmsW7k6tojn5T3Rv0kQqFRGcog= ARC-Authentication-Results: i=1; imf04.hostedemail.com; dkim=pass header.d=gourry.net header.s=google header.b=s2div8fX; spf=pass (imf04.hostedemail.com: domain of gourry@gourry.net designates 209.85.222.179 as permitted sender) smtp.mailfrom=gourry@gourry.net; dmarc=none ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1730150501; a=rsa-sha256; cv=none; b=KqnEh0vkTZ/Xvhjb1KuYtksCDY+Am+8FWpNojPTNg7dpQSeXx3Qboxi9z9cfjB3coyy32d Y+IWnfAafUTzujoM5rpMv8dTQkATL7tBEGqbtvYQjlotZ/iPc8mczYGyUOscj6mVmgL5m/ UvSUYn2XEshEVce86XVRSTpptIQaqyI= Received: by mail-qk1-f179.google.com with SMTP id af79cd13be357-7b1474b1377so381213185a.2 for ; Mon, 28 Oct 2024 14:25:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gourry.net; s=google; t=1730150711; x=1730755511; darn=kvack.org; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date:from:to :cc:subject:date:message-id:reply-to; bh=585mKsRT7d06ESGh3mIJ8b6bPBzsGlMV5JaQkeOeFsk=; b=s2div8fXSxu4QnoJyA+Lm/yKYokudtl4ym+iG6CtHFKq1/JxcCGc3iYTtycDA4+YmV A2Odfn+cQ8EwUMOkyYHUwF3jtPufHO7cQLtcJzDVdFOW3mMf8WdXQAfRgfxda9PsIywD gge7eD2dS95r+5TZ2Gs+4UPo80nYUVb5Kxn9Sie6mdww3+UylkS80uOafveFHB1/V4Ks 8XBBXv2jTokIzP/oKp32il6lIOEBAMETAwQh9vT1IHYxjC4vmYpcK3Yng0P2eIbiIo9o DWMB7IYCOF+qf7O7fSKaFbkr6mso84B6I9NPpTFInMLCjC+83J0jZ7i44Pa5Nz3nVs31 JtWQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1730150711; x=1730755511; h=in-reply-to:content-transfer-encoding:content-disposition :mime-version:references:message-id:subject:cc:to:from:date :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=585mKsRT7d06ESGh3mIJ8b6bPBzsGlMV5JaQkeOeFsk=; b=ntS5jrmGN3bwf6G43n1olqjIqnmyqLYWUtCLTr6tH7TUl/uVmXLK5rrMxmFWC0ltWj 2N7nxaAn1F5lg+dwAXddGLOcxZ9ZdGMhHlC348bl4JCLSJggEpBA4NjTboF6NCShZUE2 xBZNyfSomNoTBAZn4gTNGNO71GJzzAanZSqrt4knKZ57zbMJp950tL1/488xasWsMTeW vfk70Z30EwNaDbSb+iW2sQTn3rg7vIxNQqPg7bO/+GhzWaHHJ7KqVhqtvn4xbSZUzO++ ou8dE6ZVRUTCQhesYf/KXFCt7TAUhdoByt0rFpWGwpoPcEl4TNJBWaqA5eElAyXNGP3j xzvg== X-Forwarded-Encrypted: i=1; AJvYcCWdRdF9OkjclUYsf1uxkzspDMYvipwwBlB1zq7pRbLleHb8KbhYFFDhmuFlen3Jd6+qKRxyPnR11A==@kvack.org X-Gm-Message-State: AOJu0YwuzaWLJiKglWuyoORCFagjh/VALVW71bqxmJSiwMhn/y7Uhg/6 ZAKKIMNaoQrE1XiLPnnn3O3C5yif0IwFOMKnfCkaGMBNrg0GZ4MZdcCB5AAQ3ws= X-Google-Smtp-Source: AGHT+IFzTlrI74jY4d3DbIaVjhK5zLVVE83AfXgTDT4O8X7A3dLUwf3PsR3yfJKmz8swudu8twoovw== X-Received: by 2002:a05:620a:29c3:b0:7b1:54f6:d1e0 with SMTP id af79cd13be357-7b193f59b61mr1413923985a.62.1730150711346; Mon, 28 Oct 2024 14:25:11 -0700 (PDT) Received: from PC2K9PVX.TheFacebook.com (pool-173-79-56-208.washdc.fios.verizon.net. [173.79.56.208]) by smtp.gmail.com with ESMTPSA id af79cd13be357-7b18d3484b6sm356677985a.124.2024.10.28.14.25.10 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 28 Oct 2024 14:25:10 -0700 (PDT) Date: Mon, 28 Oct 2024 17:25:15 -0400 From: Gregory Price To: Yang Shi Cc: linux-kernel@vger.kernel.org, linux-mm@kvack.org, kernel-team@meta.com, akpm@linux-foundation.org, ying.huang@intel.com, 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 Message-ID: References: <20241025141724.17927-1-gourry@gourry.net> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: X-Rspamd-Server: rspam06 X-Rspamd-Queue-Id: EF11D40017 X-Stat-Signature: tk5nwen9tsfkixizdfpdwo9br5i9e7ds X-Rspam-User: X-HE-Tag: 1730150681-588188 X-HE-Meta: U2FsdGVkX1+vafSKLnlMyvVFuhI7Mpy78+DHvUaC4LwRyR4vmMIRQPduiLoGxa3hiFHzk0oGE+GXv9rV9J4TGAfIN4XM+EUhfEOatfdi4uLGIax73CTCl527h478HFxQuWsoduEhWFPEQy4zspd2lNNxVkBuGQxxfkyVF4Y1y8/sWxEFSY/bELtEBO1mOXX7g0Cv3R+3zA8Rep+fKuRKFhciczvX48MINrZ/t74Vc43HxuXJS18ICalWnmn34Ve8lqTqmO9P310I/QkimRd7+Rytz3O89BQMdrgHH3dmyEZ/WePX6AjKsIL1OWAlxjvgDnb99e6CvppQm/N+6EezVzOzfelPAsRgus63DqtBIlvutnWQwWyY0jKWPHu+GcgISIGf2ZjNi/QbMkkk17QAyaX5OkHq2k0tav1qvlPR4h+EwpJPocmXVYEqrR5KkWiZeLE+bAB59IEHyKnkNhLdrqX7hLq7OFGLihOerfZV5OwK1yw3ouiIwk7G0o3wGhdoqmT6XI3UMCOYuUw6pYKABL3K7IC61auEiOQBsxf2q/JPZh3sU1CQX8/zULtI07I7nttJ4zM2GszRr+S7qOC5fIlygxTQ3WwlL2DYV0fFhwCgLUBTcjtqxeEv7grdKeE3GRfMLQDWVtL4UPP0cmMQ97OVIyhMItSRf4Xs9MnzamkThUvg9/V1xZmM2gHVSRNtIbyQMHSKbTcrfQAMA9YR6CxpM3UMmaCTjAj+jKbXA1mWQRatQCBeQhDMph+Kbg+Bl3S2swnxIk4bIyJBvU6cRN14RIYclTq5vkWKzmnu3V2JBa9wgK73epJIIhEIwY2e0VJULKvi/9STUcqSwC/CnehOOAmTNtASVdxW6e65vgECqE+qNIDZmhdA/6C+hRK65R3JRIEEvRBc9kRszEVIBF7E40iL8nrpj4kqdhsdbcXguDXz0LqixrH+vHlmIEVXXfk6uBdHDudBW6SfLxo 3cnQbNIK K+/AQrhB+3lQow/+om4NIgsvMqqzt3q5PEXEEfr3wDb9twifxzNtBA7ky/r9V4KAD2VfxSVANviefyFMKTOGPlwTOb1pWRZ+vueRB0D7NPjzGNk1j3JGNoRECeC1ZIVDtFItuQvrx+Gi0L/bf4Jgga5I2iu8wgY3v8PAh7IoSSNmdPF6daKmIUvCnTsg7902tUBCUPCFGpmKJZwPxzWT5EZTc/jreGBFv7yf71asDU0dLI/HCvu+IuLA8+tqWOhC/JR8Wb7GJdozWC10F00MzwdjPL7XS6yKMe/C384BIUEr/nXRyZIauoW8LiRqDRczc9Pqz2JY0nKbQaaWHcrvNoDylDbRz8sbYWucivK0POrbko6ixY/g4nnZPHonZiCBm2asiOOW8vsIKi76Cl7OSQJfFzrmC6kM0c+0rY/EXtA2nF/Q= 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: On Mon, Oct 28, 2024 at 01:45:48PM -0700, Yang Shi wrote: > On Fri, Oct 25, 2024 at 7:17 AM 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. > > 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 demoting 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 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 > > Thanks for catching this. Reviewed-by: Yang Shi > > > --- > > 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)); > > > > -- > > 2.43.0 > >