* [patch 1/2]slub: add slab with one free object to partial list tail
@ 2011-08-23 0:36 Shaohua Li
2011-08-23 1:48 ` Shaohua Li
0 siblings, 1 reply; 3+ messages in thread
From: Shaohua Li @ 2011-08-23 0:36 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-mm, lkml, cl, penberg, Shi, Alex, Chen, Tim C
The slab has just one free object, adding it to partial list head doesn't make
sense. And it can cause lock contentation. For example,
1. CPU takes the slab from partial list
2. fetch an object
3. switch to another slab
4. free an object, then the slab is added to partial list again
In this way n->list_lock will be heavily contended.
In fact, Alex had a hackbench regression. 3.1-rc1 performance drops about 70%
against 3.0. This patch fixes it.
Reported-by: Alex Shi <alex.shi@intel.com>
Signed-off-by: Shaohua Li <shli@kernel.org>
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
---
mm/slub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux/mm/slub.c
===================================================================
--- linux.orig/mm/slub.c 2011-08-15 09:55:21.000000000 +0800
+++ linux/mm/slub.c 2011-08-23 08:13:54.000000000 +0800
@@ -2377,7 +2377,7 @@ static void __slab_free(struct kmem_cach
*/
if (unlikely(!prior)) {
remove_full(s, page);
- add_partial(n, page, 0);
+ add_partial(n, page, 1);
stat(s, FREE_ADD_PARTIAL);
}
}
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [patch 1/2]slub: add slab with one free object to partial list tail
2011-08-23 0:36 [patch 1/2]slub: add slab with one free object to partial list tail Shaohua Li
@ 2011-08-23 1:48 ` Shaohua Li
2011-08-23 14:26 ` Christoph Lameter
0 siblings, 1 reply; 3+ messages in thread
From: Shaohua Li @ 2011-08-23 1:48 UTC (permalink / raw)
To: Andrew Morton; +Cc: linux-mm, lkml, cl, penberg, Shi, Alex, Chen, Tim C
On Tue, 2011-08-23 at 08:36 +0800, Shaohua Li wrote:
> The slab has just one free object, adding it to partial list head doesn't make
> sense. And it can cause lock contentation. For example,
> 1. CPU takes the slab from partial list
> 2. fetch an object
> 3. switch to another slab
> 4. free an object, then the slab is added to partial list again
> In this way n->list_lock will be heavily contended.
> In fact, Alex had a hackbench regression. 3.1-rc1 performance drops about 70%
> against 3.0. This patch fixes it.
updated the change log a little bit. My apologize to not mention Alex's credit.
Thanks,
Shaohua
The slab has just one free object, adding it to partial list head doesn't make
sense. And it can cause lock contentation. For example,
1. CPU takes the slab from partial list
2. fetch an object
3. switch to another slab
4. free an object, then the slab is added to partial list again
In this way n->list_lock will be heavily contended.
In fact, Alex had a hackbench regression. 3.1-rc1 performance drops about 70%
against 3.0. This patch fixes it. Thanks Alex to bisect the issue to be a slub
regression and collect perf data.
Reported-by: Alex Shi <alex.shi@intel.com>
Signed-off-by: Shaohua Li <shli@kernel.org>
Signed-off-by: Shaohua Li <shaohua.li@intel.com>
---
mm/slub.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
Index: linux/mm/slub.c
===================================================================
--- linux.orig/mm/slub.c 2011-08-15 09:55:21.000000000 +0800
+++ linux/mm/slub.c 2011-08-23 08:13:54.000000000 +0800
@@ -2377,7 +2377,7 @@ static void __slab_free(struct kmem_cach
*/
if (unlikely(!prior)) {
remove_full(s, page);
- add_partial(n, page, 0);
+ add_partial(n, page, 1);
stat(s, FREE_ADD_PARTIAL);
}
}
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [patch 1/2]slub: add slab with one free object to partial list tail
2011-08-23 1:48 ` Shaohua Li
@ 2011-08-23 14:26 ` Christoph Lameter
0 siblings, 0 replies; 3+ messages in thread
From: Christoph Lameter @ 2011-08-23 14:26 UTC (permalink / raw)
To: Shaohua Li; +Cc: Andrew Morton, linux-mm, lkml, penberg, Shi, Alex, Chen, Tim C
On Tue, 23 Aug 2011, Shaohua Li wrote:
> Reported-by: Alex Shi <alex.shi@intel.com> Signed-off-by: Shaohua Li
> <shli@kernel.org> Signed-off-by: Shaohua Li <shaohua.li@intel.com>
Acked-by: Christoph Lameter <cl@linux.com>
--
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/ .
Fight unfair telecom internet charges in Canada: sign http://stopthemeter.ca/
Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2011-08-23 14:26 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-23 0:36 [patch 1/2]slub: add slab with one free object to partial list tail Shaohua Li
2011-08-23 1:48 ` Shaohua Li
2011-08-23 14:26 ` Christoph Lameter
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).