|  | perf-bench(1) | 
|  | ============= | 
|  |  | 
|  | NAME | 
|  | ---- | 
|  | perf-bench - General framework for benchmark suites | 
|  |  | 
|  | SYNOPSIS | 
|  | -------- | 
|  | [verse] | 
|  | 'perf bench' [<common options>] <subsystem> <suite> [<options>] | 
|  |  | 
|  | DESCRIPTION | 
|  | ----------- | 
|  | This 'perf bench' command is a general framework for benchmark suites. | 
|  |  | 
|  | COMMON OPTIONS | 
|  | -------------- | 
|  | -r:: | 
|  | --repeat=:: | 
|  | Specify amount of times to repeat the run (default 10). | 
|  |  | 
|  | -f:: | 
|  | --format=:: | 
|  | Specify format style. | 
|  | Current available format styles are: | 
|  |  | 
|  | 'default':: | 
|  | Default style. This is mainly for human reading. | 
|  | --------------------- | 
|  | % perf bench sched pipe                      # with no style specified | 
|  | (executing 1000000 pipe operations between two tasks) | 
|  | Total time:5.855 sec | 
|  | 5.855061 usecs/op | 
|  | 170792 ops/sec | 
|  | --------------------- | 
|  |  | 
|  | 'simple':: | 
|  | This simple style is friendly for automated | 
|  | processing by scripts. | 
|  | --------------------- | 
|  | % perf bench --format=simple sched pipe      # specified simple | 
|  | 5.988 | 
|  | --------------------- | 
|  |  | 
|  | SUBSYSTEM | 
|  | --------- | 
|  |  | 
|  | 'sched':: | 
|  | Scheduler and IPC mechanisms. | 
|  |  | 
|  | 'mem':: | 
|  | Memory access performance. | 
|  |  | 
|  | 'numa':: | 
|  | NUMA scheduling and MM benchmarks. | 
|  |  | 
|  | 'futex':: | 
|  | Futex stressing benchmarks. | 
|  |  | 
|  | 'all':: | 
|  | All benchmark subsystems. | 
|  |  | 
|  | SUITES FOR 'sched' | 
|  | ~~~~~~~~~~~~~~~~~~ | 
|  | *messaging*:: | 
|  | Suite for evaluating performance of scheduler and IPC mechanisms. | 
|  | Based on hackbench by Rusty Russell. | 
|  |  | 
|  | Options of *messaging* | 
|  | ^^^^^^^^^^^^^^^^^^^^^^ | 
|  | -p:: | 
|  | --pipe:: | 
|  | Use pipe() instead of socketpair() | 
|  |  | 
|  | -t:: | 
|  | --thread:: | 
|  | Be multi thread instead of multi process | 
|  |  | 
|  | -g:: | 
|  | --group=:: | 
|  | Specify number of groups | 
|  |  | 
|  | -l:: | 
|  | --loop=:: | 
|  | Specify number of loops | 
|  |  | 
|  | Example of *messaging* | 
|  | ^^^^^^^^^^^^^^^^^^^^^^ | 
|  |  | 
|  | --------------------- | 
|  | % perf bench sched messaging                 # run with default | 
|  | options (20 sender and receiver processes per group) | 
|  | (10 groups == 400 processes run) | 
|  |  | 
|  | Total time:0.308 sec | 
|  |  | 
|  | % perf bench sched messaging -t -g 20        # be multi-thread, with 20 groups | 
|  | (20 sender and receiver threads per group) | 
|  | (20 groups == 800 threads run) | 
|  |  | 
|  | Total time:0.582 sec | 
|  | --------------------- | 
|  |  | 
|  | *pipe*:: | 
|  | Suite for pipe() system call. | 
|  | Based on pipe-test-1m.c by Ingo Molnar. | 
|  |  | 
|  | Options of *pipe* | 
|  | ^^^^^^^^^^^^^^^^^ | 
|  | -l:: | 
|  | --loop=:: | 
|  | Specify number of loops. | 
|  |  | 
|  | Example of *pipe* | 
|  | ^^^^^^^^^^^^^^^^^ | 
|  |  | 
|  | --------------------- | 
|  | % perf bench sched pipe | 
|  | (executing 1000000 pipe operations between two tasks) | 
|  |  | 
|  | Total time:8.091 sec | 
|  | 8.091833 usecs/op | 
|  | 123581 ops/sec | 
|  |  | 
|  | % perf bench sched pipe -l 1000              # loop 1000 | 
|  | (executing 1000 pipe operations between two tasks) | 
|  |  | 
|  | Total time:0.016 sec | 
|  | 16.948000 usecs/op | 
|  | 59004 ops/sec | 
|  | --------------------- | 
|  |  | 
|  | SUITES FOR 'mem' | 
|  | ~~~~~~~~~~~~~~~~ | 
|  | *memcpy*:: | 
|  | Suite for evaluating performance of simple memory copy in various ways. | 
|  |  | 
|  | Options of *memcpy* | 
|  | ^^^^^^^^^^^^^^^^^^^ | 
|  | -l:: | 
|  | --length:: | 
|  | Specify length of memory to copy (default: 1MB). | 
|  | Available units are B, KB, MB, GB and TB (case insensitive). | 
|  |  | 
|  | -r:: | 
|  | --routine:: | 
|  | Specify routine to copy (default: default). | 
|  | Available routines are depend on the architecture. | 
|  | On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. | 
|  |  | 
|  | -i:: | 
|  | --iterations:: | 
|  | Repeat memcpy invocation this number of times. | 
|  |  | 
|  | -c:: | 
|  | --cycle:: | 
|  | Use perf's cpu-cycles event instead of gettimeofday syscall. | 
|  |  | 
|  | -o:: | 
|  | --only-prefault:: | 
|  | Show only the result with page faults before memcpy. | 
|  |  | 
|  | -n:: | 
|  | --no-prefault:: | 
|  | Show only the result without page faults before memcpy. | 
|  |  | 
|  | *memset*:: | 
|  | Suite for evaluating performance of simple memory set in various ways. | 
|  |  | 
|  | Options of *memset* | 
|  | ^^^^^^^^^^^^^^^^^^^ | 
|  | -l:: | 
|  | --length:: | 
|  | Specify length of memory to set (default: 1MB). | 
|  | Available units are B, KB, MB, GB and TB (case insensitive). | 
|  |  | 
|  | -r:: | 
|  | --routine:: | 
|  | Specify routine to set (default: default). | 
|  | Available routines are depend on the architecture. | 
|  | On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. | 
|  |  | 
|  | -i:: | 
|  | --iterations:: | 
|  | Repeat memset invocation this number of times. | 
|  |  | 
|  | -c:: | 
|  | --cycle:: | 
|  | Use perf's cpu-cycles event instead of gettimeofday syscall. | 
|  |  | 
|  | -o:: | 
|  | --only-prefault:: | 
|  | Show only the result with page faults before memset. | 
|  |  | 
|  | -n:: | 
|  | --no-prefault:: | 
|  | Show only the result without page faults before memset. | 
|  |  | 
|  | SUITES FOR 'numa' | 
|  | ~~~~~~~~~~~~~~~~~ | 
|  | *mem*:: | 
|  | Suite for evaluating NUMA workloads. | 
|  |  | 
|  | SUITES FOR 'futex' | 
|  | ~~~~~~~~~~~~~~~~~~ | 
|  | *hash*:: | 
|  | Suite for evaluating hash tables. | 
|  |  | 
|  | *wake*:: | 
|  | Suite for evaluating wake calls. | 
|  |  | 
|  | *requeue*:: | 
|  | Suite for evaluating requeue calls. | 
|  |  | 
|  | SEE ALSO | 
|  | -------- | 
|  | linkperf:perf[1] |