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
This archive was generated by hypermail 2b29 : Sun Oct 07 2001 - 21:00:36 EST