Re: [RFC PATCH] mm, slab: Reduce space complexity of alien_cache using rbtree

From: Christoph Lameter
Date: Mon Oct 04 2021 - 10:11:36 EST


On Sun, 3 Oct 2021, Hyeonggon Yoo wrote:

> As remote node allocation isn't that frequent and better avoided,
> this patch tries to compromise some execution time for memory usage.

Remote node allocation is typical for large memory loads and essential to
balance the memory allocation over multiple nodes. Large NUMA systems
exist because the memory requirements of the application cannot be
satisfied by what a single node has to offer and usually code threads from
multiple nodes may access remote memory.


> This patch introduces red-black tree for alien cache. Tree nodes are
> allocated at cache creation and the pool of tree nodes is same size with
> cache's limit.

??? A red-black tree?? Gosh how much will performance suffer now? A lookup
for every allocation?

> Remove init_reap_node, next_reap_node and related variables
> introduced by commit 8fce4d8e3b9e ("[PATCH] slab: Node rotor for freeing
> alien caches and remote per cpu pages."), Because it has only one tree
> for all remote nodes.

Rotors to spread the memory allocated are essential for the performance
of large memory loads! Memory must be spread evenly otherwise memory
accesses will overload a single node.