[PATCH V4 0/2] mm: FAULT_AROUND_ORDER patchset performance data for powerpc
rusty at rustcorp.com.au
Mon May 19 10:12:46 EST 2014
Hugh Dickins <hughd at google.com> writes:
> On Thu, 15 May 2014, Madhavan Srinivasan wrote:
>> Hi Ingo,
>> Do you have any comments for the latest version of the patchset. If
>> not, kindly can you pick it up as is.
>> With regards
>> > Kirill A. Shutemov with 8c6e50b029 commit introduced
>> > vm_ops->map_pages() for mapping easy accessible pages around
>> > fault address in hope to reduce number of minor page faults.
>> > This patch creates infrastructure to modify the FAULT_AROUND_ORDER
>> > value using mm/Kconfig. This will enable architecture maintainers
>> > to decide on suitable FAULT_AROUND_ORDER value based on
>> > performance data for that architecture. First patch also defaults
>> > FAULT_AROUND_ORDER Kconfig element to 4. Second patch list
>> > out the performance numbers for powerpc (platform pseries) and
>> > initialize the fault around order variable for pseries platform of
>> > powerpc.
> Sorry for not commenting earlier - just reminded by this ping to Ingo.
> I didn't study your numbers, but nowhere did I see what PAGE_SIZE you use.
> arch/powerpc/Kconfig suggests that Power supports base page size of
> 4k, 16k, 64k or 256k.
> I would expect your optimal fault_around_order to depend very much on
> the base page size.
It was 64k, which is what PPC64 uses on all the major distributions.
You really only get a choice of 4k and 64k with 64 bit power.
> Perhaps fault_around_size would provide a more useful default?
That seems to fit. With 4k pages and order 4, you're asking for 64k.
Maddy's result shows 64k is also reasonable for 64k pages.
Perhaps we try to generalize from two data points (a slight improvement
over doing it from 1!), eg:
/* 4 seems good for 4k-page x86, 0 seems good for 64k page ppc64, so: */
unsigned int fault_around_order __read_mostly =
(16 - PAGE_SHIFT < 0 ? 0 : 16 - PAGE_SHIFT);
More information about the Linuxppc-dev