Commit | Line | Data |
---|---|---|
9fbc04f2 | 1 | perf-bench(1) |
4778e0e8 | 2 | ============= |
9fbc04f2 HM |
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 | ----------- | |
08942f6d | 15 | This 'perf bench' command is a general framework for benchmark suites. |
9fbc04f2 HM |
16 | |
17 | COMMON OPTIONS | |
18 | -------------- | |
19 | -f:: | |
20 | --format=:: | |
21 | Specify format style. | |
854c5548 | 22 | Current available format styles are: |
9fbc04f2 HM |
23 | |
24 | 'default':: | |
25 | Default style. This is mainly for human reading. | |
26 | --------------------- | |
854c5548 | 27 | % perf bench sched pipe # with no style specified |
9fbc04f2 HM |
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 | ||
08942f6d NK |
48 | 'mem':: |
49 | Memory access performance. | |
50 | ||
95a2b3c0 RR |
51 | 'numa':: |
52 | NUMA scheduling and MM benchmarks. | |
53 | ||
54 | 'futex':: | |
55 | Futex stressing benchmarks. | |
56 | ||
08942f6d NK |
57 | 'all':: |
58 | All benchmark subsystems. | |
59 | ||
9fbc04f2 HM |
60 | SUITES FOR 'sched' |
61 | ~~~~~~~~~~~~~~~~~~ | |
62 | *messaging*:: | |
63 | Suite for evaluating performance of scheduler and IPC mechanisms. | |
64 | Based on hackbench by Rusty Russell. | |
65 | ||
08942f6d NK |
66 | Options of *messaging* |
67 | ^^^^^^^^^^^^^^^^^^^^^^ | |
9fbc04f2 HM |
68 | -p:: |
69 | --pipe:: | |
70 | Use pipe() instead of socketpair() | |
71 | ||
72 | -t:: | |
73 | --thread:: | |
74 | Be multi thread instead of multi process | |
75 | ||
76 | -g:: | |
77 | --group=:: | |
78 | Specify number of groups | |
79 | ||
80 | -l:: | |
81 | --loop=:: | |
82 | Specify number of loops | |
83 | ||
84 | Example of *messaging* | |
85 | ^^^^^^^^^^^^^^^^^^^^^^ | |
86 | ||
87 | --------------------- | |
88 | % perf bench sched messaging # run with default | |
89 | options (20 sender and receiver processes per group) | |
90 | (10 groups == 400 processes run) | |
91 | ||
92 | Total time:0.308 sec | |
93 | ||
854c5548 | 94 | % perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups |
9fbc04f2 HM |
95 | (20 sender and receiver threads per group) |
96 | (20 groups == 800 threads run) | |
97 | ||
98 | Total time:0.582 sec | |
99 | --------------------- | |
100 | ||
101 | *pipe*:: | |
102 | Suite for pipe() system call. | |
103 | Based on pipe-test-1m.c by Ingo Molnar. | |
104 | ||
105 | Options of *pipe* | |
106 | ^^^^^^^^^^^^^^^^^ | |
107 | -l:: | |
108 | --loop=:: | |
109 | Specify number of loops. | |
110 | ||
111 | Example of *pipe* | |
112 | ^^^^^^^^^^^^^^^^^ | |
113 | ||
114 | --------------------- | |
115 | % perf bench sched pipe | |
116 | (executing 1000000 pipe operations between two tasks) | |
117 | ||
118 | Total time:8.091 sec | |
119 | 8.091833 usecs/op | |
120 | 123581 ops/sec | |
121 | ||
122 | % perf bench sched pipe -l 1000 # loop 1000 | |
123 | (executing 1000 pipe operations between two tasks) | |
124 | ||
125 | Total time:0.016 sec | |
126 | 16.948000 usecs/op | |
127 | 59004 ops/sec | |
128 | --------------------- | |
129 | ||
08942f6d NK |
130 | SUITES FOR 'mem' |
131 | ~~~~~~~~~~~~~~~~ | |
132 | *memcpy*:: | |
133 | Suite for evaluating performance of simple memory copy in various ways. | |
134 | ||
135 | Options of *memcpy* | |
136 | ^^^^^^^^^^^^^^^^^^^ | |
137 | -l:: | |
138 | --length:: | |
139 | Specify length of memory to copy (default: 1MB). | |
140 | Available units are B, KB, MB, GB and TB (case insensitive). | |
141 | ||
142 | -r:: | |
143 | --routine:: | |
144 | Specify routine to copy (default: default). | |
145 | Available routines are depend on the architecture. | |
146 | On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. | |
147 | ||
148 | -i:: | |
149 | --iterations:: | |
150 | Repeat memcpy invocation this number of times. | |
151 | ||
152 | -c:: | |
17d7a112 | 153 | --cycle:: |
08942f6d NK |
154 | Use perf's cpu-cycles event instead of gettimeofday syscall. |
155 | ||
156 | -o:: | |
157 | --only-prefault:: | |
158 | Show only the result with page faults before memcpy. | |
159 | ||
160 | -n:: | |
161 | --no-prefault:: | |
162 | Show only the result without page faults before memcpy. | |
163 | ||
164 | *memset*:: | |
165 | Suite for evaluating performance of simple memory set in various ways. | |
166 | ||
167 | Options of *memset* | |
168 | ^^^^^^^^^^^^^^^^^^^ | |
169 | -l:: | |
170 | --length:: | |
171 | Specify length of memory to set (default: 1MB). | |
172 | Available units are B, KB, MB, GB and TB (case insensitive). | |
173 | ||
174 | -r:: | |
175 | --routine:: | |
176 | Specify routine to set (default: default). | |
177 | Available routines are depend on the architecture. | |
178 | On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. | |
179 | ||
180 | -i:: | |
181 | --iterations:: | |
182 | Repeat memset invocation this number of times. | |
183 | ||
184 | -c:: | |
17d7a112 | 185 | --cycle:: |
08942f6d NK |
186 | Use perf's cpu-cycles event instead of gettimeofday syscall. |
187 | ||
188 | -o:: | |
189 | --only-prefault:: | |
190 | Show only the result with page faults before memset. | |
191 | ||
192 | -n:: | |
193 | --no-prefault:: | |
194 | Show only the result without page faults before memset. | |
195 | ||
95a2b3c0 RR |
196 | SUITES FOR 'numa' |
197 | ~~~~~~~~~~~~~~~~~ | |
198 | *mem*:: | |
199 | Suite for evaluating NUMA workloads. | |
200 | ||
201 | SUITES FOR 'futex' | |
202 | ~~~~~~~~~~~~~~~~~~ | |
203 | *hash*:: | |
204 | Suite for evaluating hash tables. | |
205 | ||
206 | *wake*:: | |
207 | Suite for evaluating wake calls. | |
208 | ||
209 | *requeue*:: | |
210 | Suite for evaluating requeue calls. | |
211 | ||
9fbc04f2 HM |
212 | SEE ALSO |
213 | -------- | |
214 | linkperf:perf[1] |