From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from out-180.mta1.migadu.com (out-180.mta1.migadu.com [95.215.58.180]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 78FDC42668C for ; Tue, 30 Jun 2026 14:21:41 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=95.215.58.180 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782829305; cv=none; b=tqSwNghiJatK1TRPjoeVhB8WdA24X9HbiBBkzv+R1mlGZgbZ9ms+qq8BtwrHB47dWV0ASU+MXqoZFU38BuhQvP+c6C08COaRrbndg1/AJlu2L0xk+6ZstMo60JT389aCLT1sid6qLdU6GEBcM+9mp2kMIRqI5fMWuc8xBtKTerY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1782829305; c=relaxed/simple; bh=FHfVaQGYIVa9ZPwC9LwCVkJJqJh/mu92znroljf6eYU=; h=Date:From:To:Cc:Subject:Message-ID:References:MIME-Version: Content-Type:Content-Disposition:In-Reply-To; b=k7cinrn5ZwxJuqa3gg8qy5vCzeLPSTJk6apkocotmdLHTOrqxShwNP9dhGbk+Lwi6Vm8lm34PGUDkbH1Bs5nW51NFDzNP5QhkWQHg4lZxoNt55YcoHmu1n0xWnIf773rqoiPb2buztA4/PIAJPOwq0sqXVSYmga7USo/0WGRm+k= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev; spf=pass smtp.mailfrom=linux.dev; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b=X2t4P2pl; arc=none smtp.client-ip=95.215.58.180 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=linux.dev Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=linux.dev Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=linux.dev header.i=@linux.dev header.b="X2t4P2pl" Date: Tue, 30 Jun 2026 07:21:22 -0700 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1782829298; 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=W7ma1fkLP7myuZ97dWxsnvojHSaSFp6xHyBh8qniR+0=; b=X2t4P2plIlVRpq2hmcYnF0HiysTJE1BMvMoRfPBp/NqQJx7P8EJDQRdcUQSGexyGxfpU1d 54f6MC4rBY3LY6E3hHlCNHOKgkPkh7U4RsCl8bOtTsoOFu/JZaA2bHLl+HZdD22n6Q08eM FYgExvdmeyZvlHZUadnJ4bcDdSD8rek= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: Usama Arif Cc: Andrew Morton , david@kernel.org, linux-mm@kvack.org, hannes@cmpxchg.org, tj@kernel.org, mkoutny@suse.com, roman.gushchin@linux.dev, liam@infradead.org, linux-kernel@vger.kernel.org, ljs@kernel.org, mhocko@suse.com, rppt@kernel.org, surenb@google.com, vbabka@kernel.org, kernel-team@meta.com Subject: Re: [PATCH v3 2/2] mm/vmpressure: move v1 userspace eventfd code into memcontrol-v1.c Message-ID: References: <20260630112617.1198623-1-usama.arif@linux.dev> <20260630112617.1198623-3-usama.arif@linux.dev> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20260630112617.1198623-3-usama.arif@linux.dev> X-Migadu-Flow: FLOW_OUT On Tue, Jun 30, 2026 at 04:23:33AM -0700, Usama Arif wrote: > Clean up mm/vmpressure.c by separating the cgroup v1 userspace eventfd > interface from the shared and v2 in-kernel code. > > Currently, almost half of mm/vmpressure.c exists to serve tree=true: > struct vmpressure_event, the events list and its mutex, the work_struct > and vmpressure_work_fn that drains tree_scanned/tree_reclaimed, the > parent walk, vmpressure_event(), vmpressure_register_event(), > vmpressure_unregister_event(), and vmpressure_prio() (which always > calls vmpressure() with tree=true). > > Move it all into mm/memcontrol-v1.c (built only when CONFIG_MEMCG_V1=y) > as a single contiguous block, following the per-component layout already > used by that file. Keeping the v1 vmpressure code with the rest of the > deprecated cgroup v1 memory controller makes the full footprint of the > CONFIG_MEMCG_V1 option easy to see in one place, which matters more > than component-level file separation for code that has no active > development. > > vmpressure.c keeps the shared bits (constants, vmpressure_calc_level, > the runtime hierarchy check, the tree=false body, init/cleanup > plumbing) and calls into three small v1 hooks for the tree=true > accumulator and the v1 portions of init/cleanup. The hooks have > static-inline no-op stubs in include/linux/vmpressure.h for the > !MEMCG_V1 case, so callers don't need ifdefs. vmpressure_prio() gets > the same treatment, which means vmscan.c's call site disappears at > compile time on v2-only kernels. > > The only #ifdef CONFIG_MEMCG_V1 in source remains around the v1-only > fields inside struct vmpressure itself. > > Memory savings on CONFIG_MEMCG_V1=n (measured with pahole): > > struct vmpressure : 112B -> 24B > struct mem_cgroup : 1664B -> 1536B > > This split is the first step toward eventually making vmpressure > CONFIG_MEMCG_V1 only. The v2 in-kernel socket pressure path > (tree=false) cannot be removed today immediately: PSI is not an > exact replacement for vmpressure, and switching networking socket-buffer > back-off to PSI may regress networking performance or increase memory > pressure in workloads that today rely on vmpressure's hysteresis. The > medium-term plan is to introduce a PSI-based socket-pressure path, keep > vmpressure available for v2 behind a defconfig as an opt-out for several > releases, and only then drop the tree=false path entirely, at which point > everything that remains of the vmpressure block in mm/memcontrol-v1.c is > the whole subsystem. > > Signed-off-by: Usama Arif Acked-by: Shakeel Butt