[RFC][PATCH]Small Minor optimization to kmem_cache_estimate

From: BALBIR SINGH (balbir.singh@wipro.com)
Date: Fri Oct 05 2001 - 06:34:21 EST


A small minor optimization in kmem_cache_estimate() slab.c

The patch below saves some CPU cycles, especially when the value of size
is small. This is against 2.4.2-2.

--- slab.c.org Fri Oct 5 16:09:39 2001
+++ slab.c Fri Oct 5 16:46:34 2001
@@ -386,10 +386,10 @@
                base = sizeof(slab_t);
                extra = sizeof(kmem_bufctl_t);
        }
- i = 0;
+ i = (wastage - base)/(size + extra);
        while (i*size + L1_CACHE_ALIGN(base+i*extra) <= wastage)
                i++;
- if (i > 0)
+ while (i*size + L1_CACHE_ALIGN(base+i*extra) > wastage)
                i--;

instead of looping through to get the right value, we make a guess
(mathematically) and move a bit to get the correct value.

Hey, I remember reading the Newton-Raphson method in school.

I verified the number of objects per slab is the same in both cases.
This patch may not improve the performance of your CPU by a great amount,
but when there is a faster way to do things, why live with the slower one.

NOTE: The code hardly does one loop in both the while statements.

Comments,
Balbir



-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/



This archive was generated by hypermail 2b29 : Sun Oct 07 2001 - 21:00:36 EST