• Ingo Molnar's avatar
    perf bench: Default to all routines in 'perf bench mem' · 27619741
    Ingo Molnar authored
    So few people know that the --routine option to 'perf bench memcpy/memset'
    exists, and would not know that it's capable of testing the kernel's
    memcpy/memset implementations.
    
    Furthermore, 'perf bench mem all' will not run all routines:
    
    	vega:~> perf bench mem all
    	# Running mem/memcpy benchmark...
    	Routine default (Default memcpy() provided by glibc)
    	# Copying 1MB Bytes ...
    
    	     894.454383 MB/Sec
    	       3.844734 GB/Sec (with prefault)
    
    	# Running mem/memset benchmark...
    	Routine default (Default memset() provided by glibc)
    	# Copying 1MB Bytes ...
    
    	       1.220703 GB/Sec
    	       9.042245 GB/Sec (with prefault)
    
    Because misleadingly the 'all' refers to 'all sub-benchmarks', not 'all
    sub-benchmarks and routines'.
    
    Fix all this by making the memcpy/memset routine to default to 'all',
    which results in all the benchmarks being run:
    
    	triton:~> perf bench mem all
    	# Running mem/memcpy benchmark...
    	Routine default (Default memcpy() provided by glibc)
    	# Copying 1MB Bytes ...
    
    	       1.448906 GB/Sec
    	       4.957170 GB/Sec (with prefault)
    	Routine x86-64-unrolled (unrolled memcpy() in arch/x86/lib/memcpy_64.S)
    	# Copying 1MB Bytes ...
    
    	       1.614153 GB/Sec
    	       4.379204 GB/Sec (with prefault)
    	Routine x86-64-movsq (movsq-based memcpy() in arch/x86/lib/memcpy_64.S)
    	# Copying 1MB Bytes ...
    
    	       1.570036 GB/Sec
    	       4.264465 GB/Sec (with prefault)
    	Routine x86-64-movsb (movsb-based memcpy() in arch/x86/lib/memcpy_64.S)
    	# Copying 1MB Bytes ...
    
    	       1.788576 GB/Sec
    	       6.554111 GB/Sec (with prefault)
    
    	# Running mem/memset benchmark...
    	Routine default (Default memset() provided by glibc)
    	# Copying 1MB Bytes ...
    
    	       2.082223 GB/Sec
    	       9.126752 GB/Sec (with prefault)
    	Routine x86-64-unrolled (unrolled memset() in arch/x86/lib/memset_64.S)
    	# Copying 1MB Bytes ...
    
    	       5.710892 GB/Sec
    	       8.346688 GB/Sec (with prefault)
    	Routine x86-64-stosq (movsq-based memset() in arch/x86/lib/memset_64.S)
    	# Copying 1MB Bytes ...
    
    	       9.765625 GB/Sec
    	      12.520032 GB/Sec (with prefault)
    	Routine x86-64-stosb (movsb-based memset() in arch/x86/lib/memset_64.S)
    	# Copying 1MB Bytes ...
    
    	       9.668936 GB/Sec
    	      12.682630 GB/Sec (with prefault)
    Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
    Cc: David Ahern <dsahern@gmail.com>
    Cc: Hitoshi Mitake <mitake@dcl.info.waseda.ac.jp>
    Cc: Jiri Olsa <jolsa@redhat.com>
    Cc: Linus Torvalds <torvalds@linux-foundation.org>
    Cc: Namhyung Kim <namhyung@kernel.org>
    Cc: Peter Zijlstra <peterz@infradead.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Link: http://lkml.kernel.org/r/1445241870-24854-3-git-send-email-mingo@kernel.orgSigned-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    27619741
mem-memcpy.c 10.1 KB