From: Joonsoo Kim <iamjoonsoo.kim@lge.com>
To: Andrew Morton <akpm@linux-foundation.org>
Cc: Christoph Lameter <cl@linux.com>,
Pekka Enberg <penberg@kernel.org>,
David Rientjes <rientjes@google.com>,
linux-mm@kvack.org, linux-kernel@vger.kernel.org,
Vladimir Davydov <vdavydov@parallels.com>,
Joonsoo Kim <iamjoonsoo.kim@lge.com>
Subject: [PATCH v3 0/9] clean-up and remove lockdep annotation in SLAB
Date: Tue, 1 Jul 2014 17:27:29 +0900 [thread overview]
Message-ID: <1404203258-8923-1-git-send-email-iamjoonsoo.kim@lge.com> (raw)
This patchset does some clean-up and tries to remove lockdep annotation.
Patches 1~2 are just for really really minor improvement.
Patches 3~9 are for clean-up and removing lockdep annotation.
There are two cases that lockdep annotation is needed in SLAB.
1) holding two node locks
2) holding two array cache(alien cache) locks
I looked at the code and found that we can avoid these cases without
any negative effect.
1) occurs if freeing object makes new free slab and we decide to
destroy it. Although we don't need to hold the lock during destroying
a slab, current code do that. Destroying a slab without holding the lock
would help the reduction of the lock contention. To do it, I change the
implementation that new free slab is destroyed after releasing the lock.
2) occurs on similar situation. When we free object from non-local node,
we put this object to alien cache with holding the alien cache lock.
If alien cache is full, we try to flush alien cache to proper node cache,
and, in this time, new free slab could be made. Destroying it would be
started and we will free metadata object which comes from another node.
In this case, we need another node's alien cache lock to free object.
This forces us to hold two array cache locks and then we need lockdep
annotation although they are always different locks and deadlock cannot
be possible. To prevent this situation, I use same way as 1).
In this way, we can avoid 1) and 2) cases, and then, can remove lockdep
annotation. As short stat noted, this makes SLAB code much simpler.
All patches of this series got Ack from Christoph Lamter on previous
iteration, and there is no big change from previous iteration. Just
one clean-up patch is dropped, because it seems not good clean-up.
Others are just rebased on current linux-next.
Thanks.
Joonsoo Kim (9):
slab: add unlikely macro to help compiler
slab: move up code to get kmem_cache_node in free_block()
slab: defer slab_destroy in free_block()
slab: factor out initialization of arracy cache
slab: introduce alien_cache
slab: use the lock on alien_cache, instead of the lock on array_cache
slab: destroy a slab without holding any alien cache lock
slab: remove a useless lockdep annotation
slab: remove BAD_ALIEN_MAGIC
mm/slab.c | 377 ++++++++++++++++++++++---------------------------------------
mm/slab.h | 2 +-
2 files changed, 137 insertions(+), 242 deletions(-)
--
1.7.9.5
--
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/ .
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next reply other threads:[~2014-07-01 8:22 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-07-01 8:27 Joonsoo Kim [this message]
2014-07-01 8:27 ` [PATCH v3 1/9] slab: add unlikely macro to help compiler Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 2/9] slab: move up code to get kmem_cache_node in free_block() Joonsoo Kim
2014-07-01 22:21 ` David Rientjes
2014-07-02 0:39 ` Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 3/9] slab: defer slab_destroy " Joonsoo Kim
2014-07-01 22:25 ` David Rientjes
2014-07-02 0:44 ` Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 4/9] slab: factor out initialization of arracy cache Joonsoo Kim
2014-07-01 22:26 ` David Rientjes
2014-07-02 0:46 ` Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 5/9] slab: introduce alien_cache Joonsoo Kim
2014-07-01 22:15 ` Andrew Morton
2014-07-02 0:48 ` Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 6/9] slab: use the lock on alien_cache, instead of the lock on array_cache Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 7/9] slab: destroy a slab without holding any alien cache lock Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 8/9] slab: remove a useless lockdep annotation Joonsoo Kim
2014-07-01 8:27 ` [PATCH v3 9/9] slab: remove BAD_ALIEN_MAGIC Joonsoo Kim
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=1404203258-8923-1-git-send-email-iamjoonsoo.kim@lge.com \
--to=iamjoonsoo.kim@lge.com \
--cc=akpm@linux-foundation.org \
--cc=cl@linux.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=penberg@kernel.org \
--cc=rientjes@google.com \
--cc=vdavydov@parallels.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;
as well as URLs for NNTP newsgroup(s).