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 | -------------- | |
b6f0629a DB |
19 | -r:: |
20 | --repeat=:: | |
21 | Specify amount of times to repeat the run (default 10). | |
22 | ||
9fbc04f2 HM |
23 | -f:: |
24 | --format=:: | |
25 | Specify format style. | |
854c5548 | 26 | Current available format styles are: |
9fbc04f2 HM |
27 | |
28 | 'default':: | |
29 | Default style. This is mainly for human reading. | |
30 | --------------------- | |
854c5548 | 31 | % perf bench sched pipe # with no style specified |
9fbc04f2 HM |
32 | (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':: | |
39 | This simple style is friendly for automated | |
40 | processing by scripts. | |
41 | --------------------- | |
42 | % perf bench --format=simple sched pipe # specified simple | |
43 | 5.988 | |
44 | --------------------- | |
45 | ||
46 | SUBSYSTEM | |
47 | --------- | |
48 | ||
49 | 'sched':: | |
50 | Scheduler and IPC mechanisms. | |
51 | ||
08942f6d NK |
52 | 'mem':: |
53 | Memory access performance. | |
54 | ||
95a2b3c0 RR |
55 | 'numa':: |
56 | NUMA scheduling and MM benchmarks. | |
57 | ||
58 | 'futex':: | |
59 | Futex stressing benchmarks. | |
60 | ||
08942f6d NK |
61 | 'all':: |
62 | All benchmark subsystems. | |
63 | ||
9fbc04f2 HM |
64 | SUITES FOR 'sched' |
65 | ~~~~~~~~~~~~~~~~~~ | |
66 | *messaging*:: | |
67 | Suite for evaluating performance of scheduler and IPC mechanisms. | |
68 | Based on hackbench by Rusty Russell. | |
69 | ||
08942f6d NK |
70 | Options of *messaging* |
71 | ^^^^^^^^^^^^^^^^^^^^^^ | |
9fbc04f2 HM |
72 | -p:: |
73 | --pipe:: | |
74 | Use pipe() instead of socketpair() | |
75 | ||
76 | -t:: | |
77 | --thread:: | |
78 | Be multi thread instead of multi process | |
79 | ||
80 | -g:: | |
81 | --group=:: | |
82 | Specify number of groups | |
83 | ||
84 | -l:: | |
b0d22e52 | 85 | --nr_loops=:: |
9fbc04f2 HM |
86 | Specify number of loops |
87 | ||
88 | Example of *messaging* | |
89 | ^^^^^^^^^^^^^^^^^^^^^^ | |
90 | ||
91 | --------------------- | |
92 | % perf bench sched messaging # run with default | |
93 | options (20 sender and receiver processes per group) | |
94 | (10 groups == 400 processes run) | |
95 | ||
96 | Total time:0.308 sec | |
97 | ||
854c5548 | 98 | % perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups |
9fbc04f2 HM |
99 | (20 sender and receiver threads per group) |
100 | (20 groups == 800 threads run) | |
101 | ||
102 | Total time:0.582 sec | |
103 | --------------------- | |
104 | ||
105 | *pipe*:: | |
106 | Suite for pipe() system call. | |
107 | Based on pipe-test-1m.c by Ingo Molnar. | |
108 | ||
109 | Options of *pipe* | |
110 | ^^^^^^^^^^^^^^^^^ | |
111 | -l:: | |
112 | --loop=:: | |
113 | Specify number of loops. | |
114 | ||
115 | Example 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 | ||
08942f6d NK |
134 | SUITES FOR 'mem' |
135 | ~~~~~~~~~~~~~~~~ | |
136 | *memcpy*:: | |
137 | Suite for evaluating performance of simple memory copy in various ways. | |
138 | ||
139 | Options of *memcpy* | |
140 | ^^^^^^^^^^^^^^^^^^^ | |
141 | -l:: | |
a69b4f74 IM |
142 | --size:: |
143 | Specify size of memory to copy (default: 1MB). | |
08942f6d NK |
144 | Available units are B, KB, MB, GB and TB (case insensitive). |
145 | ||
2f211c84 IM |
146 | -f:: |
147 | --function:: | |
148 | Specify function to copy (default: default). | |
149 | Available functions are depend on the architecture. | |
08942f6d NK |
150 | On x86-64, x86-64-unrolled, x86-64-movsq and x86-64-movsb are supported. |
151 | ||
b0d22e52 IM |
152 | -l:: |
153 | --nr_loops:: | |
08942f6d NK |
154 | Repeat memcpy invocation this number of times. |
155 | ||
156 | -c:: | |
b14f2d35 | 157 | --cycles:: |
08942f6d NK |
158 | Use perf's cpu-cycles event instead of gettimeofday syscall. |
159 | ||
08942f6d NK |
160 | *memset*:: |
161 | Suite for evaluating performance of simple memory set in various ways. | |
162 | ||
163 | Options of *memset* | |
164 | ^^^^^^^^^^^^^^^^^^^ | |
165 | -l:: | |
a69b4f74 IM |
166 | --size:: |
167 | Specify size of memory to set (default: 1MB). | |
08942f6d NK |
168 | Available units are B, KB, MB, GB and TB (case insensitive). |
169 | ||
2f211c84 IM |
170 | -f:: |
171 | --function:: | |
172 | Specify function to set (default: default). | |
173 | Available functions are depend on the architecture. | |
08942f6d NK |
174 | On x86-64, x86-64-unrolled, x86-64-stosq and x86-64-stosb are supported. |
175 | ||
b0d22e52 IM |
176 | -l:: |
177 | --nr_loops:: | |
08942f6d NK |
178 | Repeat memset invocation this number of times. |
179 | ||
180 | -c:: | |
b14f2d35 | 181 | --cycles:: |
08942f6d NK |
182 | Use perf's cpu-cycles event instead of gettimeofday syscall. |
183 | ||
95a2b3c0 RR |
184 | SUITES FOR 'numa' |
185 | ~~~~~~~~~~~~~~~~~ | |
186 | *mem*:: | |
187 | Suite for evaluating NUMA workloads. | |
188 | ||
189 | SUITES FOR 'futex' | |
190 | ~~~~~~~~~~~~~~~~~~ | |
191 | *hash*:: | |
192 | Suite for evaluating hash tables. | |
193 | ||
194 | *wake*:: | |
195 | Suite for evaluating wake calls. | |
196 | ||
d65817b4 DB |
197 | *wake-parallel*:: |
198 | Suite for evaluating parallel wake calls. | |
199 | ||
95a2b3c0 RR |
200 | *requeue*:: |
201 | Suite for evaluating requeue calls. | |
202 | ||
d2f3f5d2 DB |
203 | *lock-pi*:: |
204 | Suite for evaluating futex lock_pi calls. | |
205 | ||
206 | ||
9fbc04f2 HM |
207 | SEE ALSO |
208 | -------- | |
209 | linkperf:perf[1] |