Example 1: See what workloads are available
$nfsometerworkloads
This command lists available workloads and will tell you why
workloads are unavailable (if any exist).
Example 2: Compare cthon, averaged over 3 runs,
across nfs protocol versions
nfsometer-n3server:/exportcthon
This example uses the default for -o: "-o v3 -o v4 -o v4.1".
To see the results, open results/index.html in a web browser.
Example 3: Compare cthon, averaged over 3 runs,
between v3 and v4.0 only
nfsometer-n3-ov3-ov4server:/exportcthon
This example specifies v3 and v4 only.
To see the results, open results/index.html in a web browser.
Example 4: Compare two kernels running iozone workload, averaged
over 2 runs, across all nfs protocol versions
nfsometer can compare two (or more) kernel versions, but
has no way of building, installing or booting new kernels.
It's up to the user to install new kernels.
In order for these kernels to be differentiated, 'uname -a'
must be different.
1) boot into kernel #1
2) nfsometer-n2server:/exportiozone
3) boot into kernel #2
4) nfsometer-n2server:/exportiozone
5) open results/index.html in a web browser
To see the results, open results/index.html in a web browser.
Example 5: Using tags
Tags (the -t option) can be used to mark nfsometer runs as
occurring with some configuration not captured by mount options
or detectable tags, such as different sysctl settings (client side),
different server side options, or different network conditions.
1) set server value foo to 2.3
2) nfsometer-ov4-ov4.1-tfoo=2.3
3) set server value foo to 10
4) nfsometer-ov4-ov4.1-tfoo=10
What is passed to -t is entirely up to the user - it will not be
interpreted or checked by nfsometer at all, so be careful!
To see the results, open results/index.html in a web browser.
Example 6: Always options
The -o flag specifies distinct option sets to run, but sometimes
there are options that should be present in each. Instead of
writing each one out, you can use the -a option:
nfsometer-ov3-ov4-asec=krb5server:/exportiozone
this is equivalent to:
nfsometer-ov3,sec=krb5-ov4,sec=krb5server:/exportiozone
Example 7: Using the "custom" workload
A main use case of nfsometer is the "custom" workload - it allows
the user to specify the command that nfsometer is to run.
NOTE: the command's cwd (current working directory) is the runroot
created on the server.
exportNFSOMETER_CMD="echofoo>bar"exportNFSOMETER_NAME="echo"exportNFSOMETER_DESC="Writes4bytestoafile"nfsometerserver:/exportcustom
This will run 3 traces (v3, v4, v4.1) against server:/export of
the command: echofoo>bar.
Example 8: Using the loadgen mode
Loadgen runs several instances of a workload without capturing
traces. The idea is that you use several clients to generate
load, then another client to measure performance of a loaded
server. The "real" run of nfsometer (not loadgen) should mark
the traces using the -t option.
1) On client A, run the cthon workload to get a baseline of
a server without any load.
nfsometertraceserver:/exportcthon
2) When that's done, start loadgen on client B:
nfsometer-n10loadgenserver:/exportdd_100m_1k
This runs 10 instances of dd_100m_1k workload on server:/export.
It can take several minutes to start in an attempt to stagger
all the workload instances.
3) once all instances are started, run the "real" nfsometer
trace on client A. Use the -t option to mark the traces
as having run under load conditions:
nfsometer-t"10_dd"traceserver:/exportcthon
4) Explain how the tests were set up in the result notes.
This should be run on client A (which has the traces:
nfsometernotes
5) Now generate the reports:
nfsometerreport
Example 8: Long running nfsometer trace
The nfsometer.py script currently runs in the foreground. As
such, it will be killed if the tty gets a hangup or the connection
to the client is closed.
For the time being, nfsometer should be run in a screen
session, or run with nohup and the output redirected to a file.
1) screen-RD
2) nfsometer-n2server:/exportiozone
3) close terminal window (or ^A^D)
...
4) reattach later with screen-RD
5) once nfsometer.py is done, results will be in results/index.html