1perf-bench(1) 2============= 3 4NAME 5---- 6perf-bench - General framework for benchmark suites 7 8SYNOPSIS 9-------- 10[verse] 11'perf bench' [<common options>] <subsystem> <suite> [<options>] 12 13DESCRIPTION 14----------- 15This 'perf bench' command is a general framework for benchmark suites. 16 17COMMON OPTIONS 18-------------- 19-r:: 20--repeat=:: 21Specify amount of times to repeat the run (default 10). 22 23-f:: 24--format=:: 25Specify format style. 26Current available format styles are: 27 28'default':: 29Default style. This is mainly for human reading. 30--------------------- 31% perf bench sched pipe # with no style specified 32(executing 1000000 pipe operations between two tasks) 33 Total time:5.855 sec 34 5.855061 usecs/op 35 170792 ops/sec 36--------------------- 37 38'simple':: 39This simple style is friendly for automated 40processing by scripts. 41--------------------- 42% perf bench --format=simple sched pipe # specified simple 435.988 44--------------------- 45 46SUBSYSTEM 47--------- 48 49'sched':: 50 Scheduler and IPC mechanisms. 51 52'mem':: 53 Memory access performance. 54 55'numa':: 56 NUMA scheduling and MM benchmarks. 57 58'futex':: 59 Futex stressing benchmarks. 60 61'epoll':: 62 Eventpoll (epoll) stressing benchmarks. 63 64'internals':: 65 Benchmark internal perf functionality. 66 67'all':: 68 All benchmark subsystems. 69 70SUITES FOR 'sched' 71~~~~~~~~~~~~~~~~~~ 72*messaging*:: 73Suite for evaluating performance of scheduler and IPC mechanisms. 74Based on hackbench by Rusty Russell. 75 76Options of *messaging* 77^^^^^^^^^^^^^^^^^^^^^^ 78-p:: 79--pipe:: 80Use pipe() instead of socketpair() 81 82-t:: 83--thread:: 84Be multi thread instead of multi process 85 86-g:: 87--group=:: 88Specify number of groups 89 90-l:: 91--nr_loops=:: 92Specify number of loops 93 94Example of *messaging* 95^^^^^^^^^^^^^^^^^^^^^^ 96 97--------------------- 98% perf bench sched messaging # run with default 99options (20 sender and receiver processes per group) 100(10 groups == 400 processes run) 101 102 Total time:0.308 sec 103 104% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups 105(20 sender and receiver threads per group) 106(20 groups == 800 threads run) 107 108 Total time:0.582 sec 109--------------------- 110 111*pipe*:: 112Suite for pipe() system call. 113Based on pipe-test-1m.c by Ingo Molnar. 114 115Options of *pipe* 116^^^^^^^^^^^^^^^^^ 117-l:: 118--loop=:: 119Specify number of loops. 120 121Example of *pipe* 122^^^^^^^^^^^^^^^^^ 123 124--------------------- 125% perf bench sched pipe 126(executing 1000000 pipe operations between two tasks) 127 128 Total time:8.091 sec 129 8.091833 usecs/op 130 123581 ops/sec 131 132% perf bench sched pipe -l 1000 # loop 1000 133(executing 1000 pipe operations between two tasks) 134 135 Total time:0.016 sec 136 16.948000 usecs/op 137 59004 ops/sec 138--------------------- 139 140SUITES FOR 'mem' 141~~~~~~~~~~~~~~~~ 142*memcpy*:: 143Suite for evaluating performance of simple memory copy in various ways. 144 145Options of *memcpy* 146^^^^^^^^^^^^^^^^^^^ 147-l:: 148--size:: 149Specify size of memory to copy (default: 1MB). 150Available units are B, KB, MB, GB and TB (case insensitive). 151 152-f:: 153--function:: 154Specify function to copy (default: default). 155Available functions are depend on the architecture. 156On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. 157 158-l:: 159--nr_loops:: 160Repeat memcpy invocation this number of times. 161 162-c:: 163--cycles:: 164Use perf's cpu-cycles event instead of gettimeofday syscall. 165 166*memset*:: 167Suite for evaluating performance of simple memory set in various ways. 168 169Options of *memset* 170^^^^^^^^^^^^^^^^^^^ 171-l:: 172--size:: 173Specify size of memory to set (default: 1MB). 174Available units are B, KB, MB, GB and TB (case insensitive). 175 176-f:: 177--function:: 178Specify function to set (default: default). 179Available functions are depend on the architecture. 180On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. 181 182-l:: 183--nr_loops:: 184Repeat memset invocation this number of times. 185 186-c:: 187--cycles:: 188Use perf's cpu-cycles event instead of gettimeofday syscall. 189 190SUITES FOR 'numa' 191~~~~~~~~~~~~~~~~~ 192*mem*:: 193Suite for evaluating NUMA workloads. 194 195SUITES FOR 'futex' 196~~~~~~~~~~~~~~~~~~ 197*hash*:: 198Suite for evaluating hash tables. 199 200*wake*:: 201Suite for evaluating wake calls. 202 203*wake-parallel*:: 204Suite for evaluating parallel wake calls. 205 206*requeue*:: 207Suite for evaluating requeue calls. 208 209*lock-pi*:: 210Suite for evaluating futex lock_pi calls. 211 212SUITES FOR 'epoll' 213~~~~~~~~~~~~~~~~~~ 214*wait*:: 215Suite for evaluating concurrent epoll_wait calls. 216 217*ctl*:: 218Suite for evaluating multiple epoll_ctl calls. 219 220SUITES FOR 'internals' 221~~~~~~~~~~~~~~~~~~~~~~ 222*synthesize*:: 223Suite for evaluating perf's event synthesis performance. 224 225SEE ALSO 226-------- 227linkperf:perf[1] 228