Linux 4.1.18
[linux/fpc-iii.git] / tools / perf / Documentation / perf-bench.txt
blobf6480cbf309b40fee97e86112033c1a0cf04236a
1 perf-bench(1)
2 =============
4 NAME
5 ----
6 perf-bench - General framework for benchmark suites
8 SYNOPSIS
9 --------
10 [verse]
11 'perf bench' [<common options>] <subsystem> <suite> [<options>]
13 DESCRIPTION
14 -----------
15 This 'perf bench' command is a general framework for benchmark suites.
17 COMMON OPTIONS
18 --------------
19 -r::
20 --repeat=::
21 Specify amount of times to repeat the run (default 10).
23 -f::
24 --format=::
25 Specify format style.
26 Current available format styles are:
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 ---------------------
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 ---------------------
46 SUBSYSTEM
47 ---------
49 'sched'::
50         Scheduler and IPC mechanisms.
52 'mem'::
53         Memory access performance.
55 'numa'::
56         NUMA scheduling and MM benchmarks.
58 'futex'::
59         Futex stressing benchmarks.
61 'all'::
62         All benchmark subsystems.
64 SUITES FOR 'sched'
65 ~~~~~~~~~~~~~~~~~~
66 *messaging*::
67 Suite for evaluating performance of scheduler and IPC mechanisms.
68 Based on hackbench by Rusty Russell.
70 Options of *messaging*
71 ^^^^^^^^^^^^^^^^^^^^^^
72 -p::
73 --pipe::
74 Use pipe() instead of socketpair()
76 -t::
77 --thread::
78 Be multi thread instead of multi process
80 -g::
81 --group=::
82 Specify number of groups
84 -l::
85 --loop=::
86 Specify number of loops
88 Example of *messaging*
89 ^^^^^^^^^^^^^^^^^^^^^^
91 ---------------------
92 % perf bench sched messaging                 # run with default
93 options (20 sender and receiver processes per group)
94 (10 groups == 400 processes run)
96       Total time:0.308 sec
98 % perf bench sched messaging -t -g 20        # be multi-thread, with 20 groups
99 (20 sender and receiver threads per group)
100 (20 groups == 800 threads run)
102       Total time:0.582 sec
103 ---------------------
105 *pipe*::
106 Suite for pipe() system call.
107 Based on pipe-test-1m.c by Ingo Molnar.
109 Options of *pipe*
110 ^^^^^^^^^^^^^^^^^
111 -l::
112 --loop=::
113 Specify number of loops.
115 Example of *pipe*
116 ^^^^^^^^^^^^^^^^^
118 ---------------------
119 % perf bench sched pipe
120 (executing 1000000 pipe operations between two tasks)
122         Total time:8.091 sec
123                 8.091833 usecs/op
124                 123581 ops/sec
126 % perf bench sched pipe -l 1000              # loop 1000
127 (executing 1000 pipe operations between two tasks)
129         Total time:0.016 sec
130                 16.948000 usecs/op
131                 59004 ops/sec
132 ---------------------
134 SUITES FOR 'mem'
135 ~~~~~~~~~~~~~~~~
136 *memcpy*::
137 Suite for evaluating performance of simple memory copy in various ways.
139 Options of *memcpy*
140 ^^^^^^^^^^^^^^^^^^^
141 -l::
142 --length::
143 Specify length of memory to copy (default: 1MB).
144 Available units are B, KB, MB, GB and TB (case insensitive).
146 -r::
147 --routine::
148 Specify routine to copy (default: default).
149 Available routines are depend on the architecture.
150 On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
152 -i::
153 --iterations::
154 Repeat memcpy invocation this number of times.
156 -c::
157 --cycle::
158 Use perf's cpu-cycles event instead of gettimeofday syscall.
160 -o::
161 --only-prefault::
162 Show only the result with page faults before memcpy.
164 -n::
165 --no-prefault::
166 Show only the result without page faults before memcpy.
168 *memset*::
169 Suite for evaluating performance of simple memory set in various ways.
171 Options of *memset*
172 ^^^^^^^^^^^^^^^^^^^
173 -l::
174 --length::
175 Specify length of memory to set (default: 1MB).
176 Available units are B, KB, MB, GB and TB (case insensitive).
178 -r::
179 --routine::
180 Specify routine to set (default: default).
181 Available routines are depend on the architecture.
182 On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
184 -i::
185 --iterations::
186 Repeat memset invocation this number of times.
188 -c::
189 --cycle::
190 Use perf's cpu-cycles event instead of gettimeofday syscall.
192 -o::
193 --only-prefault::
194 Show only the result with page faults before memset.
196 -n::
197 --no-prefault::
198 Show only the result without page faults before memset.
200 SUITES FOR 'numa'
201 ~~~~~~~~~~~~~~~~~
202 *mem*::
203 Suite for evaluating NUMA workloads.
205 SUITES FOR 'futex'
206 ~~~~~~~~~~~~~~~~~~
207 *hash*::
208 Suite for evaluating hash tables.
210 *wake*::
211 Suite for evaluating wake calls.
213 *requeue*::
214 Suite for evaluating requeue calls.
216 SEE ALSO
217 --------
218 linkperf:perf[1]