• Vincent Whitchurch's avatar
    perf bench mem: Always memset source before memcpy · 1beaef29
    Vincent Whitchurch authored
    For memcpy, the source pages are memset to zero only when --cycles is
    used.  This leads to wildly different results with or without --cycles,
    since all sources pages are likely to be mapped to the same zero page
    without explicit writes.
    
    Before this fix:
    
    $ export cmd="./perf stat -e LLC-loads -- ./perf bench \
      mem memcpy -s 1024MB -l 100 -f default"
    $ $cmd
    
             2,935,826      LLC-loads
           3.821677452 seconds time elapsed
    
    $ $cmd --cycles
    
           217,533,436      LLC-loads
           8.616725985 seconds time elapsed
    
    After this fix:
    
    $ $cmd
    
           214,459,686      LLC-loads
           8.674301124 seconds time elapsed
    
    $ $cmd --cycles
    
           214,758,651      LLC-loads
           8.644480006 seconds time elapsed
    
    Fixes: 47b5757b ("perf bench mem: Move boilerplate memory allocation to the infrastructure")
    Signed-off-by: default avatarVincent Whitchurch <vincent.whitchurch@axis.com>
    Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Mark Rutland <mark.rutland@arm.com>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: kernel@axis.com
    Link: http://lore.kernel.org/lkml/20200810133404.30829-1-vincent.whitchurch@axis.comSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    1beaef29
mem-functions.c 8.69 KB