debugobjects: Double the per CPU slots
authorThomas Gleixner <tglx@linutronix.de>
Mon, 7 Oct 2024 16:50:19 +0000 (18:50 +0200)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 15 Oct 2024 15:30:33 +0000 (17:30 +0200)
In situations where objects are rapidly allocated from the pool and handed
back, the size of the per CPU pool turns out to be too small.

Double the size of the per CPU pool.

This reduces the kmem cache allocation and free operations during a kernel compile:

           alloc         free
Baseline:    380k           330k
Double size: 295k     245k

Especially the reduction of allocations is important because that happens
in the hot path when objects are initialized.

The maximum increase in per CPU pool memory consumption is about 2.5K per
online CPU, which is acceptable.

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Zhen Lei <thunder.leizhen@huawei.com>
Link: https://lore.kernel.org/all/20241007164914.378676302@linutronix.de
lib/debugobjects.c

index cf704e2bc3013ce1ef6a0877ccd5f41083c94f98..fc9397de5534603f97f97860263da43432b610e4 100644 (file)
@@ -28,7 +28,7 @@
 #define ODEBUG_POOL_SIZE       (64 * ODEBUG_BATCH_SIZE)
 #define ODEBUG_POOL_MIN_LEVEL  (ODEBUG_POOL_SIZE / 4)
 
-#define ODEBUG_POOL_PERCPU_SIZE        (4 * ODEBUG_BATCH_SIZE)
+#define ODEBUG_POOL_PERCPU_SIZE        (8 * ODEBUG_BATCH_SIZE)
 
 #define ODEBUG_CHUNK_SHIFT     PAGE_SHIFT
 #define ODEBUG_CHUNK_SIZE      (1 << ODEBUG_CHUNK_SHIFT)