Skip to contentSkip to conversation

mm: memcg: drop obsolete cache line padding in struct mem_cgroup

PATCH Applied Roman Gushchin 2 participants 4 messages Jul 1, 2024

Subsystems (2)
lore
Share & tools
lore

Roman Gushchin

author maintainer
#0 lore raw

PATCH 1/2 mm: memcg: drop obsolete cache line padding in struct mem_cgroup

After the grouping of the cgroup v1-related fields and the corresponding reorganization of the struct mem_cgroup, the existing cache line padding doesn't make much sense anymore. Let's drop it for now and put back to new places, if necessary.

---
 include/linux/memcontrol.h | 4 ----
 1 file changed, 4 deletions(-)
include/linux/memcontrol.h +0 -4
index d0c9365ff039..8b5b3ddeba05 100644
@@ -220,8 +220,6 @@ struct mem_cgroup {
 	/* handle for "memory.swap.events" */
 	struct cgroup_file swap_events_file;
 
-	CACHELINE_PADDING(_pad1_);
-
 	/* memory.stat */
 	struct memcg_vmstats	*vmstats;
 
@@ -305,8 +303,6 @@ struct mem_cgroup {
 	bool tcpmem_active;
 	int tcpmem_pressure;
 
-	CACHELINE_PADDING(_pad2_);
-
 	/*
 	 * set > 0 if pages under this cgroup are moving to other cgroup.
 	 */
Signature · 1 line
2.45.2.803.g4e1b14247a-goog
author maintainer
#1 lore raw

PATCH 2/2 mm: memcg: add cache line padding to mem_cgroup_per_node

Memcg v1-specific fields serve a buffer function between read-mostly and update often parts of the mem_cgroup_per_node structure. If CONFIG_MEMCG_V1 is not set and these fields are not present, an explicit cacheline padding is needed.

---
 include/linux/memcontrol.h | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)
include/linux/memcontrol.h +4 -2
index 8b5b3ddeba05..60418934827c 100644
@@ -95,14 +95,16 @@ struct mem_cgroup_per_node {
 #ifdef CONFIG_MEMCG_V1
 	/*
 	 * Memcg-v1 only stuff in middle as buffer between read mostly fields
-	 * and update often fields to avoid false sharing. Once v1 stuff is
-	 * moved in a separate struct, an explicit padding is needed.
+	 * and update often fields to avoid false sharing. If v1 stuff is
+	 * not present, an explicit padding is needed.
 	 */
 
 	struct rb_node		tree_node;	/* RB tree node */
 	unsigned long		usage_in_excess;/* Set to the value by which */
 						/* the soft limit is exceeded*/
 	bool			on_tree;
+#else
+	CACHELINE_PADDING(_pad1_);
 #endif
 
 	/* Fields which get updated often at the end. */
Signature · 1 line
2.45.2.803.g4e1b14247a-goog
maintainer Acked-by on v1 2/2
#2 lore raw

Re: [PATCH 2/2] mm: memcg: add cache line padding to mem_cgroup_per_node

Quoted 7 lines · Roman Gushchin

Memcg v1-specific fields serve a buffer function between read-mostly and update often parts of the mem_cgroup_per_node structure. If CONFIG_MEMCG_V1 is not set and these fields are not present, an explicit cacheline padding is needed.

maintainer Acked-by on v1 1/2
#3 lore raw
In reply to Roman Gushchin
Quoted 7 lines · Roman Gushchin

After the grouping of the cgroup v1-related fields and the corresponding reorganization of the struct mem_cgroup, the existing cache line padding doesn't make much sense anymore. Let's drop it for now and put back to new places, if necessary.