From: Christopher Lameter <cl@linux.com>
To: Mikulas Patocka <mpatocka@redhat.com>
Cc: Matthew Wilcox <willy@infradead.org>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>,
Andrew Morton <akpm@linux-foundation.org>,
linux-mm@kvack.org, dm-devel@redhat.com,
Mike Snitzer <msnitzer@redhat.com>
Subject: Re: [PATCH] slab: introduce the flag SLAB_MINIMIZE_WASTE
Date: Wed, 21 Mar 2018 10:35:46 -0500 (CDT) [thread overview]
Message-ID: <alpine.DEB.2.20.1803211024220.2175@nuc-kabylake> (raw)
In-Reply-To: <alpine.LRH.2.02.1803201740280.21066@file01.intranet.prod.int.rdu2.redhat.com>
On Tue, 20 Mar 2018, Mikulas Patocka wrote:
> > > Another problem with slub_max_order is that it would pad all caches to
> > > slub_max_order, even those that already have a power-of-two size (in that
> > > case, the padding is counterproductive).
> >
> > No it does not. Slub will calculate the configuration with the least byte
> > wastage. It is not the standard order but the maximum order to be used.
> > Power of two caches below PAGE_SIZE will have order 0.
>
> Try to boot with slub_max_order=10 and you can see this in /proc/slabinfo:
> kmalloc-8192 352 352 8192 32 64 : tunables 0 0 0 : slabdata 11 11 0
Yes it tries to create a slab size that will accomodate the minimum
objects per slab.
> So it rounds up power-of-two sizes to high orders unnecessarily. Without
> slub_max_order=10, the number of pages for the kmalloc-8192 cache is just
> 8.
The kmalloc-8192 has 4 objects per slab on my system which means an
allocation size of 32k = order 4.
In this case 4 objects fit tightly into a slab. There is no waste.
But then I thought you were talking about manually created slabs not
about the kmalloc array?
> I observe the same pathological rounding in dm-bufio caches.
>
> > There are some corner cases where extra metadata is needed per object or
> > per page that will result in either object sizes that are no longer a
> > power of two or in page sizes smaller than the whole page. Maybe you have
> > a case like that? Can you show me a cache that has this issue?
>
> Here I have a patch set that changes the dm-bufio subsystem to support
> buffer sizes that are not a power of two:
> http://people.redhat.com/~mpatocka/patches/kernel/dm-bufio-arbitrary-sector-size/
>
> I need to change the slub cache to minimize wasted space - i.e. when
> asking for a slab cache for 640kB objects, the slub system currently
> allocates 1MB per object and 384kB is wasted. This is the reason why I'm
> making this patch.
You should not be using the slab allocators for these. Allocate higher
order pages or numbers of consecutive smaller pagess from the page
allocator. The slab allocators are written for objects smaller than page
size.
> > > BTW. the function "order_store" in mm/slub.c modifies the structure
> > > kmem_cache without taking any locks - is it a bug?
> >
> > The kmem_cache structure was just allocated. Only one thread can access it
> > thus no locking is necessary.
>
> No - order_store is called when writing to /sys/kernel/slab/<cache>/order
> - you can modify order for any existing cache - and the modification
> happens without any locking.
Well it still does not matter. The size of the order of slab pages
can be dynamic even within a slab. You can have pages of varying sizes.
What kind of problem could be caused here?
next prev parent reply other threads:[~2018-03-21 15:35 UTC|newest]
Thread overview: 66+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-03-20 17:25 Mikulas Patocka
2018-03-20 17:35 ` Matthew Wilcox
2018-03-20 17:54 ` Christopher Lameter
2018-03-20 19:22 ` Mikulas Patocka
2018-03-20 20:42 ` Christopher Lameter
2018-03-20 22:02 ` Mikulas Patocka
2018-03-21 15:35 ` Christopher Lameter [this message]
2018-03-21 16:25 ` Mikulas Patocka
2018-03-21 17:10 ` Matthew Wilcox
2018-03-21 17:30 ` Christopher Lameter
2018-03-21 17:39 ` Christopher Lameter
2018-03-21 17:49 ` Matthew Wilcox
2018-03-21 18:01 ` Christopher Lameter
2018-03-21 18:23 ` Mikulas Patocka
2018-03-21 18:40 ` Christopher Lameter
2018-03-21 18:55 ` Mikulas Patocka
2018-03-21 18:55 ` Matthew Wilcox
2018-03-21 18:58 ` Christopher Lameter
2018-03-21 19:25 ` Mikulas Patocka
2018-03-21 18:36 ` Mikulas Patocka
2018-03-21 18:57 ` Christopher Lameter
2018-03-21 19:19 ` Mikulas Patocka
2018-03-21 20:09 ` Christopher Lameter
2018-03-21 20:37 ` Mikulas Patocka
2018-03-23 15:10 ` Christopher Lameter
2018-03-23 15:31 ` Mikulas Patocka
2018-03-23 15:48 ` Christopher Lameter
2018-04-13 9:22 ` Vlastimil Babka
2018-04-13 15:10 ` Mike Snitzer
2018-04-16 12:38 ` Vlastimil Babka
2018-04-16 14:27 ` Mike Snitzer
2018-04-16 14:37 ` Mikulas Patocka
2018-04-16 14:46 ` Mike Snitzer
2018-04-16 14:57 ` Mikulas Patocka
2018-04-16 15:18 ` Christopher Lameter
2018-04-16 15:25 ` Mikulas Patocka
2018-04-16 15:45 ` Christopher Lameter
2018-04-16 19:36 ` Mikulas Patocka
2018-04-16 19:53 ` Vlastimil Babka
2018-04-16 21:01 ` Mikulas Patocka
2018-04-17 14:40 ` Christopher Lameter
2018-04-17 18:53 ` Mikulas Patocka
2018-04-17 21:42 ` Christopher Lameter
2018-04-17 14:49 ` Christopher Lameter
2018-04-17 14:47 ` Christopher Lameter
2018-04-16 19:32 ` [PATCH RESEND] " Mikulas Patocka
2018-04-17 14:45 ` Christopher Lameter
2018-04-17 16:16 ` Vlastimil Babka
2018-04-17 16:38 ` Christopher Lameter
2018-04-17 19:09 ` Mikulas Patocka
2018-04-17 17:26 ` Mikulas Patocka
2018-04-17 19:13 ` Vlastimil Babka
2018-04-17 19:06 ` Mikulas Patocka
2018-04-18 14:55 ` Christopher Lameter
2018-04-25 21:04 ` Mikulas Patocka
2018-04-25 23:24 ` Mikulas Patocka
2018-04-26 19:01 ` Christopher Lameter
2018-04-26 21:09 ` Mikulas Patocka
2018-04-27 16:41 ` Christopher Lameter
2018-04-27 19:19 ` Mikulas Patocka
2018-06-13 17:01 ` Mikulas Patocka
2018-06-13 18:16 ` Christoph Hellwig
2018-06-13 18:53 ` Mikulas Patocka
2018-04-26 18:51 ` Christopher Lameter
2018-04-16 19:38 ` Vlastimil Babka
2018-04-16 21:04 ` Mikulas Patocka
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=alpine.DEB.2.20.1803211024220.2175@nuc-kabylake \
--to=cl@linux.com \
--cc=akpm@linux-foundation.org \
--cc=dm-devel@redhat.com \
--cc=iamjoonsoo.kim@lge.com \
--cc=linux-mm@kvack.org \
--cc=mpatocka@redhat.com \
--cc=msnitzer@redhat.com \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=willy@infradead.org \
/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