Messages in this thread |  | | | Subject | Re: [PATCH 4/5] kmemtrace: SLUB hooks. | | From | Pekka Enberg <> | | Date | Mon, 11 Aug 2008 17:16:17 +0300 |
| |
On Mon, 2008-08-11 at 09:13 -0500, Christoph Lameter wrote: > Pekka Enberg wrote: > > On Mon, 2008-08-11 at 09:04 -0500, Christoph Lameter wrote: > >> Eduard - Gabriel Munteanu wrote: > >> > >> > >> > >>> static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) > >>> { > >>> + void *ret; > >>> + > >>> if (__builtin_constant_p(size) && > >>> size <= PAGE_SIZE && !(flags & SLUB_DMA)) { > >>> struct kmem_cache *s = kmalloc_slab(size); > >>> @@ -239,7 +280,13 @@ static __always_inline void *kmalloc_node(size_t size, gfp_t flags, int node) > >>> if (!s) > >>> return ZERO_SIZE_PTR; > >>> > >>> - return kmem_cache_alloc_node(s, flags, node); > >>> + ret = kmem_cache_alloc_node_notrace(s, flags, node); > >>> + > >>> + kmemtrace_mark_alloc_node(KMEMTRACE_TYPE_KMALLOC, > >>> + _THIS_IP_, ret, > >>> + size, s->size, flags, node); > >>> + > >>> + return ret; > >> You could simplify the stuff in slub.h if you would fall back to the uninlined > >> functions in the case that kmemtrace is enabled. IMHO adding additional inline > >> code here does grow these function to a size where inlining is not useful anymore. > > > > So, if CONFIG_KMEMTRACE is enabled, make the inlined version go away > > completely? I'm okay with that though I wonder if that means we now take > > a performance hit when CONFIG_KMEMTRACE is enabled but tracing is > > disabled at run-time... > > We already take a performance hit because of the additional function calls. > > With the above approach the kernel binary will grow significantly because you > are now inserting an additional function call at all call sites.
The function call is supposed to go away when we convert kmemtrace to use Mathieu's markers but I suppose even then we have a problem with inlining?
|  |