From: Vlastimil Babka <vbabka@suse.cz>
To: Mikulas Patocka <mpatocka@redhat.com>,
Dave Chinner <david@fromorbit.com>,
"Darrick J. Wong" <djwong@kernel.org>,
linux-xfs@vger.kernel.org, Christoph Hellwig <hch@infradead.org>
Cc: Pedro Falcato <pedro.falcato@gmail.com>,
Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Andrew Morton <akpm@linux-foundation.org>,
zkabelac@redhat.com, Roman Gushchin <roman.gushchin@linux.dev>,
Hyeonggon Yoo <42.hyeyoo@gmail.com>,
linux-mm@kvack.org
Subject: Re: slab warning: kmem_cache of name 'dm_bufio_buffer' already exists
Date: Fri, 8 Nov 2024 11:08:40 +0100 [thread overview]
Message-ID: <dae2f548-cc2d-42ac-9a01-7382958001a7@suse.cz> (raw)
In-Reply-To: <58fce0d4-9074-3d98-5a1b-970371f0c23c@redhat.com>
On 11/6/24 22:22, Mikulas Patocka wrote:
>
>> BTW, what benefits do you get from creating own kmem caches instead of using
>> kmalloc()? If it's just alignment, if you round up the intended size to
>> power of two, there's implicit kmalloc alignment guarantee.
>
> See the function xfs_buf_alloc_kmem - it allocates a buffer using kmalloc,
> tests if the buffer crosses a page boundary, and if it does, the code
> falls back to xfs_buf_alloc_pages.
>
> Do you think that it can be simplified to just allocate a buffer and NOT
> check for page crossing?
Right, IIRC xfs was one of the usecases that prompted us towards defining
the kmalloc alignment guarantees, which was around 2019.
So today, kmalloc() allocations will not cross a page boundary if the
requested size is lower than page size, and it's a power-of-two value. Even
if SLUB debugging is enabled (before the alignment became guaranteed, it
would happen naturally, and only be violated by either using SLOB, or
enabling SLUB debugging).
xfs_buf_alloc_kmem() could be thus simplified.
>> AFAICS there's some alignment for c->slab_cache in
>> dm_bufio_client_create()
>
> There are two slab caches - one for the dm_buffer structure and one for
> the buffer data (if the buffer size is less than a page).
>
>> In case the allocations have odd sizes without any such alignment
>> (the case of c->slab_buffer?) separate size-specific caches can result in
>> better packing, but that should only matter if you expect many/long-lived
>> objects to be allocated.
>
> The cache for the dm_buffer structure is there so that it utilizes memory
> better. Yes - there may be a lot of long-lived dm_buffers in memory.
OK.
> Mikulas
>
next prev parent reply other threads:[~2024-11-08 10:08 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-11-06 11:19 Mikulas Patocka
2024-11-06 11:34 ` Vlastimil Babka
2024-11-06 12:05 ` Mikulas Patocka
2024-11-06 16:28 ` Vlastimil Babka
2024-11-06 21:22 ` Mikulas Patocka
2024-11-08 9:56 ` Vlastimil Babka
2024-11-08 11:13 ` Hyeonggon Yoo
2024-11-08 11:21 ` Vlastimil Babka
2024-11-08 13:47 ` Pedro Falcato
2024-11-08 10:08 ` Vlastimil Babka [this message]
2024-11-08 14:56 ` Christoph Hellwig
2024-11-08 16:49 ` Yang Shi
2024-11-08 17:00 ` Vlastimil Babka
2024-11-08 17:43 ` Yang Shi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=dae2f548-cc2d-42ac-9a01-7382958001a7@suse.cz \
--to=vbabka@suse.cz \
--cc=42.hyeyoo@gmail.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=david@fromorbit.com \
--cc=djwong@kernel.org \
--cc=hch@infradead.org \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-mm@kvack.org \
--cc=linux-xfs@vger.kernel.org \
--cc=mpatocka@redhat.com \
--cc=pedro.falcato@gmail.com \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=roman.gushchin@linux.dev \
--cc=zkabelac@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox