From 95eaaca93d326d7fefa5288502d52f1a77d55889 Mon Sep 17 00:00:00 2001 From: Nick Piggin Date: Sun, 4 Dec 2005 13:55:25 +1100 Subject: [PATCH] --- yaml --- r: 14967 b: refs/heads/master c: 0ceaacc9785fedc500e19b024d606a82a23f5372 h: refs/heads/master i: 14965: 666a538fd1136101de069d263e362398b4cb7e20 14963: 61cb232601bb0a1c67767a1d4045c932ee8035e1 14959: 012496fee8179c1af3c8e97b1bc995a1feaebefb v: v3 --- [refs] | 2 +- trunk/mm/page_alloc.c | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/[refs] b/[refs] index 9ded32873f83..8ac257c0478b 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 9a40525788a1b692ee0fc780a8cdb2ac808de1b0 +refs/heads/master: 0ceaacc9785fedc500e19b024d606a82a23f5372 diff --git a/trunk/mm/page_alloc.c b/trunk/mm/page_alloc.c index b257720edfc8..3b21a13d841c 100644 --- a/trunk/mm/page_alloc.c +++ b/trunk/mm/page_alloc.c @@ -1772,16 +1772,16 @@ static int __devinit zone_batchsize(struct zone *zone) batch = 1; /* - * We will be trying to allcoate bigger chunks of contiguous - * memory of the order of fls(batch). This should result in - * better cache coloring. + * Clamp the batch to a 2^n - 1 value. Having a power + * of 2 value was found to be more likely to have + * suboptimal cache aliasing properties in some cases. * - * A sanity check also to ensure that batch is still in limits. + * For example if 2 tasks are alternately allocating + * batches of pages, one task can end up with a lot + * of pages of one half of the possible page colors + * and the other with pages of the other colors. */ - batch = (1 << fls(batch + batch/2)); - - if (fls(batch) >= (PAGE_SHIFT + MAX_ORDER - 2)) - batch = PAGE_SHIFT + ((MAX_ORDER - 1 - PAGE_SHIFT)/2); + batch = (1 << (fls(batch + batch/2)-1)) - 1; return batch; }