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 91E74C021AD for ; Wed, 19 Feb 2025 01:06:01 +0000 (UTC) Received: by kanga.kvack.org (Postfix) id C78F92801C3; Tue, 18 Feb 2025 20:06:00 -0500 (EST) Received: by kanga.kvack.org (Postfix, from userid 40) id BDA452801BB; Tue, 18 Feb 2025 20:06:00 -0500 (EST) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id AA2012801C3; Tue, 18 Feb 2025 20:06:00 -0500 (EST) 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 8BDB62801BB for ; Tue, 18 Feb 2025 20:06:00 -0500 (EST) Received: from smtpin10.hostedemail.com (a10.router.float.18 [10.200.18.1]) by unirelay08.hostedemail.com (Postfix) with ESMTP id E1F861403F0 for ; Wed, 19 Feb 2025 01:05:59 +0000 (UTC) X-FDA: 83134902438.10.0418210 Received: from out-189.mta1.migadu.com (out-189.mta1.migadu.com [95.215.58.189]) by imf01.hostedemail.com (Postfix) with ESMTP id 146FD40005 for ; Wed, 19 Feb 2025 01:05:57 +0000 (UTC) Authentication-Results: imf01.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=C1mpzZqq; spf=pass (imf01.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@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=1739927158; 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=3DS0VsgA0eFjWLaMuwoiKCDQIrGChx+ZK3MKy/ATOvs=; b=04WtVczhn1M6B8AQegNouT+A3o2n0eLGmMyvvQHnnMJYcPbfadxo5almbL20lf70RWX5D3 prn/fp4tv0CFDDKXigV6o3wkHH1341UiEl4J3exaHERwzW5FPUIXkoMHnthyM61AhBlbyE 9PzDRzXTFJUlMLSj/bymzR62KWzelq8= ARC-Seal: i=1; s=arc-20220608; d=hostedemail.com; t=1739927158; a=rsa-sha256; cv=none; b=oaMPhTDgTu82y48UKq29kSqa7vplUGph8Bv06cHt/sGaZpZsYWL7NTE6inn3M5TwjO3UXm b8iGCJp+mimFbauppZrcq9mu84l5CUmLBTvboqwCv/w77E4TECuzODc5ZjXlm5pSmDw9Ks PWJSqPNqtmbjdWfz+ny5le2AIWJfpEA= ARC-Authentication-Results: i=1; imf01.hostedemail.com; dkim=pass header.d=linux.dev header.s=key1 header.b=C1mpzZqq; spf=pass (imf01.hostedemail.com: domain of shakeel.butt@linux.dev designates 95.215.58.189 as permitted sender) smtp.mailfrom=shakeel.butt@linux.dev; dmarc=pass (policy=none) header.from=linux.dev Date: Tue, 18 Feb 2025 17:05:52 -0800 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linux.dev; s=key1; t=1739927156; 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=3DS0VsgA0eFjWLaMuwoiKCDQIrGChx+ZK3MKy/ATOvs=; b=C1mpzZqqJ5P4mCKrnlLKsgB5i2b13m+IvcuHp+kdkyG/5+uUPy3CuK8kobQhHvWTUpmfSB stXXaafnrbWP9X9QBJQzS8lyQ53i62KspEt3PhTq0oxC9jcMMmH0p5xGvPIqRmFYCvLIFC 0O2CnbHmZb8jVpScmw0bRgxJ+gkCcJk= X-Report-Abuse: Please report any abuse attempt to abuse@migadu.com and include these headers. From: Shakeel Butt To: JP Kobryn Cc: tj@kernel.org, mhocko@kernel.org, hannes@cmpxchg.org, yosryahmed@google.com, akpm@linux-foundation.org, linux-mm@kvack.org, cgroups@vger.kernel.org, kernel-team@meta.com Subject: Re: [PATCH 01/11] cgroup: move rstat pointers into struct of their own Message-ID: References: <20250218031448.46951-1-inwardvessel@gmail.com> <20250218031448.46951-2-inwardvessel@gmail.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20250218031448.46951-2-inwardvessel@gmail.com> X-Migadu-Flow: FLOW_OUT X-Rspam-User: X-Rspamd-Queue-Id: 146FD40005 X-Rspamd-Server: rspam07 X-Stat-Signature: wf91zk3wex8nf48jo5qf7sobosmoeqg7 X-HE-Tag: 1739927157-979404 X-HE-Meta: U2FsdGVkX18NXEQ0Fu0a5i/iOTgOpHFheolUEdaKXuefdMeDpHJiySIglCWKCa95LRHItgQd1vJuC2r0DjB3TSJ+nvGNqtAMOvBmGNG035PsQdnKAMfAWCWlxpFLxrEjfCbOmD7vqH0PxqXwfbgWgJeGnyFl9BtKRUWpKw1sWHXEQj/Cf49cwfrj32c/g0htIdC71/s7bUi52GdLpwo+m0YopcamXM6wwn4IRX1+l7Y7BbuGh+lyzP6XlSvzEC8P0JSeQDG7KgNdKkDnfX/nFKGopGfvt00NYt9q9sQHjiOzwGhos50UNIbrEKzPsBs5b9ZVSb90K6jeMGHdrxWPsLKfWnXMv9DMIvBZjz0qNMvXXYKrCyEBbsWjbipVMBc9Gm/WB+yMaXkVv0ngAjZqsmrjzcgU433iy6zmSW+Be6G0yNUXI0mmEog8HdrV00QCDL2AiNPH4C/AOewEjBqSfrkffhZw+g2ALX/Xd4m4KZUaR5Bu9tGSLyVlDpXsOkru1Z05bNUVStW2UaQ9PoLVyMPCkLH8mHaryxpY+RW0akI4mg0Vabxb1GIjThiTZK0Z96n70mcPVv9deuj4SN+OemTki5EPR6c8vjc4APd5NoxvzAnn84lFZcHiZvddaU1Z1eU+V2GZcSznYzogDRWUi8cY+XHaIyeAP0l05Ds8QGDnl5ltQowHfuHleL/iVWQk+Mxw712nmrmFPNRaRJR4BWurL5zneukr1nMBZ31guEOMkhl8laHpuV+0JKgoo+zjplOf0T8R3vEmbNbbtzIfBtXqtv1qD7Ne8QneEtwQ0uhnj4TEJ3OvguStTuhvLO+zS6yr4d2GMh5RGjquGBg7g2CPSt7T4m7HDh4FBb3xSMe0aYbW1Sb2a/9iyZzkWkiGwFm4B5TXIsZ6jb+PZSiNbioj96wKpYYFc8cEtMajFpQm7/X+BNN/4oTmvaT2zv+aL8lG/T8XjLJ6wd/PKf+ n0v+M+ic rM0PdfqRK6DSD+4IgLpLagpgg/AA7at+vJ6N/BcOezKZ7ArunL+uHky2XlDGc/TK0T3M40wY3QkZw3iqXOnJJzwdOzFcpGi2QZLCN6YtxCcfFQ71ygDoxEv8XciCWVX8KqoNlGNjv1p1J04pi0teaHYKBzVTE1Lc8PrzbohiSWBWbwh0BAY7YRJbDKw== 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: Thanks JP for awesome work. I am doing a quick first iteration and later will do the deep review. On Mon, Feb 17, 2025 at 07:14:38PM -0800, JP Kobryn wrote: > struct cgroup_freezer_state { > /* Should the cgroup and its descendants be frozen. */ > bool freeze; > @@ -517,23 +445,9 @@ struct cgroup { > struct cgroup *old_dom_cgrp; /* used while enabling threaded */ > > /* per-cpu recursive resource statistics */ > - struct cgroup_rstat_cpu __percpu *rstat_cpu; > + struct cgroup_rstat rstat; > struct list_head rstat_css_list; You might want to place rstat after rstat_css_list just to keep (hopefully) on the same cacheline as before other this will put rstat_css_list with rstat_flush_next which the current padding is trying to avoid. This is just to be safe. Later we might want to reevaluate the padding and right cacheline alignments of the fields of struct cgroup. > > - /* > - * Add padding to separate the read mostly rstat_cpu and > - * rstat_css_list into a different cacheline from the following > - * rstat_flush_next and *bstat fields which can have frequent updates. > - */ > - CACHELINE_PADDING(_pad_); > - > - /* > - * A singly-linked list of cgroup structures to be rstat flushed. > - * This is a scratch field to be used exclusively by > - * cgroup_rstat_flush_locked() and protected by cgroup_rstat_lock. > - */ > - struct cgroup *rstat_flush_next; > - > /* cgroup basic resource statistics */ > struct cgroup_base_stat last_bstat; > struct cgroup_base_stat bstat; > diff --git a/include/linux/cgroup_rstat.h b/include/linux/cgroup_rstat.h > new file mode 100644 > index 000000000000..f95474d6f8ab > --- /dev/null > +++ b/include/linux/cgroup_rstat.h > @@ -0,0 +1,92 @@ [...] > +struct cgroup_rstat { > + struct cgroup_rstat_cpu __percpu *rstat_cpu; > + > + /* > + * Add padding to separate the read mostly rstat_cpu and > + * rstat_css_list into a different cacheline from the following > + * rstat_flush_next and containing struct fields which can have > + * frequent updates. > + */ > + CACHELINE_PADDING(_pad_); > + struct cgroup *rstat_flush_next; > +};