mbox series

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

Message ID 20190903160430.1368-1-lpf.vector@gmail.com (mailing list archive)
Headers show
Series mm, slab: Make kmalloc_info[] contain all types of names | expand

Message

Pengfei Li Sept. 3, 2019, 4:04 p.m. UTC
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

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(-)

Comments

Christoph Lameter (Ampere) Sept. 4, 2019, 7:27 p.m. UTC | #1
On Wed, 4 Sep 2019, Pengfei Li wrote:

> There are three types of kmalloc, KMALLOC_NORMAL, KMALLOC_RECLAIM
> and KMALLOC_DMA.

I only got a few patches of this set. Can I see the complete patchset
somewhere?
Pengfei Li Sept. 5, 2019, 12:40 a.m. UTC | #2
On Thu, Sep 5, 2019 at 3:27 AM Christopher Lameter <cl@linux.com> wrote:
>
> On Wed, 4 Sep 2019, Pengfei Li wrote:
>
> > There are three types of kmalloc, KMALLOC_NORMAL, KMALLOC_RECLAIM
> > and KMALLOC_DMA.
>
> I only got a few patches of this set. Can I see the complete patchset
> somewhere?

Yes, you can get the patches from
https://patchwork.kernel.org/cover/11128325/ or
https://lore.kernel.org/patchwork/cover/1123412/

Hope you like it :)
Vlastimil Babka Sept. 5, 2019, 12:25 p.m. UTC | #3
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(-)
>
Pengfei Li Sept. 5, 2019, 1:51 p.m. UTC | #4
On Thu, Sep 5, 2019 at 8:25 PM Vlastimil Babka <vbabka@suse.cz> wrote:
>
> 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

Thank you for your comments.
Yes, kmalloc-xxx are only created at boot time.

> these time savings (is it in CPU cycles?) will be noticeable at all.

Yes, it is CPU cycles.

> 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.
>

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(-)
> >
>