xref: /linux/tools/perf/Documentation/perf-bench.txt (revision 0d456bad36d42d16022be045c8a53ddbb59ee478)
1perf-bench(1)
2=============
3
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-----------
15This 'perf bench' command is a general framework for benchmark suites.
16
17COMMON OPTIONS
18--------------
19-f::
20--format=::
21Specify format style.
22Current available format styles are:
23
24'default'::
25Default style. This is mainly for human reading.
26---------------------
27% perf bench sched pipe                      # with no style specified
28(executing 1000000 pipe operations between two tasks)
29        Total time:5.855 sec
30                5.855061 usecs/op
31		170792 ops/sec
32---------------------
33
34'simple'::
35This simple style is friendly for automated
36processing by scripts.
37---------------------
38% perf bench --format=simple sched pipe      # specified simple
395.988
40---------------------
41
42SUBSYSTEM
43---------
44
45'sched'::
46	Scheduler and IPC mechanisms.
47
48'mem'::
49	Memory access performance.
50
51'all'::
52	All benchmark subsystems.
53
54SUITES FOR 'sched'
55~~~~~~~~~~~~~~~~~~
56*messaging*::
57Suite for evaluating performance of scheduler and IPC mechanisms.
58Based on hackbench by Rusty Russell.
59
60Options of *messaging*
61^^^^^^^^^^^^^^^^^^^^^^
62-p::
63--pipe::
64Use pipe() instead of socketpair()
65
66-t::
67--thread::
68Be multi thread instead of multi process
69
70-g::
71--group=::
72Specify number of groups
73
74-l::
75--loop=::
76Specify number of loops
77
78Example of *messaging*
79^^^^^^^^^^^^^^^^^^^^^^
80
81---------------------
82% perf bench sched messaging                 # run with default
83options (20 sender and receiver processes per group)
84(10 groups == 400 processes run)
85
86      Total time:0.308 sec
87
88% perf bench sched messaging -t -g 20        # be multi-thread, with 20 groups
89(20 sender and receiver threads per group)
90(20 groups == 800 threads run)
91
92      Total time:0.582 sec
93---------------------
94
95*pipe*::
96Suite for pipe() system call.
97Based on pipe-test-1m.c by Ingo Molnar.
98
99Options of *pipe*
100^^^^^^^^^^^^^^^^^
101-l::
102--loop=::
103Specify number of loops.
104
105Example of *pipe*
106^^^^^^^^^^^^^^^^^
107
108---------------------
109% perf bench sched pipe
110(executing 1000000 pipe operations between two tasks)
111
112        Total time:8.091 sec
113                8.091833 usecs/op
114                123581 ops/sec
115
116% perf bench sched pipe -l 1000              # loop 1000
117(executing 1000 pipe operations between two tasks)
118
119        Total time:0.016 sec
120                16.948000 usecs/op
121                59004 ops/sec
122---------------------
123
124SUITES FOR 'mem'
125~~~~~~~~~~~~~~~~
126*memcpy*::
127Suite for evaluating performance of simple memory copy in various ways.
128
129Options of *memcpy*
130^^^^^^^^^^^^^^^^^^^
131-l::
132--length::
133Specify length of memory to copy (default: 1MB).
134Available units are B, KB, MB, GB and TB (case insensitive).
135
136-r::
137--routine::
138Specify routine to copy (default: default).
139Available routines are depend on the architecture.
140On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
141
142-i::
143--iterations::
144Repeat memcpy invocation this number of times.
145
146-c::
147--cycle::
148Use perf's cpu-cycles event instead of gettimeofday syscall.
149
150-o::
151--only-prefault::
152Show only the result with page faults before memcpy.
153
154-n::
155--no-prefault::
156Show only the result without page faults before memcpy.
157
158*memset*::
159Suite for evaluating performance of simple memory set in various ways.
160
161Options of *memset*
162^^^^^^^^^^^^^^^^^^^
163-l::
164--length::
165Specify length of memory to set (default: 1MB).
166Available units are B, KB, MB, GB and TB (case insensitive).
167
168-r::
169--routine::
170Specify routine to set (default: default).
171Available routines are depend on the architecture.
172On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
173
174-i::
175--iterations::
176Repeat memset invocation this number of times.
177
178-c::
179--cycle::
180Use perf's cpu-cycles event instead of gettimeofday syscall.
181
182-o::
183--only-prefault::
184Show only the result with page faults before memset.
185
186-n::
187--no-prefault::
188Show only the result without page faults before memset.
189
190SEE ALSO
191--------
192linkperf:perf[1]
193