Import Upstream version 1.8.5
[hcoop/debian/openafs.git] / src / libuafs / afsload / afsload.pod
1 =head1 NAME
2
3 afsload - AFS client load simulator
4
5 =head1 SYNOPSYS
6
7 B<afsload> [B<-q>] B<-p> <I<processes>> B<-t> <I<test.conf>>
8
9 =head1 DESCRIPTION
10
11 afsload consists of a few scripts that can simulate several AFS clients
12 accessing AFS, for the purposes of simulating load on a fileserver or
13 general AFS cell infrastructure. The access to AFS is done via libuafs,
14 and the synchronization between nodes is done via MPI.
15
16 The actual AFS actions performed depends on the contents of the given test
17 configuration file. See the documentation for L<AFS::Load::Config> for the
18 format of the contents of that file.
19
20 =head1 OPTIONS
21
22 =over 4
23
24 =item B<-q>
25
26 Enables "quiet" or "quick" mode. Normally the configuration file
27 specified is checked for validity. If you don't like the extra output
28 the checker gives, or you want to try to run a test configuration even
29 if it specifies errors, give this option.
30
31 =item B<-p> <I<processes>>
32
33 This dictates how many client nodes to run as part of the test run. Note
34 that the actual number of processes is a bit higher than this; this
35 specifies how many clients to simulate.
36
37 =item B<-t> <I<test.conf>>
38
39 This specifies the test configuration to use. See the documentation for
40 L<AFS::Load::Config> and L<AFS::Load::Action> for details on the
41 contents of this file.
42
43 =back
44
45 =head1 OUTPUT
46
47 The output is in TAP format. Each step defined in the test configuration
48 is a single TAP test. If any node during that step fails, the test fails
49 and diagnostic information is printed. Each step is just identified by
50 the order it appears in the configuration file, unless the test
51 configuration gives that step a name. In which case, the given name also
52 identifies that step.
53
54 Example output:
55
56 $ afsload -p 20 -t test.conf
57 # Checking if config test.conf is valid for 21 processes...
58 # Config file test.conf has no fatal errors
59 1..6
60 ok 1 - Step 1
61 ok 2 - Step 2
62 not ok 3 - Step 3: Read contents of foo
63 # Failed test 'Step 3: Read contents of foo'
64 # in /usr/local/lib/afsload/afsload_run.pl at line 127.
65 # node 2 failed:
66 # On action 2: read(foo)
67 # errno: 2
68 # error code: -1
69 # error string: got: foo contents, expected: bad contents
70 ok 4 - Step 4
71 ok 5 - Step 5
72 ok 6 - Step 6
73 # Looks like you failed 1 test of 6.
74
75 Each failure tells you which action failed, and the errno, error code,
76 and error string the action failed with. The error code and error
77 string provided are up to each individual action (see
78 L<AFS::Load::Action>), but errno is always just the errno value
79 immediately after the action failed.
80
81 =head1 ENVIRONMENT
82
83 B<afsload> makes use of these environment variables:
84
85 =over 4
86
87 =item MPIRUN
88
89 Name or location of the B<mpirun> binary to run. This must match the MPI
90 implementation that the Parallel::MPI::Simple Perl module was compiled
91 against that afsload will use.
92
93 Defaults to C<mpirun> if not specified.
94
95 =item LIBMPI
96
97 Location of the C<libmpi.so> library that we will be using. Due to
98 limitations of some MPI implementations and Perl XS modules, this
99 sometimes may need to be preloaded before running the MPI portion of
100 B<afsload>.
101
102 Defaults to C</usr/lib/libmpi.so> if not specified.
103
104 =back
105
106 =head1 AUTHORS
107
108 Andrew Deason E<lt>adeason@sinenomine.netE<gt>, Sine Nomine Associates.
109
110 =head1 COPYRIGHT
111
112 Copyright 2010-2011 Sine Nomine Associates.
113
114 =cut