[PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees

Hao Li posted 1 patch 2 months, 1 week ago
mm/slub.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
[PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by Hao Li 2 months, 1 week ago
Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
can_free_to_pcs() use it.

As a result, when freeing objects on memoryless nodes, or on nodes that
have memory but only in ZONE_MOVABLE, the objects can be freed to the
sheaf instead of going through the slow path.

Signed-off-by: Hao Li <hao.li@linux.dev>
---

Hi Vlastimil, this patch depends on a prerequisite patch[1] from a few days
ago. I'm not sure how this should be handled. I wonder if Andrew might put them
in the same tree.

[1] https://lore.kernel.org/linux-mm/20260330035941.518186-1-hao.li@linux.dev/

---
 mm/slub.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/mm/slub.c b/mm/slub.c
index fb2c5c57bc4e..4927407c9699 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -6022,14 +6022,15 @@ static __always_inline bool can_free_to_pcs(struct slab *slab)
 		goto check_pfmemalloc;
 
 	/*
-	 * Freed object isn't from this cpu's node, but that node is memoryless.
+	 * Freed object isn't from this cpu's node, but that node is memoryless
+	 * or only has ZONE_MOVABLE memory, which slab cannot allocate from.
 	 * Proceed as it's better to cache remote objects than falling back to
 	 * the slowpath for everything. The allocation side can never obtain
 	 * a local object anyway, if none exist. We don't have numa_mem_id() to
 	 * point to the closest node as we would on a proper memoryless node
 	 * setup.
 	 */
-	if (unlikely(!node_state(numa_node, N_MEMORY)))
+	if (unlikely(!node_state(numa_node, N_NORMAL_MEMORY)))
 		goto check_pfmemalloc;
 #endif
 
-- 
2.50.1
Re: [PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by David Rientjes 2 months, 1 week ago
On Fri, 3 Apr 2026, Hao Li wrote:

> Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
> can_free_to_pcs() use it.
> 
> As a result, when freeing objects on memoryless nodes, or on nodes that
> have memory but only in ZONE_MOVABLE, the objects can be freed to the
> sheaf instead of going through the slow path.
> 
> Signed-off-by: Hao Li <hao.li@linux.dev>

Acked-by: David Rientjes <rientjes@google.com>
Re: [PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by Harry Yoo (Oracle) 2 months, 1 week ago
On Fri, Apr 03, 2026 at 03:37:36PM +0800, Hao Li wrote:
> Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
> can_free_to_pcs() use it.
> 
> As a result, when freeing objects on memoryless nodes, or on nodes that
> have memory but only in ZONE_MOVABLE, the objects can be freed to the
> sheaf instead of going through the slow path.
> 
> Signed-off-by: Hao Li <hao.li@linux.dev>
> ---

Acked-by: Harry Yoo (Oracle) <harry@kernel.org>

> Hi Vlastimil, this patch depends on a prerequisite patch[1] from a few days
> ago. I'm not sure how this should be handled.

> I wonder if Andrew might put them in the same tree.

But it also depends on the patch series
"[PATCH 0/3] slab: support memoryless nodes with sheaves".

So perhaps better send it to Linus after 7.1-rc1?

Thanks!

> [1] https://lore.kernel.org/linux-mm/20260330035941.518186-1-hao.li@linux.dev/

-- 
Cheers,
Harry / Hyeonggon
Re: [PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by Vlastimil Babka (SUSE) 2 months, 1 week ago
On 4/3/26 14:02, Harry Yoo (Oracle) wrote:
> On Fri, Apr 03, 2026 at 03:37:36PM +0800, Hao Li wrote:
>> Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
>> can_free_to_pcs() use it.
>> 
>> As a result, when freeing objects on memoryless nodes, or on nodes that
>> have memory but only in ZONE_MOVABLE, the objects can be freed to the
>> sheaf instead of going through the slow path.
>> 
>> Signed-off-by: Hao Li <hao.li@linux.dev>
>> ---
> 
> Acked-by: Harry Yoo (Oracle) <harry@kernel.org>
> 
>> Hi Vlastimil, this patch depends on a prerequisite patch[1] from a few days
>> ago. I'm not sure how this should be handled.
> 
>> I wonder if Andrew might put them in the same tree.

> But it also depends on the patch series
> "[PATCH 0/3] slab: support memoryless nodes with sheaves".
> 
> So perhaps better send it to Linus after 7.1-rc1?

[1] is in mm-hotfixes so it should get to mainline before 7.0 final, so then
it's fine to add this to slab updates PR for 7.1-rc1

> Thanks!
> 
>> [1] https://lore.kernel.org/linux-mm/20260330035941.518186-1-hao.li@linux.dev/
>
Re: [PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by Harry Yoo (Oracle) 2 months, 1 week ago
On Fri, Apr 03, 2026 at 08:14:11PM +0200, Vlastimil Babka (SUSE) wrote:
> On 4/3/26 14:02, Harry Yoo (Oracle) wrote:
> > On Fri, Apr 03, 2026 at 03:37:36PM +0800, Hao Li wrote:
> >> Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
> >> can_free_to_pcs() use it.
> >> 
> >> As a result, when freeing objects on memoryless nodes, or on nodes that
> >> have memory but only in ZONE_MOVABLE, the objects can be freed to the
> >> sheaf instead of going through the slow path.
> >> 
> >> Signed-off-by: Hao Li <hao.li@linux.dev>
> >> ---
> > 
> > Acked-by: Harry Yoo (Oracle) <harry@kernel.org>
> > 
> >> Hi Vlastimil, this patch depends on a prerequisite patch[1] from a few days
> >> ago. I'm not sure how this should be handled.
> > 
> >> I wonder if Andrew might put them in the same tree.
> 
> > But it also depends on the patch series
> > "[PATCH 0/3] slab: support memoryless nodes with sheaves".
> > 
> > So perhaps better send it to Linus after 7.1-rc1?
> 
> [1] is in mm-hotfixes so it should get to mainline before 7.0 final,

Right.

> so then it's fine to add this to slab updates PR for 7.1-rc1

Sounds great!

> >> [1] https://lore.kernel.org/linux-mm/20260330035941.518186-1-hao.li@linux.dev/
> > 

-- 
Cheers,
Harry / Hyeonggon
Re: [PATCH] slub: use N_NORMAL_MEMORY in can_free_to_pcs to handle remote frees
Posted by Hao Li 2 months, 1 week ago
On Fri, Apr 03, 2026 at 08:14:11PM +0200, Vlastimil Babka (SUSE) wrote:
> On 4/3/26 14:02, Harry Yoo (Oracle) wrote:
> > On Fri, Apr 03, 2026 at 03:37:36PM +0800, Hao Li wrote:
> >> Memory hotplug now keeps N_NORMAL_MEMORY up to date correctly, so make
> >> can_free_to_pcs() use it.
> >> 
> >> As a result, when freeing objects on memoryless nodes, or on nodes that
> >> have memory but only in ZONE_MOVABLE, the objects can be freed to the
> >> sheaf instead of going through the slow path.
> >> 
> >> Signed-off-by: Hao Li <hao.li@linux.dev>
> >> ---
> > 
> > Acked-by: Harry Yoo (Oracle) <harry@kernel.org>

Thanks for Ack!

> > 
> >> Hi Vlastimil, this patch depends on a prerequisite patch[1] from a few days
> >> ago. I'm not sure how this should be handled.
> > 
> >> I wonder if Andrew might put them in the same tree.
> 
> > But it also depends on the patch series
> > "[PATCH 0/3] slab: support memoryless nodes with sheaves".
> > 
> > So perhaps better send it to Linus after 7.1-rc1?
> 
> [1] is in mm-hotfixes so it should get to mainline before 7.0 final, so then
> it's fine to add this to slab updates PR for 7.1-rc1

Sounds good, thanks!

> 
> > Thanks!
> > 
> >> [1] https://lore.kernel.org/linux-mm/20260330035941.518186-1-hao.li@linux.dev/
> > 
> 

-- 
Thanks,
Hao