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 | ||
51 | 'all':: | |
52 | All benchmark subsystems. | |
53 | ||
9fbc04f2 HM |
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 | ||
08942f6d NK |
60 | Options of *messaging* |
61 | ^^^^^^^^^^^^^^^^^^^^^^ | |
9fbc04f2 HM |
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 | ||
854c5548 | 88 | % perf bench sched messaging -t -g 20 # be multi-thread, with 20 groups |
9fbc04f2 HM |
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 | ||
08942f6d NK |
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:: | |
17d7a112 | 147 | --cycle:: |
08942f6d NK |
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:: | |
17d7a112 | 179 | --cycle:: |
08942f6d NK |
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 | ||
9fbc04f2 HM |
190 | SEE ALSO |
191 | -------- | |
192 | linkperf:perf[1] |