Merge branches 'clk-optional', 'clk-devm-clkdev-register', 'clk-allwinner', 'clk...
[linux-2.6-microblaze.git] / tools / perf / Documentation / perf-bench.txt
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 -r::
20 --repeat=::
21 Specify amount of times to repeat the run (default 10).
22
23 -f::
24 --format=::
25 Specify format style.
26 Current available format styles are:
27
28 'default'::
29 Default 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'::
39 This simple style is friendly for automated
40 processing by scripts.
41 ---------------------
42 % perf bench --format=simple sched pipe      # specified simple
43 5.988
44 ---------------------
45
46 SUBSYSTEM
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
67 SUITES FOR 'sched'
68 ~~~~~~~~~~~~~~~~~~
69 *messaging*::
70 Suite for evaluating performance of scheduler and IPC mechanisms.
71 Based on hackbench by Rusty Russell.
72
73 Options of *messaging*
74 ^^^^^^^^^^^^^^^^^^^^^^
75 -p::
76 --pipe::
77 Use pipe() instead of socketpair()
78
79 -t::
80 --thread::
81 Be multi thread instead of multi process
82
83 -g::
84 --group=::
85 Specify number of groups
86
87 -l::
88 --nr_loops=::
89 Specify number of loops
90
91 Example of *messaging*
92 ^^^^^^^^^^^^^^^^^^^^^^
93
94 ---------------------
95 % perf bench sched messaging                 # run with default
96 options (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*::
109 Suite for pipe() system call.
110 Based on pipe-test-1m.c by Ingo Molnar.
111
112 Options of *pipe*
113 ^^^^^^^^^^^^^^^^^
114 -l::
115 --loop=::
116 Specify number of loops.
117
118 Example 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
137 SUITES FOR 'mem'
138 ~~~~~~~~~~~~~~~~
139 *memcpy*::
140 Suite for evaluating performance of simple memory copy in various ways.
141
142 Options of *memcpy*
143 ^^^^^^^^^^^^^^^^^^^
144 -l::
145 --size::
146 Specify size of memory to copy (default: 1MB).
147 Available units are B, KB, MB, GB and TB (case insensitive).
148
149 -f::
150 --function::
151 Specify function to copy (default: default).
152 Available functions are depend on the architecture.
153 On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
154
155 -l::
156 --nr_loops::
157 Repeat memcpy invocation this number of times.
158
159 -c::
160 --cycles::
161 Use perf's cpu-cycles event instead of gettimeofday syscall.
162
163 *memset*::
164 Suite for evaluating performance of simple memory set in various ways.
165
166 Options of *memset*
167 ^^^^^^^^^^^^^^^^^^^
168 -l::
169 --size::
170 Specify size of memory to set (default: 1MB).
171 Available units are B, KB, MB, GB and TB (case insensitive).
172
173 -f::
174 --function::
175 Specify function to set (default: default).
176 Available functions are depend on the architecture.
177 On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
178
179 -l::
180 --nr_loops::
181 Repeat memset invocation this number of times.
182
183 -c::
184 --cycles::
185 Use perf's cpu-cycles event instead of gettimeofday syscall.
186
187 SUITES FOR 'numa'
188 ~~~~~~~~~~~~~~~~~
189 *mem*::
190 Suite for evaluating NUMA workloads.
191
192 SUITES FOR 'futex'
193 ~~~~~~~~~~~~~~~~~~
194 *hash*::
195 Suite for evaluating hash tables.
196
197 *wake*::
198 Suite for evaluating wake calls.
199
200 *wake-parallel*::
201 Suite for evaluating parallel wake calls.
202
203 *requeue*::
204 Suite for evaluating requeue calls.
205
206 *lock-pi*::
207 Suite for evaluating futex lock_pi calls.
208
209 SUITES FOR 'epoll'
210 ~~~~~~~~~~~~~~~~~~
211 *wait*::
212 Suite for evaluating concurrent epoll_wait calls.
213
214 *ctl*::
215 Suite for evaluating multiple epoll_ctl calls.
216
217 SEE ALSO
218 --------
219 linkperf:perf[1]