From: Ed Tomlinson <tomlins@cam.org>
To: Manfred Spraul <manfred@colorfullife.com>
Cc: linux-mm@kvack.org
Subject: Re: 2.5.39 kmem_cache bug
Date: Sun, 29 Sep 2002 20:20:40 -0400 [thread overview]
Message-ID: <200209292020.40824.tomlins@cam.org> (raw)
In-Reply-To: <3D972828.6010807@colorfullife.com>
On September 29, 2002 12:19 pm, Manfred Spraul wrote:
> Ed Tomlinson wrote:
> > On September 29, 2002 09:52 am, Manfred Spraul wrote:
> >>Ed Tomlinson wrote:
> >>>- if (__kmem_cache_shrink(cachep)) {
> >>>+ /* remove any empty partial pages */
> >>>+ spin_lock_irq(&cachep->spinlock);
> >>>+ while (!cachep->growing) {
> >>>+ struct list_head *p;
> >>>+ slab_t *slabp;
> >>>+
> >>
> >>growing is guaranteed to be false - loop is not necessary.
> >
> > Sort of. Guess since the lock is not dropped if we see !growing
> > it will stay that way as long as we stay locked. So we do need
> > to test growing but only once. Have I understood this correctly?
>
> No. Much simpler:
> There is no synchonization between kmem_cache_destroy and
> kmem_cache_{alloc,free}. The caller must do that.
>
> Both
> x = kmem_cache_create();
> kmem_cache_destroy(x);
> kmem_cache_alloc(x);
>
> and all variante where kmem_cache_alloc runs at the same time as
> kmem_cache_destroy [smp, or just sleeping in gfp] are illegal.
So if growing is set something is seriously wrong...
> > We do seem to agree on most issues. Lets work with this and hopefully we
> > can end up with a firsst class slab implementation that works hand in
> > hand with the vm and helps the whole system perform effectivily.
>
> Yes, lets work together. Implementing & debugging slab is simple [if it
> boots, then it's correct], the design is difficult.
>
> The first problem is the per-cpu array draining. It's needed, too many
> objects can sit in the per-cpu arrays.
> < 2.5.39, the per-cpu arrays can cause more list operations than no
> batching, this is something that must be avoided.
>
> Do you see an alternative to a timer/callback/hook? What's the simplest
> approach to ensure that the callback runs on all cpus? I know Redhat has
> a scalable timer patch, that one would fix the timer to the cpu that
> called add_timer.
Maybe. If we treat the per cpu data as special form of cache we could
use the shrinker callbacks to track how much we have to trim. When the value
exceeds a threshold (set when we setup the callback) we trim. We could
do the test in freeing path in slab.
> My proposal would be a 1 (or 2, or 5) seconds callback, that frees
> 0.2*cc->limit, if there were no allocations from the slab during the
> last interval.
Using the above logic would tie the trimming to vm scanning pressure,
which is probably a good idea.
The patch add shrinker callbacks was posted to linux-mm Sunday and
to lkml on Thursday.
My schedule lets me read and answer a little mail in the mornings (7-8am
EDT). When I get home from work (5pm EDT) I usually have a few hours to
code etc.
Ed
--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@kvack.org. For more info on Linux MM,
see: http://www.linux-mm.org/
next prev parent reply other threads:[~2002-09-30 0:20 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-09-28 20:13 2.5.39 kmem_cache bug John Levon
2002-09-28 20:56 ` Andrew Morton
2002-09-28 21:12 ` Manfred Spraul
2002-09-28 21:23 ` John Levon
2002-09-28 21:35 ` Andrew Morton
2002-09-29 11:45 ` Ed Tomlinson
2002-09-29 12:13 ` Manfred Spraul
2002-09-29 13:15 ` Ed Tomlinson
2002-09-29 13:52 ` Manfred Spraul
2002-09-29 13:53 ` John Levon
[not found] ` <200209291137.48483.tomlins@cam.org>
[not found] ` <3D972828.6010807@colorfullife.com>
2002-09-30 0:20 ` Ed Tomlinson [this message]
2002-09-30 5:55 ` Manfred Spraul
2002-09-30 11:18 ` Ed Tomlinson
2002-09-30 16:33 ` Manfred Spraul
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=200209292020.40824.tomlins@cam.org \
--to=tomlins@cam.org \
--cc=linux-mm@kvack.org \
--cc=manfred@colorfullife.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 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.