Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0ceaacc9 authored by Nick Piggin's avatar Nick Piggin Committed by Linus Torvalds
Browse files

[PATCH] Fix up per-cpu page batch sizes



The code to clamp batch sizes to 2^n - 1 went missing and an extra
check got added, which must have been a hunk of the "higer order pcp
batch refills" work sneaking in.

Signed-off-by: default avatarNick Piggin <npiggin@suse.de>
Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
parent 9a405257
Loading
Loading
Loading
Loading
+8 −8
Original line number Diff line number Diff line
@@ -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;
}