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