1man(1) General Commands Manual man(1)
2
3
4
6 nfsometer - NFS performance measurement tool
7
9 nfsometer [options] [mode] [[<server:path>] [workloads...]]
10
12 nfsometer is a performance measurement framework for running workloads
13 and reporting results across NFS protocol versions, NFS options and
14 Linux NFS client implementations
15
17 Basic usage (no mode specified):
18
19 nfsometer <server:path> [workloads...]
20
21 This will fetch needed files, run traces, and generate reports,
22 same as running the the 'fetch', 'trace' and 'report' stages.
23
24 Advanced usage (specify modes):
25
26 nfsometer list
27
28 List the contents of the results directory.
29
30 nfsometer workloads
31
32 List available and unavailable workloads.
33
34 nfsometer notes
35
36 Edit the notes file of the results directory. These notes will
37 be displayed in report headers.
38
39 nfsometer loadgen <server:path> <workload>
40
41 Run in loadgen mode: don't record any stats, just loop over
42 <workload> against <server:path>. Only one -o option is allowed.
43 Use the -n option to run multuple instances of the loadgen work‐
44 load.
45 When running more than one instance, the intial start times are
46 staggered.
47
48 nfsometer fetch [workloads...]
49
50 Fetch all needed files for the specified workload(s). If no
51 workloads are specified, all workloads are fetched.
52 Fetched files are only downloaded once and are cached for
53 future runs.
54
55 nfsometer trace <server:path> [workloads...]
56
57 Run traces against <server:path>. The traces run will be:
58 (options + always options + tags) X (workloads) X (num runs)
59 This will only run traces that don't already exist in the results
60 directory.
61
62 nfsometer report
63
64 Generate all reports available from the results directory.
65
66 nfsometer example
67
68 Show examples from man page
69
71 -r <dir>, --resultdir=<dir>
72 The directory used to save results. default: '/home/dros/nfsome‐
73 ter_results'
74
75
76
77 -o <mount.nfs options>, --options=<mount.nfs options>
78 Mount options to iterate through. This option may be used multi‐
79 ple times. Each mount option must have a version specified.
80
81
82
83 -a <mount.nfs options>, --always-options=<mount.nfs options>
84 Options added to every trace. This option may be used multiple
85 times.
86
87
88
89 -t <tags>, --tag=<tags>
90 Tag all new traces with 'tags'. This option may be used multiple
91 times.
92
93
94
95 -n <num runs>, --num-runs=<num runs>
96 Number of runs for each trace of <options> X <tags> X <workloads>
97 default: 1
98
99
100
101 --serial-graphs
102 Generate graphs inline while generating reports. Useful for
103 debugging graphing issues.
104
105
106
107 --rand
108 Randomize the order of traces
109
110
111
112 -h, --help
113 Show the help message
114
116 Example 1: See what workloads are available
117
118 $ nfsometer workloads
119
120 This command lists available workloads and will tell you why
121 workloads are unavailable (if any exist).
122
123
124 Example 2: Compare cthon, averaged over 3 runs,
125 across nfs protocol versions
126
127 nfsometer -n 3 server:/export cthon
128
129 This example uses the default for -o: "-o v3 -o v4 -o v4.1".
130 To see the results, open results/index.html in a web browser.
131
132
133 Example 3: Compare cthon, averaged over 3 runs,
134 between v3 and v4.0 only
135
136 nfsometer -n 3 -o v3 -o v4 server:/export cthon
137
138 This example specifies v3 and v4 only.
139 To see the results, open results/index.html in a web browser.
140
141
142 Example 4: Compare two kernels running iozone workload, averaged
143 over 2 runs, across all nfs protocol versions
144
145 nfsometer can compare two (or more) kernel versions, but
146 has no way of building, installing or booting new kernels.
147 It's up to the user to install new kernels.
148 In order for these kernels to be differentiated, 'uname -a'
149 must be different.
150
151 1) boot into kernel #1
152
153 2) nfsometer -n 2 server:/export iozone
154
155 3) boot into kernel #2
156
157 4) nfsometer -n 2 server:/export iozone
158
159 5) open results/index.html in a web browser
160
161 To see the results, open results/index.html in a web browser.
162
163
164 Example 5: Using tags
165
166 Tags (the -t option) can be used to mark nfsometer runs as
167 occurring with some configuration not captured by mount options
168 or detectable tags, such as different sysctl settings (client side),
169 different server side options, or different network conditions.
170
171 1) set server value foo to 2.3
172
173 2) nfsometer -o v4 -o v4.1 -t foo=2.3
174
175 3) set server value foo to 10
176
177 4) nfsometer -o v4 -o v4.1 -t foo=10
178
179 What is passed to -t is entirely up to the user - it will not be
180 interpreted or checked by nfsometer at all, so be careful!
181
182 To see the results, open results/index.html in a web browser.
183
184
185 Example 6: Always options
186
187 The -o flag specifies distinct option sets to run, but sometimes
188 there are options that should be present in each. Instead of
189 writing each one out, you can use the -a option:
190
191 nfsometer -o v3 -o v4 -a sec=krb5 server:/export iozone
192
193 this is equivalent to:
194
195 nfsometer -o v3,sec=krb5 -o v4,sec=krb5 server:/export iozone
196
197
198 Example 7: Using the "custom" workload
199
200 A main use case of nfsometer is the "custom" workload - it allows
201 the user to specify the command that nfsometer is to run.
202
203 NOTE: the command's cwd (current working directory) is the runroot
204 created on the server.
205
206 export NFSOMETER_CMD="echo foo > bar"
207 export NFSOMETER_NAME="echo"
208 export NFSOMETER_DESC="Writes 4 bytes to a file"
209 nfsometer server:/export custom
210
211 This will run 3 traces (v3, v4, v4.1) against server:/export of
212 the command: echo foo > bar.
213
214
215 Example 8: Using the loadgen mode
216
217 Loadgen runs several instances of a workload without capturing
218 traces. The idea is that you use several clients to generate
219 load, then another client to measure performance of a loaded
220 server. The "real" run of nfsometer (not loadgen) should mark
221 the traces using the -t option.
222
223 1) On client A, run the cthon workload to get a baseline of
224 a server without any load.
225
226 nfsometer trace server:/export cthon
227
228 2) When that's done, start loadgen on client B:
229
230 nfsometer -n 10 loadgen server:/export dd_100m_1k
231
232 This runs 10 instances of dd_100m_1k workload on server:/export.
233 It can take several minutes to start in an attempt to stagger
234 all the workload instances.
235
236 3) once all instances are started, run the "real" nfsometer
237 trace on client A. Use the -t option to mark the traces
238 as having run under load conditions:
239
240 nfsometer -t "10_dd" trace server:/export cthon
241
242 4) Explain how the tests were set up in the result notes.
243 This should be run on client A (which has the traces:
244
245 nfsometer notes
246
247 5) Now generate the reports:
248
249 nfsometer report
250
251 Example 8: Long running nfsometer trace
252
253 The nfsometer.py script currently runs in the foreground. As
254 such, it will be killed if the tty gets a hangup or the connection
255 to the client is closed.
256
257 For the time being, nfsometer should be run in a screen
258 session, or run with nohup and the output redirected to a file.
259
260 1) screen -RD
261 2) nfsometer -n 2 server:/export iozone
262 3) close terminal window (or ^A^D)
263 ...
264 4) reattach later with screen -RD
265 5) once nfsometer.py is done, results will be in results/index.html
266
268 mountstats, nfsstats
269
271 No known bugs.
272
274 Weston Andros Adamson (dros@netapp.com)
275
276
277
278nfsometer 1.7 man(1)