• Anton Blanchard's avatar
    powerpc: Move 64bit heap above 1TB on machines with 1TB segments · 8bbde7a7
    Anton Blanchard authored
    If we are using 1TB segments and we are allowed to randomise the heap, we can
    put it above 1TB so it is backed by a 1TB segment. Otherwise the heap will be
    in the bottom 1TB which always uses 256MB segments and this may result in a
    performance penalty.
    
    This functionality is disabled when heap randomisation is turned off:
    
    echo 1 > /proc/sys/kernel/randomize_va_space
    
    which may be useful when trying to allocate the maximum amount of 16M or 16G
    pages.
    
    On a microbenchmark that repeatedly touches 32GB of memory with a stride of
    256MB + 4kB (designed to stress 256MB segments while still mapping nicely into
    the L1 cache), we see the improvement:
    
    Force malloc to use heap all the time:
    # export MALLOC_MMAP_MAX_=0 MALLOC_TRIM_THRESHOLD_=-1
    
    Disable heap randomization:
    # echo 1 > /proc/sys/kernel/randomize_va_space
    # time ./test
    12.51s
    
    Enable heap randomization:
    # echo 2 > /proc/sys/kernel/randomize_va_space
    # time ./test
    1.70s
    Signed-off-by: default avatarAnton Blanchard <anton@samba.org>
    Signed-off-by: default avatarBenjamin Herrenschmidt <benh@kernel.crashing.org>
    8bbde7a7
process.c 28.8 KB