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 587DDC83F1B for ; Thu, 17 Jul 2025 01:58:17 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id A2FA96B0092; Wed, 16 Jul 2025 21:58:16 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id A06DB6B0095; Wed, 16 Jul 2025 21:58:16 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 943DC6B0096; Wed, 16 Jul 2025 21:58:16 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from relay.hostedemail.com (smtprelay0013.hostedemail.com [216.40.44.13]) by kanga.kvack.org (Postfix) with ESMTP id 854336B0092 for ; Wed, 16 Jul 2025 21:58:16 -0400 (EDT) Received: from smtpin21.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay03.hostedemail.com (Postfix) with ESMTP id 24858B66F2 for ; Thu, 17 Jul 2025 01:58:16 +0000 (UTC) X-FDA: 83672096592.21.8956ACC Received: from out-180.mta0.migadu.com (out-180.mta0.migadu.com [91.218.175.180]) by imf09.hostedemail.com (Postfix) with ESMTP id 6F0F014000E for ; Thu, 17 Jul 2025 01:58:14 +0000 (UTC) Authentication-Results: imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ej2YWayh; spf=pass (imf09.hostedemail.com: domain of roman.gushchin@linux.dev designates 91.218.175.180 as permitted sender) smtp.mailfrom=roman.gushchin@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=hostedemail.com; s=arc-20220608; t=1752717494; 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=KwiwtufpFedxgqMjpz1kH9fqYtgdYnalndUuHDgZNrQ=; b=IaV/HiMzXNrKHPBSYyZf2CNAxfybDIiB5du7QMxNHo1Mpy2+u31OG7Fl8cArDCzIN0ziqe VbG3j7MQIpN1CmTPIkxMVwfiY5r6G+cOHmpTtoA4pO+HFH4DIEiHEsztgX7YxyMR11iVvd dS8oUy4O3xdAF4+WOHilXLnql14bDdk= ARC-Authentication-Results: i=1; imf09.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=ej2YWayh; spf=pass (imf09.hostedemail.com: domain of roman.gushchin@linux.dev designates 91.218.175.180 as permitted sender) smtp.mailfrom=roman.gushchin@linux.dev; dmarc=pass (policy=none) header.from=linux.dev ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1752717494; a=rsa-sha256; cv=none; b=7ZmzFsLCavnD5WY6z8DZlD9s3BchtJfaFNtsidmfYsRpJ0qIdFQp/uLpYC8olA+EpptxtT 5m24RtgMqPF5PXTmE+a2ibB3Dy3v/meRG9ilo8BpHWRAwqXvxXjuX4PF6pVGX4IasAOtJY 4pDMQEJXr8JucFLqT6rXFy9atXnillg= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1752717492; 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; bh=KwiwtufpFedxgqMjpz1kH9fqYtgdYnalndUuHDgZNrQ=; b=ej2YWayhpu5nKiqXw79QqDkgrdyzyfGGaXRuVp8PMbDHEzLV/kscqEvOIlRiPVdhMXBaAF 39UxDtQqQHggdEJyLVlFy6G+S38dOM4yWDUqiwlwsBvknd+vkgRSj/qdwD5ctJcSTfHSiG uBJN9i0eqgZxLKf2cl/BDA8EaJYGZj0= From: Roman Gushchin To: Davidlohr Bueso 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 In-Reply-To: <20250623185851.830632-3-dave@stgolabs.net> (Davidlohr Bueso's message of "Mon, 23 Jun 2025 11:58:49 -0700") References: <20250623185851.830632-1-dave@stgolabs.net> <20250623185851.830632-3-dave@stgolabs.net> Date: Wed, 16 Jul 2025 18:58:04 -0700 Message-ID: <87bjpjshn7.fsf@linux.dev> MIME-Version: 1.0 Content-Type: text/plain X-Migadu-Flow: FLOW_OUT X-Stat-Signature: xuxzf95k9xkafpg36i38zpxoimsue1b6 X-Rspamd-Server: rspam01 X-Rspamd-Queue-Id: 6F0F014000E X-Rspam-User: X-HE-Tag: 1752717494-450644 X-HE-Meta: U2FsdGVkX19H0kew5QzN8A3wwdzlado0XPUuM9qitzPXf10AGAxk9aSgMpb0sjglCh1jKQdDBVS4WaNT9K53kW5tPQm3iF0Szez5wQHePV+sLnoBLGz/fN1riPewokidOhE5746gs3Xw4n/vFDi8KiNF06sO5AAYxGYARneRLRJqOQ3vx0nx3o3YfW5ESu36g6rz14FRbRnhVmp16b4e06UXT7hr5aza+wcRSXbJU99JXzdW1UGolwyEtL37tH7Z1WTVjluxCvwD3GhWpFGsgrxj9q07eR2mR6zkRoCTgOeQEVaRbup+lzZU/EJCoJ+5Cm29HfsXWT7TicGxzGApqO6ebcya3DOK9cUwrHpag/w1t4o6qAaAMnYVhxC1vig8QgbVnvJ8dWenJobnSBtMuQmeCSU7tBPqXwNwnzL5pQDBEB4WPobBNRi/L4VqcLS+gkCUFugyKD/veMG9ONYqUdcv57Ni7Jvc5Pi+kC1krj3+geM/ICWPCWYI0tYybnoJQtQ6mR27okdXdyKmVSJea+GBVAxjEpJv4fTqKrEtZUEiGe0rcoGyp+NGpa1ECCr977oLGDof0ZyO1kojUL12AR6QCjXDQxInhD2mald6PL9ByhZBTlTvI4//htSZYUpamRPPpTdidfE2YP+98fmR/57AvG2TnQ+Oj5dE8B9M9GZek2uOfBR5iiu6dmzs+bjxBEOen0/nAXc2qWKbb7PEaTH7qg8WRfaknaI0w8Bf9bpbTnTrrnXvcIQRJ6x48WPOCpg21D2cgZ5EsPYrcj6fFOZrtam4F9gRqJPoaKthBH5c56WA76/cxYpeuq6zWviWzgX2JI/jhM42ZiO+gJj/wUN7r6EeuCmKuNoDKLYXt0nuAprn7LT5o4VR8uvJWYSSzxLaIyBNx9tpiP61vHAp706aEK6AlPM2MR7CN2CL9UrkAJVkXrWzx1IPaMFZkXfm7CsP+5q4OJFPb5FwHxk +qJ5J3QW RwgKgv9AuQWRUXhcGWpcjhZFZXoxEKY386OSeiT1y7M4yvTkszQT2PwtlDbBJmhmy+WOujKJ376bPMvviJN+0KIPjdbxRmD5Fk2oJFhd8mq/mtv9hJbTNdFAJf7pVgj7KChpFyec9i8hmsQB59OkM8fA1Jczm9aSfovoR14H9ae+bTzvcV+++v+6ANYUq9X/Qv60+Ql4X+GBFDz0xVuWh7rO7NLLM1771RcuDIOL9RpK9xKhKh20mX7CqfF1Cnrc9tovT 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: 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... Is it possible to keep it in mm/memcontrol.c? Also maybe split the actual reclaim mechanism and user's input parsing? Thanks