blob: f6480cbf309b40fee97e86112033c1a0cf04236a [file] [log] [blame]
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +09001perf-bench(1)
Arnaldo Carvalho de Melo4778e0e2010-05-05 11:23:27 -03002=============
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +09003
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-----------
Namhyung Kim08942f62012-06-20 15:08:06 +090015This 'perf bench' command is a general framework for benchmark suites.
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090016
17COMMON OPTIONS
18--------------
Davidlohr Buesob6f06292014-06-16 11:14:19 -070019-r::
20--repeat=::
21Specify amount of times to repeat the run (default 10).
22
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090023-f::
24--format=::
25Specify format style.
Randy Dunlap854c5542010-03-31 11:31:00 -070026Current available format styles are:
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090027
28'default'::
29Default style. This is mainly for human reading.
30---------------------
Randy Dunlap854c5542010-03-31 11:31:00 -070031% perf bench sched pipe # with no style specified
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090032(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
Namhyung Kim08942f62012-06-20 15:08:06 +090052'mem'::
53 Memory access performance.
54
Ramkumar Ramachandra95a2b3c2014-03-27 19:50:18 -040055'numa'::
56 NUMA scheduling and MM benchmarks.
57
58'futex'::
59 Futex stressing benchmarks.
60
Namhyung Kim08942f62012-06-20 15:08:06 +090061'all'::
62 All benchmark subsystems.
63
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090064SUITES FOR 'sched'
65~~~~~~~~~~~~~~~~~~
66*messaging*::
67Suite for evaluating performance of scheduler and IPC mechanisms.
68Based on hackbench by Rusty Russell.
69
Namhyung Kim08942f62012-06-20 15:08:06 +090070Options of *messaging*
71^^^^^^^^^^^^^^^^^^^^^^
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090072-p::
73--pipe::
74Use pipe() instead of socketpair()
75
76-t::
77--thread::
78Be multi thread instead of multi process
79
80-g::
81--group=::
82Specify number of groups
83
84-l::
85--loop=::
86Specify number of loops
87
88Example of *messaging*
89^^^^^^^^^^^^^^^^^^^^^^
90
91---------------------
92% perf bench sched messaging # run with default
93options (20 sender and receiver processes per group)
94(10 groups == 400 processes run)
95
96 Total time:0.308 sec
97
Randy Dunlap854c5542010-03-31 11:31:00 -070098% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090099(20 sender and receiver threads per group)
100(20 groups == 800 threads run)
101
102 Total time:0.582 sec
103---------------------
104
105*pipe*::
106Suite for pipe() system call.
107Based on pipe-test-1m.c by Ingo Molnar.
108
109Options of *pipe*
110^^^^^^^^^^^^^^^^^
111-l::
112--loop=::
113Specify number of loops.
114
115Example of *pipe*
116^^^^^^^^^^^^^^^^^
117
118---------------------
119% perf bench sched pipe
120(executing 1000000 pipe operations between two tasks)
121
122 Total time:8.091 sec
123 8.091833 usecs/op
124 123581 ops/sec
125
126% perf bench sched pipe -l 1000 # loop 1000
127(executing 1000 pipe operations between two tasks)
128
129 Total time:0.016 sec
130 16.948000 usecs/op
131 59004 ops/sec
132---------------------
133
Namhyung Kim08942f62012-06-20 15:08:06 +0900134SUITES FOR 'mem'
135~~~~~~~~~~~~~~~~
136*memcpy*::
137Suite for evaluating performance of simple memory copy in various ways.
138
139Options of *memcpy*
140^^^^^^^^^^^^^^^^^^^
141-l::
142--length::
143Specify length of memory to copy (default: 1MB).
144Available units are B, KB, MB, GB and TB (case insensitive).
145
146-r::
147--routine::
148Specify routine to copy (default: default).
149Available routines are depend on the architecture.
150On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
151
152-i::
153--iterations::
154Repeat memcpy invocation this number of times.
155
156-c::
Hitoshi Mitake17d7a112012-07-02 22:46:17 +0900157--cycle::
Namhyung Kim08942f62012-06-20 15:08:06 +0900158Use perf's cpu-cycles event instead of gettimeofday syscall.
159
160-o::
161--only-prefault::
162Show only the result with page faults before memcpy.
163
164-n::
165--no-prefault::
166Show only the result without page faults before memcpy.
167
168*memset*::
169Suite for evaluating performance of simple memory set in various ways.
170
171Options of *memset*
172^^^^^^^^^^^^^^^^^^^
173-l::
174--length::
175Specify length of memory to set (default: 1MB).
176Available units are B, KB, MB, GB and TB (case insensitive).
177
178-r::
179--routine::
180Specify routine to set (default: default).
181Available routines are depend on the architecture.
182On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
183
184-i::
185--iterations::
186Repeat memset invocation this number of times.
187
188-c::
Hitoshi Mitake17d7a112012-07-02 22:46:17 +0900189--cycle::
Namhyung Kim08942f62012-06-20 15:08:06 +0900190Use perf's cpu-cycles event instead of gettimeofday syscall.
191
192-o::
193--only-prefault::
194Show only the result with page faults before memset.
195
196-n::
197--no-prefault::
198Show only the result without page faults before memset.
199
Ramkumar Ramachandra95a2b3c2014-03-27 19:50:18 -0400200SUITES FOR 'numa'
201~~~~~~~~~~~~~~~~~
202*mem*::
203Suite for evaluating NUMA workloads.
204
205SUITES FOR 'futex'
206~~~~~~~~~~~~~~~~~~
207*hash*::
208Suite for evaluating hash tables.
209
210*wake*::
211Suite for evaluating wake calls.
212
213*requeue*::
214Suite for evaluating requeue calls.
215
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +0900216SEE ALSO
217--------
218linkperf:perf[1]