On Tue, 2 Apr 2024, Ming Yang wrote:
> The key point of above allocation flow is: the slab should be alloced
> from the partial of other node first, instead of the buddy system of
> other node directly.
If you use GFP_THISNODE then you will trigger a reclaim pass on the remote
node. That could generate a performance regression.
We already support this kind of behavior via the node_reclaim /
zone_reclaiom setting in procfs. Please use that.
The remote buildup of the partial pages can be addressed by changing the
remote_node_defrag_ratio in the slabs. This will make slub scan remote
nodes for partial slabs before going into the page allocator.
On 4/4/24 9:12 PM, Christoph Lameter (Ampere) wrote:
> On Tue, 2 Apr 2024, Ming Yang wrote:
>
>> The key point of above allocation flow is: the slab should be alloced
>> from the partial of other node first, instead of the buddy system of
>> other node directly.
>
>
> If you use GFP_THISNODE then you will trigger a reclaim pass on the remote
> node. That could generate a performance regression.
Note the alternative approach I merged doesn't have this issue because it
uses GFP_NOWAIT for that __GFP_THISNODE attempt.
https://lore.kernel.org/all/[email protected]/
> We already support this kind of behavior via the node_reclaim /
> zone_reclaiom setting in procfs. Please use that.
>
> The remote buildup of the partial pages can be addressed by changing the
> remote_node_defrag_ratio in the slabs. This will make slub scan remote
> nodes for partial slabs before going into the page allocator.
>
>