• Alexander Shishkin's avatar
    perf/ring_buffer: Use high order allocations for AUX buffers optimistically · 5768402f
    Alexander Shishkin authored
    Currently, the AUX buffer allocator will use high-order allocations
    for PMUs that don't support hardware scatter-gather chaining to ensure
    large contiguous blocks of pages, and always use an array of single
    pages otherwise.
    
    There is, however, a tangible performance benefit in using larger chunks
    of contiguous memory even in the latter case, that comes from not having
    to fetch the next page's address at every page boundary. In particular,
    a task running under Intel PT on an Atom CPU shows 1.5%-2% less runtime
    penalty with a single multi-page output region in snapshot mode (no PMI)
    than with multiple single-page output regions, from ~6% down to ~4%. For
    the snapshot mode it does make a difference as it is intended to run over
    long periods of time.
    
    For this reason, change the allocation policy to always optimistically
    start with the highest possible order when allocating pages for the AUX
    buffer, desceding until the allocation succeeds or order zero allocation
    fails.
    Signed-off-by: default avatarAlexander Shishkin <alexander.shishkin@linux.intel.com>
    Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
    Cc: Andy Lutomirski <luto@kernel.org>
    Cc: Arnaldo Carvalho de Melo <acme@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: H. Peter Anvin <hpa@zytor.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Rik van Riel <riel@surriel.com>
    Cc: Stephane Eranian <eranian@google.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Vince Weaver <vincent.weaver@maine.edu>
    Link: https://lkml.kernel.org/r/20190215114727.62648-2-alexander.shishkin@linux.intel.comSigned-off-by: default avatarIngo Molnar <mingo@kernel.org>
    5768402f
ring_buffer.c 20.9 KB