]> git.ipfire.org Git - thirdparty/linux.git/blob - tools/perf/Documentation/perf-bench.txt
Merge tag 'x86-fpu-2020-06-01' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
[thirdparty/linux.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 'internals'::
65 Benchmark internal perf functionality.
66
67 'all'::
68 All benchmark subsystems.
69
70 SUITES FOR 'sched'
71 ~~~~~~~~~~~~~~~~~~
72 *messaging*::
73 Suite for evaluating performance of scheduler and IPC mechanisms.
74 Based on hackbench by Rusty Russell.
75
76 Options of *messaging*
77 ^^^^^^^^^^^^^^^^^^^^^^
78 -p::
79 --pipe::
80 Use pipe() instead of socketpair()
81
82 -t::
83 --thread::
84 Be multi thread instead of multi process
85
86 -g::
87 --group=::
88 Specify number of groups
89
90 -l::
91 --nr_loops=::
92 Specify number of loops
93
94 Example of *messaging*
95 ^^^^^^^^^^^^^^^^^^^^^^
96
97 ---------------------
98 % perf bench sched messaging # run with default
99 options (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*::
112 Suite for pipe() system call.
113 Based on pipe-test-1m.c by Ingo Molnar.
114
115 Options of *pipe*
116 ^^^^^^^^^^^^^^^^^
117 -l::
118 --loop=::
119 Specify number of loops.
120
121 Example 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
140 SUITES FOR 'mem'
141 ~~~~~~~~~~~~~~~~
142 *memcpy*::
143 Suite for evaluating performance of simple memory copy in various ways.
144
145 Options of *memcpy*
146 ^^^^^^^^^^^^^^^^^^^
147 -l::
148 --size::
149 Specify size of memory to copy (default: 1MB).
150 Available units are B, KB, MB, GB and TB (case insensitive).
151
152 -f::
153 --function::
154 Specify function to copy (default: default).
155 Available functions are depend on the architecture.
156 On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
157
158 -l::
159 --nr_loops::
160 Repeat memcpy invocation this number of times.
161
162 -c::
163 --cycles::
164 Use perf's cpu-cycles event instead of gettimeofday syscall.
165
166 *memset*::
167 Suite for evaluating performance of simple memory set in various ways.
168
169 Options of *memset*
170 ^^^^^^^^^^^^^^^^^^^
171 -l::
172 --size::
173 Specify size of memory to set (default: 1MB).
174 Available units are B, KB, MB, GB and TB (case insensitive).
175
176 -f::
177 --function::
178 Specify function to set (default: default).
179 Available functions are depend on the architecture.
180 On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
181
182 -l::
183 --nr_loops::
184 Repeat memset invocation this number of times.
185
186 -c::
187 --cycles::
188 Use perf's cpu-cycles event instead of gettimeofday syscall.
189
190 SUITES FOR 'numa'
191 ~~~~~~~~~~~~~~~~~
192 *mem*::
193 Suite for evaluating NUMA workloads.
194
195 SUITES FOR 'futex'
196 ~~~~~~~~~~~~~~~~~~
197 *hash*::
198 Suite for evaluating hash tables.
199
200 *wake*::
201 Suite for evaluating wake calls.
202
203 *wake-parallel*::
204 Suite for evaluating parallel wake calls.
205
206 *requeue*::
207 Suite for evaluating requeue calls.
208
209 *lock-pi*::
210 Suite for evaluating futex lock_pi calls.
211
212 SUITES FOR 'epoll'
213 ~~~~~~~~~~~~~~~~~~
214 *wait*::
215 Suite for evaluating concurrent epoll_wait calls.
216
217 *ctl*::
218 Suite for evaluating multiple epoll_ctl calls.
219
220 SUITES FOR 'internals'
221 ~~~~~~~~~~~~~~~~~~~~~~
222 *synthesize*::
223 Suite for evaluating perf's event synthesis performance.
224
225 SEE ALSO
226 --------
227 linkperf:perf[1]