Re: [PATCH 0/5] mm, slab: Make kmalloc_info[] contain all types of names

From: Vlastimil Babka
Date: Thu Sep 05 2019 - 08:25:23 EST


On 9/3/19 6:04 PM, Pengfei Li wrote:
> There are three types of kmalloc, KMALLOC_NORMAL, KMALLOC_RECLAIM
> and KMALLOC_DMA.
>
> The name of KMALLOC_NORMAL is contained in kmalloc_info[].name,
> but the names of KMALLOC_RECLAIM and KMALLOC_DMA are dynamically
> generated by kmalloc_cache_name().
>
> Patch1 predefines the names of all types of kmalloc to save
> the time spent dynamically generating names.
>
> The other 4 patches did some cleanup work.
>
> These changes make sense, and the time spent by new_kmalloc_cache()
> has been reduced by approximately 36.3%.
>
> Time spent by
> new_kmalloc_cache()
> 5.3-rc7 66264
> 5.3-rc7+patch 42188

Note that the caches are created only once upon boot, so I doubt that
these time savings (is it in CPU cycles?) will be noticeable at all. But
diffstat looks ok, and it avoids using kmalloc() (via kasprintf()) to
allocate names for kmalloc(), so in that sense I think it's worthwhile
to consider. Thanks.

> Pengfei Li (5):
> mm, slab: Make kmalloc_info[] contain all types of names
> mm, slab_common: Remove unused kmalloc_cache_name()
> mm, slab: Remove unused kmalloc_size()
> mm, slab_common: Make 'type' is enum kmalloc_cache_type
> mm, slab_common: Make initializing KMALLOC_DMA start from 1
>
> include/linux/slab.h | 20 ---------
> mm/slab.c | 7 +--
> mm/slab.h | 2 +-
> mm/slab_common.c | 101 +++++++++++++++++++++++--------------------
> 4 files changed, 59 insertions(+), 71 deletions(-)
>