forked from MDTEST-LANL/mdtest
-
Notifications
You must be signed in to change notification settings - Fork 0
/
README
182 lines (140 loc) · 8.08 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
/******************************************************************************\
* *
* Copyright (c) 2003, The Regents of the University of California *
* See the file COPYRIGHT for a complete copyright notice and license. *
* *
\******************************************************************************/
Usage: mdtest [-a userid] [-A hostname][-b #] [-B] [-c] [-C] [-d testdir] [-D] [-e] [-E] [-f first] [-F]
[-h] [-i iterations] [-I #] [-l last] [-L] [-M] [-n #] [-N #] [-p seconds]
[-r] [-R[#]] [-s #] [-S] [-t] [-T] [-u] [-v] [-V #] [-w #] [-y]
[-z #]
-a userid for S3 target
-A hostname or IP address of S3 target
-b: branching factor of hierarchical directory structure
-B: no barriers between phases (create/stat/remove)
-c: collective creates: task 0 does all creates and deletes
-C: only create files/dirs
-d: the directory in which the tests will run
-D: perform test on directories only (no files)
-e: number of bytes to read from each file
-E: only read files
-f: first number of tasks on which the test will run
-F: perform test on files only (no directories)
-h: prints help message
-i: number of iterations the test will run
-I: number of items per tree node
-l: last number of tasks on which the test will run
-L: files/dirs created only at leaf level
-M: unique working directory for each task, and it stripes across LUSTRE MDTS
-n: every task will create/stat/remove # files/dirs per tree
-N: stride # between neighbor tasks for file/dir stat (local=0)
-p: pre-iteration delay (in seconds)
-r: only remove files/dirs
-R: randomly stat files/dirs (optional seed can be provided)
-s: stride between the number of tasks for each test (Requires 4 nodes to avoid cache effects)
-S: shared file access (file only, no directories)
-t: time unique working directory overhead
-T: only stat files/dirs
-u: unique working directory for each task
-v: verbosity (each instance of option increments by one)
-V: verbosity value
-w: number of bytes to write to each file
-y: sync file after write completion
-z: depth of hierarchical directory structure
S_3:
This version of mdtest incorporates an S3 Interface. S3 is conditionaly compiled
based on the _HAS_S3 directive. This directive along with reguired compile flags
are contained in the environment variable MDTEST_FLAGS.
mdtest version 1.9.3 was used as the basis for this modification. The basic
methodology was to modify all file/dir create, stat, and deletes to a
bucket/object create stat and delete structure. s3_mdtest uses a forked modified
version of vladistan/aws4c to create and configure the correct Amazon Web Services
header to eventually target an S3 based platform. As of this writing the forked
version has a pull request against the master. The forked, modified version is
currently residing in lanl branch of jti-lanl/aws4c.
MDTEST_FLAGS must contain Include and LIB paths for the required linked in library,
aws4c. In addition, the xml2 and curl libs must be linked in.
Here is an example of the MDTEST_FLAGS env variable:
export MDTEST_FLAGS=_I /path/to/aws4c/include -L /path/to/aws4c/lib -laws4c_extra \
-laws4c -lcurl -lxml2
After setting MDTEST_FLAGS appropriately, make is run to create the executable
Two new arguments must be set to run mdtest against the S3 target, they are:
-a userid for S3 target
-A hostname or IP address of S3 target
This version does NOT require a target path (-d) as it takes of all
bucket and object naming on the S3 target.
NOTES:
* -s Requires 4 nodes to properly stride without cache effects.
mdtest assumes you selected all 4 tests (create, stat, read, remove),
therefore it strides across 4 nodes for those tests. If you only use two nodes
and a stride of one node worth of proccesses, the create and read tests will go to
the same node, even if those are the only two tests you perform. The remove and stat
tests will go to the same node as well, even if those are the only two tests you
perform.
* -M implies the -u, but both can be used without problem.
* -N allows a "read-your-neighbor" approach by setting stride to
tasks-per-node. Do not use it with -B, as it creates race conditions.
* -d allows multiple paths for the form '-d fullpath1@fullpath2@fullpath3'
* -B allows each task to time itself. The aggregate results reflect this
change.
* -n and -I cannot be used together. -I specifies the number of files/dirs
created per tree node, whereas the -n specifies the total number of
files/dirs created over an entire tree. When using -n, integer division is
used to determine the number of files/dirs per tree node. (E.g. if -n is
10 and there are 4 tree nodes (z=1 and b=3), there will be 2 files/dirs per
tree node.)
* -R and -T can be used separately. -R merely indicates that if files/dirs
are going to be stat'ed, then they will be stat'ed randomly.
Illustration of terminology:
Hierarchical directory structure (tree)
=======
| | (tree node)
=======
/ | \
------ | ------
/ | \
======= ======= =======
| | | | | | (leaf level)
======= ======= =======
In this example, the tree has a depth of one (z=1) and branching factor of
three (b=3). The node at the top of the tree is the root node. The level
of nodes furthest from the root is the leaf level. All trees created by
mdtest are balanced.
To see how mdtest operates, do a simple run like the following:
mdtest -z 1 -b 3 -I 10 -C -i 3
This command will create a tree like the one above, then each task will
create 10 files/dirs per tree node. Three of these trees will be created
(one for each iteration).
Example usages:
mdtest -I 10 -z 5 -b 2
A directory tree is created in the current working directory that has a
depth of 5 and a branching factor of 2. Each task operates on 10
files/dirs in each tree node.
mdtest -I 10 -z 5 -b 2 -R
This example is the same as the previous one except that the files/dirs are
stat'ed randomly.
mdtest -I 10 -z 5 -b 2 -R4
Again, this example is the same as the previous except a seed of 4 is
passed to the random number generator.
mdtest -I 10 -z 5 -b 2 -L
A directory tree is created as described above, but in this example
files/dirs exist only at the leaf level of the tree.
mdtest -n 100 -i 3 -d /users/me/testing
Each task creates 100 files/dirs in a root node (there are no branches
out of the root node) within the path /users/me/testing. This is done
three times. Aggregate values are calculated over the iterations.
mdtest -n 100 -F -C
Each task only creates 100 files in the current directory.
Directories are not created. The files are neither stat'ed nor
removed.
mdtest -I 5 -z 3 -b 5 -u -d /users/me/testing
Each task creates a directory tree in the /users/me/testing
directory. Each tree has a depth of 3 and a branching factor of
5. Five files/dirs are operated upon in each node of each tree.
mdtest -I 5 -z 3 -b 5 -u -d /users/me/testing@/some/other/location
This run is the same as the previous except that each task creates
its tree in a different directory. Task 0 will create a tree in
/users/me/testing. Task 1 will create a tree in /some/other/location.
After all of the directories are used, the remaining tasks round-
robin over the directories supplied. (I.e. Task 2 will create a
tree in /users/me/testing, etc.)