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 365E2C83F34 for ; Thu, 17 Jul 2025 16:35:45 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id CCEC88D000D; Thu, 17 Jul 2025 12:35:44 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id CA3A68D000A; Thu, 17 Jul 2025 12:35:44 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id BB9D98D000D; Thu, 17 Jul 2025 12:35:44 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0016.hostedemail.com [216.40.44.16]) by kanga.kvack.org (Postfix) with ESMTP id AB1148D000A for ; Thu, 17 Jul 2025 12:35:44 -0400 (EDT) Received: from smtpin05.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay07.hostedemail.com (Postfix) with ESMTP id 2D70916018A for ; Thu, 17 Jul 2025 16:35:44 +0000 (UTC) X-FDA: 83674307808.05.5BFC8A9 Received: from cross.elm.relay.mailchannels.net (cross.elm.relay.mailchannels.net [23.83.212.46]) by imf09.hostedemail.com (Postfix) with ESMTP id 8AA7A140015 for ; Thu, 17 Jul 2025 16:35:41 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=QJnXAQNo; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf09.hostedemail.com: domain of dave@stgolabs.net designates 23.83.212.46 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Seal: i=2; s=arc-20220608; d=hostedemail.com; t=1752770141; a=rsa-sha256; cv=pass; b=4YprzPBriQuonxzGLRaqISYM+8dGoN4DuoV3KFstbgQvaCeNAhE5BRU8dOln1zJDIGtUYg hkfBOFraRfnIzQaehL5u0QGHkMJubkIo5RirGHQ2th2L+2dlPbBIIsR+raBHkkZu3clAoM 3Qp5vo0BvY1uee5rKU0mcApj7PUmUfk= ARC-Authentication-Results: i=2; imf09.hostedemail.com; dkim=pass header.d=stgolabs.net header.s=dreamhost header.b=QJnXAQNo; dmarc=none; arc=pass ("mailchannels.net:s=arc-2022:i=1"); spf=pass (imf09.hostedemail.com: domain of dave@stgolabs.net designates 23.83.212.46 as permitted sender) smtp.mailfrom=dave@stgolabs.net ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752770141; 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=3KPdk7m9moclQwH9ISuclMP8fjLIKhxZaQ1PFqFVL0A=; b=H9gPUM91W4XdLy2Kf9/HV9L7ADsCWPn/+FqpHkrs1bI4wGKHB2fSo7db7IHe0XPiuAg3u1 abSu6w6odTxak2s6Qf0Hf6zQuvuEdX0xCDVp7nnjO6DyTECPH8LkNiRGMSeyjyqx+Xv5de 0nOMQnKTtHh2DcPZL0lYPrc4UndJEVs= X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 5714F903719; Thu, 17 Jul 2025 16:35:40 +0000 (UTC) Received: from pdx1-sub0-mail-a235.dreamhost.com (trex-blue-9.trex.outbound.svc.cluster.local [100.110.255.229]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id CB3CD903266; Thu, 17 Jul 2025 16:35:39 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1752770139; a=rsa-sha256; cv=none; b=easI32EAJmBC0rdmHdg/Iv+EupGxUfEpIEkShOqrpekCFa68Bkh30u3Kt6JHZ5ZqQmuJ4h EXi9w7ACojvqHNq5o/Wl/0GqtiVxMD8PzVIDaJvkMNUhCVuQCZ58obNAaX5NqL/VyOSDn0 0aV/na6bnqAyzjOQXjq/X66iwqOve6RzGkymut73bK/Kqfz3Ul8cVGeGk10/Z0Qn2PeEnW eJD8I/Rl31t1doVoIJWBZ3Na2KqKJl2XSuCoSujoNPHvZszb4zNl3UzMTZKtvrxLAG7fej 0I+nM/C3iRsnFDovz3JOZYb6TFV777muHuxaEP53btHxh3lytENCJ1zKor+b5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1752770139; h=from:from:reply-to:subject:subject: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:dkim-signature; bh=3KPdk7m9moclQwH9ISuclMP8fjLIKhxZaQ1PFqFVL0A=; b=tWAGyMjpS/DeFcG7/4+/gYizbfuC2b+9IL5dplQl8zrq8+8Zqo+arBGdVLpv+9G7JzhuaK anvWy1ObYTC6AOLRTPcPifJKZndZgzdDpffd70teNtkFMHKIS+zmrDQztuwN0gYxQhWhMz Z3NXfDYPkk9QjZ1z2kp3vFkbWhIWk6aDdmbNHft3C+tbPfy+2ezG/V00ZNAdKYwKMe8oBL fBtm/p5FDeEaR20bdfiVwP4KyX5ZIb6ZNfL7AbD2A1ctsyyTklhkshbM3opd+Akz8j1nzJ zP5R/8iO75Eb4udlim0mc/LE65hXSPzkA4XcDX9aHk+mObBLbz3ksH8W/Gw9XQ== ARC-Authentication-Results: i=1; rspamd-5c976dc8b-9hw78; auth=pass smtp.auth=dreamhost smtp.mailfrom=dave@stgolabs.net X-Sender-Id: dreamhost|x-authsender|dave@stgolabs.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|dave@stgolabs.net X-MailChannels-Auth-Id: dreamhost X-Robust-Coil: 626dcbe431fd644b_1752770140119_3985904764 X-MC-Loop-Signature: 1752770140119:957927492 X-MC-Ingress-Time: 1752770140119 Received: from pdx1-sub0-mail-a235.dreamhost.com (sub3.homie.mail.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.110.255.229 (trex/7.1.3); Thu, 17 Jul 2025 16:35:40 +0000 Received: from offworld (syn-076-167-199-067.res.spectrum.com [76.167.199.67]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-256) server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: dave@stgolabs.net) by pdx1-sub0-mail-a235.dreamhost.com (Postfix) with ESMTPSA id 4bjdp31Nb5zFr; Thu, 17 Jul 2025 09:35:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=stgolabs.net; s=dreamhost; t=1752770139; bh=3KPdk7m9moclQwH9ISuclMP8fjLIKhxZaQ1PFqFVL0A=; h=Date:From:To:Cc:Subject:Content-Type; b=QJnXAQNo+o35PCcaBoPhSa8KsmLyQG7i31+c4LMi9BeLQOuMO0IMtUal0m5z1fCf6 OQrxlPRBHhbAFkmtFWE+obFZJoPZK32TUUTlh8+CgP9FSxH50YiHGPZWHVx2uiO1h9 PU/4fWGgE5wIRxpIBRtvs0BEPIhFzrDRlxbiFsC4gsaTPCfXKtpEM4HfgmXqYNtSeY /94DixDPhwWo7qaKoBQ1aqV1FMfCoXJr5ObvMEyGVmd3D0/crtHJp+DMh/kMKCPQfW yn67tzfncrNJi2Urg8bWtISDejIk/drZFy2MhZkxAm1wocHRPCQT99OGU9n4Kyasoh H53KSNBG1WEDw== Date: Thu, 17 Jul 2025 09:35:36 -0700 From: Davidlohr Bueso To: Roman Gushchin Cc: akpm@linux-foundation.org, mhocko@kernel.org, hannes@cmpxchg.org, shakeel.butt@linux.dev, yosryahmed@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org Subject: Re: [PATCH 2/4] mm/memcg: make memory.reclaim interface generic Message-ID: <20250717163536.6jwhdzpb5a4elm4z@offworld> Mail-Followup-To: Roman Gushchin , akpm@linux-foundation.org, mhocko@kernel.org, hannes@cmpxchg.org, shakeel.butt@linux.dev, yosryahmed@google.com, linux-mm@kvack.org, linux-kernel@vger.kernel.org References: <20250623185851.830632-1-dave@stgolabs.net> <20250623185851.830632-3-dave@stgolabs.net> <87bjpjshn7.fsf@linux.dev> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii; format=flowed Content-Disposition: inline In-Reply-To: <87bjpjshn7.fsf@linux.dev> User-Agent: NeoMutt/20220429 X-Rspamd-Queue-Id: 8AA7A140015 X-Stat-Signature: kkerh9jjzwg9nmxs9kqwb346aa7u5k1q X-Rspam-User: X-Rspamd-Server: rspam08 X-HE-Tag: 1752770141-344828 X-HE-Meta: U2FsdGVkX18akU6ByBrtT/RfDw78E8pUHw36Twb4GWHyhcKRZ9I6jm0XrONEasmraIUMPbomT77cOeo9XqXUGojm5v8ceSDRrTzVQSLttIjZwZhYK1zdWzm96wMgncqKlUo0vuyk5mfs9n5IEn0Osi4dhVtOhsEbv9qimHzoe18AiOnMD/BZu1kFihasvnrNiiQDOlAen12TsuTktvDF+zsE9bzAaI1Jvjg2fTbvxKwyyTUl+DI36Q3ckIAP5aBH5VUwGIIpXF35aoQGKUodLGZtI4Nlu3CkQxSqjtSDj1WGq0vzNMNSKiAu74RFt3MDJ7M0+/Oq2pooFw38ICzNvUBzP3pmdhlqlL18H7GDKTTqKCch6sT0JD2Qf2RzWHXmyweXYmahGXJn2aPYY7P/zVtJlJcNBIgApygg/Gh0Z9cLmMjZFdmRsGZEkSBKLLeW1mRTb/cM7LdASZtoRtWhak3PAQ4cawzvRahMrenyPmZvFFzEr+cdHyMO+LPxlmPI00sixYcgWgo5VzBuIl4tB9BpHz7sUxk2JfBnOGW1VhJGgikSL77NpmOpkLIjx0jZbvTffKoYvXchtq01anZLEEl4vf0NcB/6LpOD2OKD6Ze171W1VNdbmDvW9/mSRvXrpdgddfv0IaUTXpD+RUIW8Xd0FY6nmceCZZqsZAjVKsSCu74qIpLGggVt2hQ1bYofLCce9+Vo9UwCBhTDb8bqlJ1W0wZcMym+0AM3JPsOJ75clMX0Zwvp+bL/ogHvERICw5/GALcpB3V+0qW1lVvEr5kzPdo/RAYBkm5PBOqTXiz9z/QYy8sd2brXNpARXcbAREA2jRAdF/F2MomUD6GiOQArgclH2SDhijt5kpCqEB9kTBkGiX8JPCj5JsK9dTJYAp1EQT4OIIDpLG8yrDgriO19ceRzhYJt/HjQoVHI6RDhHGcVTnrbMafAT70yJAi3lJ2xpBgRJs/m1KG//z8 lx+GzCV7 K3IeyHaJJeU+y2dllhPiDASeC1uY7WyqqmjHbH55a3bjOVRH1UklgPp4Tr3xDzmFGaDcqs31Zzij5dkiAxqqATDfPZqbyM/7jUI+ZKuX3/3OKs92TIDG6a4vDGCyJEzIWz5jCLuTLxWB85NbMsVzdFi/A3/8zmOAHfr03nq4V4TUXwwjZtuElkcM+jodPe3UzAXRvQbkG3QctdxON2dgJgggUa2N0+fbntjSiicjQuI89b0rfuWU76c4pK+++Ub7N/xq4cUR3a96iwQQPTYg9KSum2BVSLdCbG3Scf+6q2C8Gz1Sf6As7/Pv+2Q== 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 Wed, 16 Jul 2025, Roman Gushchin wrote: >Davidlohr Bueso writes: > >> This adds a general call for both parsing as well as the >> common reclaim semantics. memcg is still the only user and >> no change in semantics. >> >> Signed-off-by: Davidlohr Bueso >> --- >> mm/internal.h | 2 + >> mm/memcontrol.c | 77 ++------------------------------------ >> mm/vmscan.c | 98 +++++++++++++++++++++++++++++++++++++++++++++++++ >> 3 files changed, 104 insertions(+), 73 deletions(-) >> ... >> diff --git a/mm/vmscan.c b/mm/vmscan.c >> index c13c01eb0b42..63ddec550c3b 100644 >> --- a/mm/vmscan.c >> +++ b/mm/vmscan.c >> @@ -57,6 +57,7 @@ >> #include >> #include >> #include >> +#include >> >> #include >> #include >> @@ -6714,6 +6715,15 @@ unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg, >> >> return nr_reclaimed; >> } >> +#else >> +unsigned long try_to_free_mem_cgroup_pages(struct mem_cgroup *memcg, >> + unsigned long nr_pages, >> + gfp_t gfp_mask, >> + unsigned int reclaim_options, >> + int *swappiness) >> +{ >> + return 0; >> +} >> #endif >> >> static void kswapd_age_node(struct pglist_data *pgdat, struct scan_control *sc) >> @@ -7708,6 +7718,94 @@ int node_reclaim(struct pglist_data *pgdat, gfp_t gfp_mask, unsigned int order) >> >> return ret; >> } >> + >> +enum { >> + MEMORY_RECLAIM_SWAPPINESS = 0, >> + MEMORY_RECLAIM_SWAPPINESS_MAX, >> + MEMORY_RECLAIM_NULL, >> +}; >> +static const match_table_t tokens = { >> + { MEMORY_RECLAIM_SWAPPINESS, "swappiness=%d"}, >> + { MEMORY_RECLAIM_SWAPPINESS_MAX, "swappiness=max"}, >> + { MEMORY_RECLAIM_NULL, NULL }, >> +}; >> + >> +int user_proactive_reclaim(char *buf, struct mem_cgroup *memcg, pg_data_t *pgdat) >> +{ >> + unsigned int nr_retries = MAX_RECLAIM_RETRIES; >> + unsigned long nr_to_reclaim, nr_reclaimed = 0; >> + int swappiness = -1; >> + char *old_buf, *start; >> + substring_t args[MAX_OPT_ARGS]; >> + >> + if (!buf || (!memcg && !pgdat)) >> + return -EINVAL; >> + >> + buf = strstrip(buf); >> + >> + old_buf = buf; >> + nr_to_reclaim = memparse(buf, &buf) / PAGE_SIZE; >> + if (buf == old_buf) >> + return -EINVAL; >> + >> + buf = strstrip(buf); > >To be honest, not a big fan of this refactoring. Effectively parts of >the memcg user interface are moved into mm/vmscan.c. I get that you want >to use the exact same interface somewhere else, but still... I disagree, further this is no different than other callers in vmscan.c around memcg. >Is it possible to keep it in mm/memcontrol.c? Why? now proactive reclaim is not special to memcg... unless strong reasons it makes little sense to keep it there. >Also maybe split the actual reclaim mechanism and user's input parsing? I tried something like this initially, and ended up prefering this way. Further, this approach limits the reachability of the input parsing logic, and the interface is already being an exception to the one-value per file "rule". Thanks, Davidlohr