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'all':: 65 All benchmark subsystems. 66 67SUITES FOR 'sched' 68~~~~~~~~~~~~~~~~~~ 69*messaging*:: 70Suite for evaluating performance of scheduler and IPC mechanisms. 71Based on hackbench by Rusty Russell. 72 73Options of *messaging* 74^^^^^^^^^^^^^^^^^^^^^^ 75-p:: 76--pipe:: 77Use pipe() instead of socketpair() 78 79-t:: 80--thread:: 81Be multi thread instead of multi process 82 83-g:: 84--group=:: 85Specify number of groups 86 87-l:: 88--nr_loops=:: 89Specify number of loops 90 91Example of *messaging* 92^^^^^^^^^^^^^^^^^^^^^^ 93 94--------------------- 95% perf bench sched messaging # run with default 96options (20 sender and receiver processes per group) 97(10 groups == 400 processes run) 98 99 Total time:0.308 sec 100 101% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups 102(20 sender and receiver threads per group) 103(20 groups == 800 threads run) 104 105 Total time:0.582 sec 106--------------------- 107 108*pipe*:: 109Suite for pipe() system call. 110Based on pipe-test-1m.c by Ingo Molnar. 111 112Options of *pipe* 113^^^^^^^^^^^^^^^^^ 114-l:: 115--loop=:: 116Specify number of loops. 117 118Example of *pipe* 119^^^^^^^^^^^^^^^^^ 120 121--------------------- 122% perf bench sched pipe 123(executing 1000000 pipe operations between two tasks) 124 125 Total time:8.091 sec 126 8.091833 usecs/op 127 123581 ops/sec 128 129% perf bench sched pipe -l 1000 # loop 1000 130(executing 1000 pipe operations between two tasks) 131 132 Total time:0.016 sec 133 16.948000 usecs/op 134 59004 ops/sec 135--------------------- 136 137SUITES FOR 'mem' 138~~~~~~~~~~~~~~~~ 139*memcpy*:: 140Suite for evaluating performance of simple memory copy in various ways. 141 142Options of *memcpy* 143^^^^^^^^^^^^^^^^^^^ 144-l:: 145--size:: 146Specify size of memory to copy (default: 1MB). 147Available units are B, KB, MB, GB and TB (case insensitive). 148 149-f:: 150--function:: 151Specify function to copy (default: default). 152Available functions are depend on the architecture. 153On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. 154 155-l:: 156--nr_loops:: 157Repeat memcpy invocation this number of times. 158 159-c:: 160--cycles:: 161Use perf's cpu-cycles event instead of gettimeofday syscall. 162 163*memset*:: 164Suite for evaluating performance of simple memory set in various ways. 165 166Options of *memset* 167^^^^^^^^^^^^^^^^^^^ 168-l:: 169--size:: 170Specify size of memory to set (default: 1MB). 171Available units are B, KB, MB, GB and TB (case insensitive). 172 173-f:: 174--function:: 175Specify function to set (default: default). 176Available functions are depend on the architecture. 177On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. 178 179-l:: 180--nr_loops:: 181Repeat memset invocation this number of times. 182 183-c:: 184--cycles:: 185Use perf's cpu-cycles event instead of gettimeofday syscall. 186 187SUITES FOR 'numa' 188~~~~~~~~~~~~~~~~~ 189*mem*:: 190Suite for evaluating NUMA workloads. 191 192SUITES FOR 'futex' 193~~~~~~~~~~~~~~~~~~ 194*hash*:: 195Suite for evaluating hash tables. 196 197*wake*:: 198Suite for evaluating wake calls. 199 200*wake-parallel*:: 201Suite for evaluating parallel wake calls. 202 203*requeue*:: 204Suite for evaluating requeue calls. 205 206*lock-pi*:: 207Suite for evaluating futex lock_pi calls. 208 209SUITES FOR 'epoll' 210~~~~~~~~~~~~~~~~~~ 211*wait*:: 212Suite for evaluating concurrent epoll_wait calls. 213 214*ctl*:: 215Suite for evaluating multiple epoll_ctl calls. 216 217SEE ALSO 218-------- 219linkperf:perf[1] 220