blob: a0529c7fa5ef988e4ab487e4665a478c2862f386 [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
Davidlohr Buesoc2a08202019-03-08 10:17:47 -080052'syscall'::
53 System call performance (throughput).
54
Namhyung Kim08942f62012-06-20 15:08:06 +090055'mem'::
56 Memory access performance.
57
Ramkumar Ramachandra95a2b3c2014-03-27 19:50:18 -040058'numa'::
59 NUMA scheduling and MM benchmarks.
60
61'futex'::
62 Futex stressing benchmarks.
63
Davidlohr Bueso121dd9e2018-11-06 07:22:25 -080064'epoll'::
65 Eventpoll (epoll) stressing benchmarks.
66
Ian Rogers2a4b5162020-04-02 08:43:53 -070067'internals'::
68 Benchmark internal perf functionality.
69
Namhyung Kim08942f62012-06-20 15:08:06 +090070'all'::
71 All benchmark subsystems.
72
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090073SUITES FOR 'sched'
74~~~~~~~~~~~~~~~~~~
75*messaging*::
76Suite for evaluating performance of scheduler and IPC mechanisms.
77Based on hackbench by Rusty Russell.
78
Namhyung Kim08942f62012-06-20 15:08:06 +090079Options of *messaging*
80^^^^^^^^^^^^^^^^^^^^^^
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090081-p::
82--pipe::
83Use pipe() instead of socketpair()
84
85-t::
86--thread::
87Be multi thread instead of multi process
88
89-g::
90--group=::
91Specify number of groups
92
93-l::
Ingo Molnarb0d22e52015-10-19 10:04:28 +020094--nr_loops=::
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +090095Specify number of loops
96
97Example of *messaging*
98^^^^^^^^^^^^^^^^^^^^^^
99
100---------------------
101% perf bench sched messaging # run with default
102options (20 sender and receiver processes per group)
103(10 groups == 400 processes run)
104
105 Total time:0.308 sec
106
Randy Dunlap854c5542010-03-31 11:31:00 -0700107% perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +0900108(20 sender and receiver threads per group)
109(20 groups == 800 threads run)
110
111 Total time:0.582 sec
112---------------------
113
114*pipe*::
115Suite for pipe() system call.
116Based on pipe-test-1m.c by Ingo Molnar.
117
118Options of *pipe*
119^^^^^^^^^^^^^^^^^
120-l::
121--loop=::
122Specify number of loops.
123
124Example of *pipe*
125^^^^^^^^^^^^^^^^^
126
127---------------------
128% perf bench sched pipe
129(executing 1000000 pipe operations between two tasks)
130
131 Total time:8.091 sec
132 8.091833 usecs/op
133 123581 ops/sec
134
135% perf bench sched pipe -l 1000 # loop 1000
136(executing 1000 pipe operations between two tasks)
137
138 Total time:0.016 sec
139 16.948000 usecs/op
140 59004 ops/sec
141---------------------
142
Davidlohr Buesoc2a08202019-03-08 10:17:47 -0800143SUITES FOR 'syscall'
144~~~~~~~~~~~~~~~~~~
145*basic*::
146Suite for evaluating performance of core system call throughput (both usecs/op and ops/sec metrics).
147This uses a single thread simply doing getppid(2), which is a simple syscall where the result is not
148cached by glibc.
149
150
Namhyung Kim08942f62012-06-20 15:08:06 +0900151SUITES FOR 'mem'
152~~~~~~~~~~~~~~~~
153*memcpy*::
154Suite for evaluating performance of simple memory copy in various ways.
155
156Options of *memcpy*
157^^^^^^^^^^^^^^^^^^^
158-l::
Ingo Molnara69b4f72015-10-19 10:04:25 +0200159--size::
160Specify size of memory to copy (default: 1MB).
Namhyung Kim08942f62012-06-20 15:08:06 +0900161Available units are B, KB, MB, GB and TB (case insensitive).
162
Ingo Molnar2f211c82015-10-19 10:04:29 +0200163-f::
164--function::
165Specify function to copy (default: default).
166Available functions are depend on the architecture.
Namhyung Kim08942f62012-06-20 15:08:06 +0900167On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
168
Ingo Molnarb0d22e52015-10-19 10:04:28 +0200169-l::
170--nr_loops::
Namhyung Kim08942f62012-06-20 15:08:06 +0900171Repeat memcpy invocation this number of times.
172
173-c::
Ingo Molnarb14f2d32015-10-19 10:04:23 +0200174--cycles::
Namhyung Kim08942f62012-06-20 15:08:06 +0900175Use perf's cpu-cycles event instead of gettimeofday syscall.
176
Namhyung Kim08942f62012-06-20 15:08:06 +0900177*memset*::
178Suite for evaluating performance of simple memory set in various ways.
179
180Options of *memset*
181^^^^^^^^^^^^^^^^^^^
182-l::
Ingo Molnara69b4f72015-10-19 10:04:25 +0200183--size::
184Specify size of memory to set (default: 1MB).
Namhyung Kim08942f62012-06-20 15:08:06 +0900185Available units are B, KB, MB, GB and TB (case insensitive).
186
Ingo Molnar2f211c82015-10-19 10:04:29 +0200187-f::
188--function::
189Specify function to set (default: default).
190Available functions are depend on the architecture.
Namhyung Kim08942f62012-06-20 15:08:06 +0900191On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
192
Ingo Molnarb0d22e52015-10-19 10:04:28 +0200193-l::
194--nr_loops::
Namhyung Kim08942f62012-06-20 15:08:06 +0900195Repeat memset invocation this number of times.
196
197-c::
Ingo Molnarb14f2d32015-10-19 10:04:23 +0200198--cycles::
Namhyung Kim08942f62012-06-20 15:08:06 +0900199Use perf's cpu-cycles event instead of gettimeofday syscall.
200
Ramkumar Ramachandra95a2b3c2014-03-27 19:50:18 -0400201SUITES FOR 'numa'
202~~~~~~~~~~~~~~~~~
203*mem*::
204Suite for evaluating NUMA workloads.
205
206SUITES FOR 'futex'
207~~~~~~~~~~~~~~~~~~
208*hash*::
209Suite for evaluating hash tables.
210
211*wake*::
212Suite for evaluating wake calls.
213
Davidlohr Buesod65817b2015-05-08 11:37:59 -0700214*wake-parallel*::
215Suite for evaluating parallel wake calls.
216
Ramkumar Ramachandra95a2b3c2014-03-27 19:50:18 -0400217*requeue*::
218Suite for evaluating requeue calls.
219
Davidlohr Buesod2f3f5d2015-07-07 01:55:53 -0700220*lock-pi*::
221Suite for evaluating futex lock_pi calls.
222
Davidlohr Bueso121dd9e2018-11-06 07:22:25 -0800223SUITES FOR 'epoll'
224~~~~~~~~~~~~~~~~~~
225*wait*::
226Suite for evaluating concurrent epoll_wait calls.
Davidlohr Buesod2f3f5d2015-07-07 01:55:53 -0700227
Davidlohr Bueso231457e2018-11-06 07:22:26 -0800228*ctl*::
229Suite for evaluating multiple epoll_ctl calls.
230
Ian Rogers2a4b5162020-04-02 08:43:53 -0700231SUITES FOR 'internals'
232~~~~~~~~~~~~~~~~~~~~~~
233*synthesize*::
234Suite for evaluating perf's event synthesis performance.
235
Hitoshi Mitake9fbc04f2009-11-10 20:50:54 +0900236SEE ALSO
237--------
238linkperf:perf[1]