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 1C4F7C3601E for ; Mon, 7 Apr 2025 14:25:04 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id 491306B0006; Mon, 7 Apr 2025 10:25:02 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 43FC46B000C; Mon, 7 Apr 2025 10:25:02 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 2E1556B000E; Mon, 7 Apr 2025 10:25:02 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0011.hostedemail.com [216.40.44.11]) by kanga.kvack.org (Postfix) with ESMTP id 105BD6B0006 for ; Mon, 7 Apr 2025 10:25:02 -0400 (EDT) Received: from smtpin01.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 22A95160280 for ; Mon, 7 Apr 2025 14:25:03 +0000 (UTC) X-FDA: 83307469686.01.E5FA37F Received: from mail-qk1-f176.google.com (mail-qk1-f176.google.com [209.85.222.176]) by imf18.hostedemail.com (Postfix) with ESMTP id D78241C0005 for ; Mon, 7 Apr 2025 14:25:00 +0000 (UTC) Authentication-Results: imf18.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=CYdNP6A6; spf=pass (imf18.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.176 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1744035901; 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=BtcFtvJWeTzd8aEaFE4jLS25j/Exm+iAFUHkYo8U5l4=; b=3HsMv6bts7xnvwiJ6PDbrIu4k0ymneZOB9aocal//GkU6fy6g96++OfBpO2xulapT1i1Bw H5VfSBpUPpvO9RCQ1ureNFtr9E2dMV1tVR+cWfFhEK9+UQJtqhRGjsSRc/n1TKjjeG2TyZ 3qAvyR/ehY2WfjGoVrP17WD+pNpDEE8= ARC-Authentication-Results: i=1; imf18.hostedemail.com; dkim=pass header.d=cmpxchg-org.20230601.gappssmtp.com header.s=20230601 header.b=CYdNP6A6; spf=pass (imf18.hostedemail.com: domain of hannes@cmpxchg.org designates 209.85.222.176 as permitted sender) smtp.mailfrom=hannes@cmpxchg.org; dmarc=pass (policy=none) header.from=cmpxchg.org ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1744035901; a=rsa-sha256; cv=none; b=3yoyHT82lSd2vuUX+dv1nixLFC+lbymc8mfEGDce/mwlOzpKQCSYUvdBd2OVlA/RMUbh4c 4+1Q9BBxheybDAqshsFZJYYI5PZ446ehZP4yO1LCwv0C/z5RixU1C3+r1c5u8Wy9Pub/pb Pgr1SbHFqPHhiyScmnLRJerx/ktWtZU= Received: by mail-qk1-f176.google.com with SMTP id af79cd13be357-7c5a88b34a6so412324985a.3 for ; Mon, 07 Apr 2025 07:25:00 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cmpxchg-org.20230601.gappssmtp.com; s=20230601; t=1744035900; x=1744640700; darn=kvack.org; h=in-reply-to:content-disposition:mime-version:references:message-id :subject:cc:to:from:date:from:to:cc:subject:date:message-id:reply-to; bh=BtcFtvJWeTzd8aEaFE4jLS25j/Exm+iAFUHkYo8U5l4=; b=CYdNP6A61QpO5ULsgWTU5dE2rfbROVqHhJPFQsBPjlq51kqyExZ5E9yOgAet01t+83 FHNASEdGBmfA2I6zS0enZ2q2CkdRFJd9h+eo658wEMH6GclsTkkAygP4/mtB9bA84SPz ab0T7WVyORpNVR0t4MecKjXr9gf+we4RIJBblYDVN8bJxbC2ca0T+7eCXBelfYdb198C H/FLLce4Ns4Q+HHcPZ+3WAbjlLrWYepEvnQQaEbM4irhQ9IfaoHcIFVSrbI1J4n1qftg 3VYoyngP26qHevAbUY8JX13SZ2d5hoVu7yJeu9TQD2CTv2zmS/FgJ3rKyXqZcCBQ88ic LL6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1744035900; x=1744640700; h=in-reply-to: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=BtcFtvJWeTzd8aEaFE4jLS25j/Exm+iAFUHkYo8U5l4=; b=HzWKO5IX1fU/tbAWaV7j16gp7Q3x1sAbeZ0A+6QkTG0GGHUPvSGPVgD6xtKjHegAWK JJwm80d6FA2nyCofOg4kqILy7XhFZ+K7K+EeKw2VPb+Megk8fvHKF5UsF0YboJZUpzG8 hKgAObsCtkUS/MXX741urmr/VV6VPxjyyVizZyAdzX0KoBOjEZ+NkPRYDSqCpTYXnVjo L8MVwqb9cV6EQYk4nsmgwsPC4d4vxC1IOeUxMb15bQUOuGMByAV7tUlh2e9zq+RDUqoC 1TI+6y1dFUKXKU9Tyvs3ChK74D0Dk7DZOofLtH5aSrkm38yAtb/uaHOF+Q7VF4oV1ciE wLqA== X-Forwarded-Encrypted: i=1; AJvYcCUDhHW2UGOmLPOuX/JhD2yxfhha0Zir2PoT/GWNhDgzou6B589ZL/fczq+SDVTdINh/NZUGw71wPg==@kvack.org X-Gm-Message-State: AOJu0YyXmH6yrkrLKmARrVV1IC+69Gz7AM9QoBYm9SYIjlmv0tekfGfz WPRxZJtqiQcTH8mZK/TUyiGZgLEtrL4mf5EbgrsdMGYo7216bsqHeGSzwZoRGeE= X-Gm-Gg: ASbGncvJf5NARjh9VMqbbzVnBvyRlYxAT85+Ho5q+5aK337NnbvSKaCebI0EsX5m+Eb RK1rWQexpS8epkB9fpSMIc2wM6k8WiFJoXdynfSNpHNFmDx/LaZfdqXRH9W9flOMnvRxm42WH0S X2SlcMtoEcdXvLiOtsZ+qyZdzjj/FEQ+npAYERnzb2+P7S5/iMYVWZJ0Vi6fXS0GzOaTy28jiME otlUG1IWjb0fgYvinuGVsiVJQzLqAZpLfeclKaz2bfUxAuyJmUODkcDzv8blHAWa2W5+yzg6f04 s7le0eB4IEginYobh1RL0j9upzfG+v9IZfJSJEZ9ZqQ= X-Google-Smtp-Source: AGHT+IHyuzC5+kG2dk5Msmyxn0gHtav7B/XZxK3w72aKlsga3evi7tqvhUM7FAm8nD/j1XIQV6Dy/w== X-Received: by 2002:a05:620a:bc2:b0:7c5:5670:bd6f with SMTP id af79cd13be357-7c774dfa5f5mr2014121585a.53.1744035899741; Mon, 07 Apr 2025 07:24:59 -0700 (PDT) Received: from localhost ([2603:7000:c01:2716:365a:60ff:fe62:ff29]) by smtp.gmail.com with UTF8SMTPSA id af79cd13be357-7c76e75c085sm601668785a.40.2025.04.07.07.24.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 07 Apr 2025 07:24:58 -0700 (PDT) Date: Mon, 7 Apr 2025 10:24:55 -0400 From: Johannes Weiner To: Waiman Long Cc: Michal Hocko , Roman Gushchin , Shakeel Butt , Muchun Song , Andrew Morton , Tejun Heo , Michal =?iso-8859-1?Q?Koutn=FD?= , Shuah Khan , linux-kernel@vger.kernel.org, cgroups@vger.kernel.org, linux-mm@kvack.org, linux-kselftest@vger.kernel.org Subject: Re: [PATCH v4 1/2] mm/vmscan: Skip memcg with !usage in shrink_node_memcgs() Message-ID: <20250407142455.GA827@cmpxchg.org> References: <20250407014159.1291785-1-longman@redhat.com> <20250407014159.1291785-2-longman@redhat.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250407014159.1291785-2-longman@redhat.com> X-Rspamd-Queue-Id: D78241C0005 X-Rspamd-Server: rspam05 X-Rspam-User: X-Stat-Signature: 9mo7wyi87eux391wxznmp75d9irisrz7 X-HE-Tag: 1744035900-67404 X-HE-Meta: U2FsdGVkX19TSg2JCNSxy8Q9LOq3Z4uvPQDZVJy5zR3PXzo72tk24hbCQODtTm78m1oRbG8PgA2gKZ0BkBtINDZuuielFzl1nshXEMj2x8Fob5vmPKb73MsTrGGY7s4JIZY/goZanjNciOdJJIa3jU9yHbv0fCaXaUMBbwgVt2RLsxYVZBnAuNKIkEQmHJ4o0RZyBABWbzz9UBVRgWiDYvF3aB01wtRbPRa8KcPUx5GAuimvSVU9d4cAizzXWbktcPmGxwfs7yCn3fKBfj1j+VEJ2tr57Vs7oCn+j4r+JsEzC3wCZK8axdcjjWtLX9VvBkMU1PPKoccu1lfMo4IIRxT0tlgX01eE6PwhvL+zrGKMxY0WyZngesE8Lu5VBmtqXyP/Mpi4nBCXj472iagUoO3Pn/2aEgS1Pua4oaZnFJ9rPxMNVRhQkD1wJsSWROlS9GSGA2RpcI5tzHBaYwl/a5qps+o5U7GCI49J+Sip4fvcu5sUU48HUB6hs/+F0oZf2ej/tt535d9KCfGKOzI5ItK9heaR88MEsr3OCLGnCaNn/FACiKHcQrpkno60UZ3V/Fz+fvMX/nAqmUr5Bw2PojBpav6nNU5mtf9+HoYwoj7Jt2emvOkk+4Nr+fnxscx4C26rw2bIt8xOznP33qYP20BsOUoZzkTjbb3uVi3x85j5sGaJKYskgpxwMtFU4iVL2jPZpRTix0Yk3XCm9g1m8hJ0zbYrPDTiI/7Fsg808mT+2+wA+b74lEwm9/besotE2/hIEvfl2zKQ3CgYGgU4fH+OU3UL6wKOWPUBa+Y/kAU0gGljZxM/RbEuUl4vZt5Ahe4wbNDRQ4NZTeDfJHE3kjg4F/J3N2meIhQ3zYB6zocaCGqmamp4sD5g0r2FdEvlpIVtCdC6DFzNp2iy0swF8yn9xaio5rTWlIPPrFEKfx+JXgcpnkWwlvFgxxVT37sgnMLlOiuJdTRcbpSqMvt k0yn7pRa bWP2aaGoaaInOS96bXYP8R3YIqjdRMIvxZSqGqpD/LSY6FzkJ+bNt3CmzOAZuAFgxHq/+FVwZHgl5o+YOLLdFSPeyf1qAMQVQw1e0VPQ8wYZDrWpIpBqVBhxy1lJS23GisoaQ4UCqsWA6YzX/5u9blivifXSYonO5GlY7TUUN9Nu7lIFgBPB5IEVumFd9jzt3WoMM1K6NttpVk1I/RmoGK0t3od97Fhf5QwkW/RJDJCFeGdFdaWiVj6TIEUKfQqqh1DYISxyu2v9eNOGinBb+7gOcdTgfaQZqO+PD02V612qHIMPYBYZmR5d86yatxPudUHcU0yOUGBgkA75D9c7tBCbFn0hWLGgGpaht50XpolkSPw+4BTTGBBtXY1q4HHymHOKAxsw9KRZGkI/7dAFwuujqxuRc5XMuT2tFqfXo6qGy9nUNxBKr2afNDG/Xos5mYvyiQZL0i8jRI6is7x4cKBlEvmc0fBX+4jixxBbPhTjZEg8qnozKO9Vp22tkExoIbonQXv8LQhpj6L0acYiEgxTa90gBlh4wmCB79wFTzJ0fQPeXm51hiat6lFxBJ+P0g2o21C3gOWodRYzerCsymuOzrt6S5mErCcz9 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 Sun, Apr 06, 2025 at 09:41:58PM -0400, Waiman Long wrote: > The test_memcontrol selftest consistently fails its test_memcg_low > sub-test due to the fact that two of its test child cgroups which > have a memmory.low of 0 or an effective memory.low of 0 still have low > events generated for them since mem_cgroup_below_low() use the ">=" > operator when comparing to elow. > > The two failed use cases are as follows: > > 1) memory.low is set to 0, but low events can still be triggered and > so the cgroup may have a non-zero low event count. I doubt users are > looking for that as they didn't set memory.low at all. > > 2) memory.low is set to a non-zero value but the cgroup has no task in > it so that it has an effective low value of 0. Again it may have a > non-zero low event count if memory reclaim happens. This is probably > not a result expected by the users and it is really doubtful that > users will check an empty cgroup with no task in it and expecting > some non-zero event counts. > > In the first case, even though memory.low isn't set, it may still have > some low protection if memory.low is set in the parent. So low event may > still be recorded. The test_memcontrol.c test has to be modified to > account for that. > > For the second case, it really doesn't make sense to have non-zero > low event if the cgroup has 0 usage. So we need to skip this corner > case in shrink_node_memcgs() by skipping the !usage case. The > "#ifdef CONFIG_MEMCG" directive is added to avoid problem with the > non-CONFIG_MEMCG case. > > With this patch applied, the test_memcg_low sub-test finishes > successfully without failure in most cases. Though both test_memcg_low > and test_memcg_min sub-tests may still fail occasionally if the > memory.current values fall outside of the expected ranges. > > Suggested-by: Johannes Weiner > Signed-off-by: Waiman Long > --- > mm/vmscan.c | 10 ++++++++++ > tools/testing/selftests/cgroup/test_memcontrol.c | 7 ++++++- > 2 files changed, 16 insertions(+), 1 deletion(-) > > diff --git a/mm/vmscan.c b/mm/vmscan.c > index b620d74b0f66..65dee0ad6627 100644 > --- a/mm/vmscan.c > +++ b/mm/vmscan.c > @@ -5926,6 +5926,7 @@ static inline bool should_continue_reclaim(struct pglist_data *pgdat, > return inactive_lru_pages > pages_for_compaction; > } > > +#ifdef CONFIG_MEMCG > static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) > { > struct mem_cgroup *target_memcg = sc->target_mem_cgroup; > @@ -5963,6 +5964,10 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) > > mem_cgroup_calculate_protection(target_memcg, memcg); > > + /* Skip memcg with no usage */ > + if (!page_counter_read(&memcg->memory)) > + continue; Please use mem_cgroup_usage() like I had originally suggested. The !CONFIG_MEMCG case can be done like its root cgroup branch. > if (mem_cgroup_below_min(target_memcg, memcg)) { > /* > * Hard protection. > @@ -6004,6 +6009,11 @@ static void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) > } > } while ((memcg = mem_cgroup_iter(target_memcg, memcg, partial))); > } > +#else > +static inline void shrink_node_memcgs(pg_data_t *pgdat, struct scan_control *sc) > +{ > +} > +#endif /* CONFIG_MEMCG */ You made the entire reclaim path a nop for !CONFIG_MEMCG.