On 15 October 2015 at 15:48, Suzuki K. Poulose <Suzuki.Poulose@xxxxxxx> wrote:
On 15/10/15 15:06, Mark Rutland wrote:
Hi,
I have fixed all the nits locally. Thanks for pointing them out.
config FORCE_MAX_ZONEORDER
int
default "14" if (ARM64_64K_PAGES && TRANSPARENT_HUGEPAGE)
+ default "12" if (ARM64_16K_PAGES && TRANSPARENT_HUGEPAGE)
default "11"
I'm a little lost here. How are these numbers derived?
I struggled to find the right value for 16K. Thanks to Steve Capper
for the following explanation. I will add it as a comment.
All allocations from the buddy allocator have to have compound order
strictly less than MAX_ORDER. i.e, the maximum allocation size is
(MAX_ORDER - 1) PAGES. To align with the transparent huge page size,
we get :
(MAX_ORDER - 1) + PAGE_SHIFT = PMD_SHIFT
Which gives us:
MAX_ORDER = PAGE_SHIFT - 3 + PAGE_SHIFT - PAGE_SHIFT + 1
= PAGE_SHIFT - 2
That raises an interesting question about the selection of the value
for 4K. Shouldn't that be 10 instead of 11 ?
Steve ?
Hi,
My understanding is that 11 is a "good minimum" value for the page
allocator with 4KB pages.
(There are references to it being 10 in 2.4 kernels but raised to 11
on 2.6 kernels?)
We need to raise the minimum when we have a 16KB or 64KB PAGE_SIZE to
be able allocate a 32MB or 512MB Transparent HugePages.