• Dev Jain's avatar
    selftests/mm: mremap_test: optimize using pre-filled random array and memcpy · c7876a0c
    Dev Jain authored
    Patch series "selftests/mm: mremap_test: Optimizations and style fixes".
    
    The mremap_test, in a worst case controlled by the -t flag, does a for
    loop iteration in orders of GB.  Without compromising on the stdout
    report, the aim is to reduce this time.
    
    A pre-filled random buffer is allocated based on the seed, replacing
    repetitive rand() calls.  The byte pattern in the memory locations is set
    through memcpy() from the random buffer.
    
    Replacing the loop for printing the mismatch index to stdout, employ an
    efficient algorithm by breaking the comparison into chunks, use the highly
    optimized memcmp() library function, and when a mismatch does occur, only
    then do a brute force iteration.
    
    Also, use sscanf() to parse /proc/self/maps for consistency across files.
    
    Execution time results (x86 system):
    ./mremap_test
    Original: 3 seconds
    After change: 0.8 seconds
    
    ./mremap_test -t100
    Original: 17 seconds
    After change: 2 seconds
    
    ./mremap_test -t0 (worst case):
    Original: 9:40 minutes
    After change: 45 seconds
    
    
    This patch (of 3):
    
    Allocate a pre-filled random buffer using the seed.  Replace iterative
    copying of the random sequence to buffers using the highly optimized
    library function memcpy().
    
    Link: https://lkml.kernel.org/r/20240330173557.2697684-1-dev.jain@arm.com
    Link: https://lkml.kernel.org/r/20240330173557.2697684-2-dev.jain@arm.comSigned-off-by: default avatarDev Jain <dev.jain@arm.com>
    Cc: Anshuman Khandual <anshuman.khandual@arm.com>
    Cc: John Hubbard <jhubbard@nvidia.com>
    Cc: Kalesh Singh <kaleshsingh@google.com>
    Cc: Shuah Khan <shuah@kernel.org>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    c7876a0c
mremap_test.c 21.9 KB