Thread (9 messages) 9 messages, 5 authors, 2011-11-16

Re: [patch] slub: fix a code merge error

From: Shaohua Li <hidden>
Date: 2011-11-11 00:24:36
Subsystem: memory management, slab allocator, the rest · Maintainers: Andrew Morton, Vlastimil Babka, Harry Yoo, Linus Torvalds

On Fri, 2011-11-11 at 04:30 +0800, Pekka Enberg wrote:
On Thu, Nov 10, 2011 at 10:18 PM, David Rientjes [off-list ref] wrote:
quoted
On Thu, 10 Nov 2011, Shaohua Li wrote:
quoted
Looks there is a merge error in the slub tree. DEACTIVATE_TO_TAIL != 1.
And this will cause performance regression.

Signed-off-by: Shaohua Li <redacted>
diff --git a/mm/slub.c b/mm/slub.c
index 7d2a996..60e16c4 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1904,7 +1904,8 @@ static void unfreeze_partials(struct kmem_cache *s)
                              if (l == M_PARTIAL)
                                      remove_partial(n, page);
                              else
-                                     add_partial(n, page, 1);
+                                     add_partial(n, page,
+                                             DEACTIVATE_TO_TAIL);

                              l = m;
                      }
Acked-by: David Rientjes <rientjes@google.com>

Not sure where the "merge error" is, though, this is how it was proposed
on linux-mm each time the patch was posted.  Probably needs a better title
and changelog.
Indeed. Please resend with proper subject and changelog with
Christoph's and David's ACKs included.
Subject: slub: use correct parameter to add a page to partial list tail

unfreeze_partials() needs add the page to partial list tail, since such page
hasn't too many free objects. We now explictly use DEACTIVATE_TO_TAIL for this,
while DEACTIVATE_TO_TAIL != 1. This will cause performance regression (eg, more
lock contention in node->list_lock) without below fix.

Signed-off-by: Shaohua Li <redacted>
Acked-by: Christoph Lameter <redacted>
Acked-by: David Rientjes <rientjes@google.com>
diff --git a/mm/slub.c b/mm/slub.c
index 7d2a996..60e16c4 100644
--- a/mm/slub.c
+++ b/mm/slub.c
@@ -1904,7 +1904,8 @@ static void unfreeze_partials(struct kmem_cache *s)
 				if (l == M_PARTIAL)
 					remove_partial(n, page);
 				else
-					add_partial(n, page, 1);
+					add_partial(n, page,
+						DEACTIVATE_TO_TAIL);
 
 				l = m;
 			}


--
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>
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help