Messages in this thread | | | Subject | Re: [PATCH for-v3.7 2/2] slub: optimize kmalloc* inlining for GFP_DMA | From | Eric Dumazet <> | Date | Tue, 23 Oct 2012 08:16:55 +0200 |
| |
On Tue, 2012-10-23 at 11:29 +0900, JoonSoo Kim wrote: > 2012/10/22 Christoph Lameter <cl@linux.com>: > > On Sun, 21 Oct 2012, Joonsoo Kim wrote: > > > >> kmalloc() and kmalloc_node() of the SLUB isn't inlined when @flags = __GFP_DMA. > >> This patch optimize this case, > >> so when @flags = __GFP_DMA, it will be inlined into generic code. > > > > __GFP_DMA is a rarely used flag for kmalloc allocators and so far it was > > not considered that it is worth to directly support it in the inlining > > code. > > > > > > Hmm... but, the SLAB already did that optimization for __GFP_DMA. > Almost every kmalloc() is invoked with constant flags value, > so I think that overhead from this patch may be negligible. > With this patch, code size of vmlinux is reduced slightly.
Only because you asked a allyesconfig
GFP_DMA is used for less than 0.1 % of kmalloc() calls, for legacy hardware (from last century)
In fact if you want to reduce even more your vmlinux, you could test
if (__builtin_constant_p(flags) && (flags & SLUB_DMA)) return kmem_cache_alloc_trace(s, flags, size);
to force the call to out of line code.
| |