MINOR: pools: increase MAX_BASE_POOLS to 64
authorWilly Tarreau <w@1wt.eu>
Tue, 30 Jun 2020 12:29:02 +0000 (14:29 +0200)
committerWilly Tarreau <w@1wt.eu>
Tue, 21 Jul 2020 13:02:57 +0000 (15:02 +0200)
When not sharing pools (i.e. when building with -DDEBUG_DONT_SHARE_POOLS)
we have about 47 pools right now, while MAX_BASE_POOLS is only 32, meaning
that only the first 32 ones will benefit from a per-thread cache entry.
This totally kills performance when pools are not shared (roughly -20%).

Let's double the limit to gain some margin, and make it possible to set
it as a build option.

It might be useful to backport this to stable versions as they're likely
to be affected as well.

(cherry picked from commit daf8aa62a8d0210f81db5c93235da19d5ed22ab3)
[wt: applied to include/common/memory.h]
Signed-off-by: Willy Tarreau <w@1wt.eu>

include/common/memory.h

index 7d82c75..b3d752c 100644 (file)
@@ -50,7 +50,9 @@
 #define POOL_LINK(pool, item) ((void **)(item))
 #endif
 
-#define MAX_BASE_POOLS 32
+#ifndef MAX_BASE_POOLS
+#define MAX_BASE_POOLS 64
+#endif
 
 struct pool_cache_head {
        struct list list;    /* head of objects in this pool */