]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
MINOR: activity: make the memory profiling hash size configurable at build time
authorWilly Tarreau <w@1wt.eu>
Thu, 27 Jun 2024 15:53:18 +0000 (17:53 +0200)
committerWilly Tarreau <w@1wt.eu>
Thu, 27 Jun 2024 16:01:27 +0000 (18:01 +0200)
The MEMPROF_HASH_BITS variable was set to 10 without a possibility to
change it (beyond patching the code). After seeing a few reports already
with "other" being listed and a list with close to 1024 entries, it looks
like it's about time to either increase the hash size, or at least make
it configurable for special cases. As a reminder, in order to remain
fast, the algorithm searches no more than 16 places after the hash, so
when a table is almost full, searches are long and new places are rare.

The present patch just makes it possible to redefine it by passing
"-DMEMPROF_HASH_BITS=11" or "-DMEMPROF_HASH_BITS=12" in CFLAGS, and
moves the definition to defaults.h to make it easier to find. Such
values should be way sufficient for the vast majority of use cases.
Maybe in the future we'd change the default. At least this version
should be backported to ease rebuilds, say, till 2.8 or so.

include/haproxy/activity-t.h
include/haproxy/defaults.h

index 9faeecdb3103f6347ea3f8f4f599c0f91a755a8d..82666d305a74ebdd57bf594a3ebe7fce48882429 100644 (file)
 
 
 #ifdef USE_MEMORY_PROFILING
-/* Elements used by memory profiling. This determines the number of buckets to
- * store stats.
- */
-#define MEMPROF_HASH_BITS 10
-#define MEMPROF_HASH_BUCKETS (1U << MEMPROF_HASH_BITS)
 
 enum memprof_method {
        MEMPROF_METH_UNKNOWN = 0,
index eda346aa2830944e924837e5b4dce6a3abc1b4fe..73e8e0c92ca9bd6b7bde677873fba6175417e7db 100644 (file)
 # define RING_DFLT_QUEUES   6
 #endif
 
+/* Elements used by memory profiling. This determines the number of buckets to
+ * store stats.
+ */
+#ifndef MEMPROF_HASH_BITS
+# define MEMPROF_HASH_BITS 10
+#endif
+#define MEMPROF_HASH_BUCKETS (1U << MEMPROF_HASH_BITS)
+
 /* Let's make DEBUG_STRICT default to 1 to get rid of it in the makefile */
 #ifndef DEBUG_STRICT
 # define DEBUG_STRICT 1