Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs
[platform/adaptation/renesas_rcar/renesas_kernel.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 -f::
20 --format=::
21 Specify format style.
22 Current available format styles are:
23
24 'default'::
25 Default 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'::
35 This simple style is friendly for automated
36 processing by scripts.
37 ---------------------
38 % perf bench --format=simple sched pipe      # specified simple
39 5.988
40 ---------------------
41
42 SUBSYSTEM
43 ---------
44
45 'sched'::
46         Scheduler and IPC mechanisms.
47
48 'mem'::
49         Memory access performance.
50
51 'all'::
52         All benchmark subsystems.
53
54 SUITES FOR 'sched'
55 ~~~~~~~~~~~~~~~~~~
56 *messaging*::
57 Suite for evaluating performance of scheduler and IPC mechanisms.
58 Based on hackbench by Rusty Russell.
59
60 Options of *messaging*
61 ^^^^^^^^^^^^^^^^^^^^^^
62 -p::
63 --pipe::
64 Use pipe() instead of socketpair()
65
66 -t::
67 --thread::
68 Be multi thread instead of multi process
69
70 -g::
71 --group=::
72 Specify number of groups
73
74 -l::
75 --loop=::
76 Specify number of loops
77
78 Example of *messaging*
79 ^^^^^^^^^^^^^^^^^^^^^^
80
81 ---------------------
82 % perf bench sched messaging                 # run with default
83 options (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*::
96 Suite for pipe() system call.
97 Based on pipe-test-1m.c by Ingo Molnar.
98
99 Options of *pipe*
100 ^^^^^^^^^^^^^^^^^
101 -l::
102 --loop=::
103 Specify number of loops.
104
105 Example 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
124 SUITES FOR 'mem'
125 ~~~~~~~~~~~~~~~~
126 *memcpy*::
127 Suite for evaluating performance of simple memory copy in various ways.
128
129 Options of *memcpy*
130 ^^^^^^^^^^^^^^^^^^^
131 -l::
132 --length::
133 Specify length of memory to copy (default: 1MB).
134 Available units are B, KB, MB, GB and TB (case insensitive).
135
136 -r::
137 --routine::
138 Specify routine to copy (default: default).
139 Available routines are depend on the architecture.
140 On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported.
141
142 -i::
143 --iterations::
144 Repeat memcpy invocation this number of times.
145
146 -c::
147 --cycle::
148 Use perf's cpu-cycles event instead of gettimeofday syscall.
149
150 -o::
151 --only-prefault::
152 Show only the result with page faults before memcpy.
153
154 -n::
155 --no-prefault::
156 Show only the result without page faults before memcpy.
157
158 *memset*::
159 Suite for evaluating performance of simple memory set in various ways.
160
161 Options of *memset*
162 ^^^^^^^^^^^^^^^^^^^
163 -l::
164 --length::
165 Specify length of memory to set (default: 1MB).
166 Available units are B, KB, MB, GB and TB (case insensitive).
167
168 -r::
169 --routine::
170 Specify routine to set (default: default).
171 Available routines are depend on the architecture.
172 On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported.
173
174 -i::
175 --iterations::
176 Repeat memset invocation this number of times.
177
178 -c::
179 --cycle::
180 Use perf's cpu-cycles event instead of gettimeofday syscall.
181
182 -o::
183 --only-prefault::
184 Show only the result with page faults before memset.
185
186 -n::
187 --no-prefault::
188 Show only the result without page faults before memset.
189
190 SEE ALSO
191 --------
192 linkperf:perf[1]