All of lore.kernel.org
 help / color / mirror / Atom feed
From: Hyeonggon Yoo <42.hyeyoo@gmail.com>
To: Matthew Wilcox <willy@infradead.org>
Cc: Christoph Lameter <cl@linux.com>,
	David Rientjes <rientjes@google.com>,
	Joonsoo Kim <iamjoonsoo.kim@lge.com>,
	Andrew Morton <akpm@linux-foundation.org>,
	Vlastimil Babka <vbabka@suse.cz>,
	linux-mm@kvack.org, linux-kernel@vger.kernel.org,
	Jens Axboe <axboe@kernel.dk>
Subject: Re: [RFC PATCH] Introducing lockless cache built on top of slab allocator
Date: Mon, 20 Sep 2021 01:09:38 +0000	[thread overview]
Message-ID: <20210920010938.GA3108@kvm.asia-northeast3-a.c.our-ratio-313919.internal> (raw)
In-Reply-To: <YUeM2J7X/i0CHjrz@casper.infradead.org>

Hello Matthew, Thanks to give me a comment! I appreciate it.

On Sun, Sep 19, 2021 at 08:17:44PM +0100, Matthew Wilcox wrote:
> On Sun, Sep 19, 2021 at 04:42:39PM +0000, Hyeonggon Yoo wrote:
> > It is just simple proof of concept, and not ready for submission yet.
> > There can be wrong code (like wrong gfp flags, or wrong error handling,
> > etc) it is just simple proof of concept. I want comment from you.
> 
> Have you read:
> 
> https://www.usenix.org/legacy/event/usenix01/full_papers/bonwick/bonwick_html/
> The relevant part of that paper is section 3, magazines.  We should have
> low and high water marks for number of objects

I haven't read that before, but after reading it seems not different from
SLAB's percpu queuing.
 
> and we should allocate
> from / free to the slab allocator in batches.  Slab has bulk alloc/free
> APIs already.
> 

There's kmem_cache_alloc_{bulk,free} functions for bulk
allocation. But it's designed for large number of allocation
to reduce locking cost, not for percpu lockless allocation.

Yeah, we can implement lockless cache using kmem_cache_alloc_{bulk, free}
but kmem_cache_alloc_{free,bulk} is not enough.

> I'd rather see this be part of the slab allocator than a separate API.

And I disagree on this. for because most of situation, we cannot
allocate without lock, it is special case for IO polling.

To make it as part of slab allocator, we need to modify existing data
structure. But making it part of slab allocator will be waste of memory
because most of them are not using this.

  reply	other threads:[~2021-09-20  1:09 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-09-19 16:42 [RFC PATCH] Introducing lockless cache built on top of slab allocator Hyeonggon Yoo
2021-09-19 19:17 ` Matthew Wilcox
2021-09-20  1:09   ` Hyeonggon Yoo [this message]
2021-09-20  1:53     ` Matthew Wilcox
2021-09-20  2:54       ` Hyeonggon Yoo
2021-09-20  9:07       ` Vlastimil Babka
2021-09-20 11:55         ` Hyeonggon Yoo
2021-09-20 12:02           ` Vlastimil Babka
2021-09-20 15:55             ` Hyeonggon Yoo
2021-09-20 14:41       ` John Garry
2021-09-20 15:50         ` Hyeonggon Yoo

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=20210920010938.GA3108@kvm.asia-northeast3-a.c.our-ratio-313919.internal \
    --to=42.hyeyoo@gmail.com \
    --cc=akpm@linux-foundation.org \
    --cc=axboe@kernel.dk \
    --cc=cl@linux.com \
    --cc=iamjoonsoo.kim@lge.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-mm@kvack.org \
    --cc=rientjes@google.com \
    --cc=vbabka@suse.cz \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.