Currently, we account radix-tree nodes used for linking tcache pages to memcg/kmem, because every kmem allocation is accounted to the current memcg unless it is marked as __GFP_NOACCOUNT. As a result, as tcache gets filled by a container, the container's memory usage will grow too due to the above-mentioned radix-tree nodes. It might even kill the container if there is enough free memory on the host.
Since these radix-tree nodes belong to the host, as well as tcache pages, and are evicted only on global memory pressure, we shouldn't account them to memcg. https://jira.sw.ru/browse/PSBM-35205 Signed-off-by: Vladimir Davydov <[email protected]> --- mm/tcache.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mm/tcache.c b/mm/tcache.c index b078c84f9564..2d8291f06948 100644 --- a/mm/tcache.c +++ b/mm/tcache.c @@ -311,12 +311,12 @@ static struct tcache_node *tcache_alloc_node(void) { struct tcache_node *node; - node = kzalloc(sizeof(*node), TCACHE_GFP_MASK); + node = kzalloc(sizeof(*node), TCACHE_GFP_MASK | __GFP_NOACCOUNT); if (!node) return NULL; kref_init(&node->kref); - INIT_RADIX_TREE(&node->page_tree, TCACHE_GFP_MASK); + INIT_RADIX_TREE(&node->page_tree, TCACHE_GFP_MASK | __GFP_NOACCOUNT); spin_lock_init(&node->tree_lock); return node; -- 2.1.4 _______________________________________________ Devel mailing list [email protected] https://lists.openvz.org/mailman/listinfo/devel
