-
Notifications
You must be signed in to change notification settings - Fork 1
/
bonnie++.8
221 lines (192 loc) · 7.05 KB
/
bonnie++.8
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
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
.TH bonnie++ 8
.SH "NAME"
bonnie++ \- program to test hard drive performance.
.SH "SYNOPSIS"
.B bonnie++
.I [\-d dir] [\-s size(MiB)[:chunk\-size(b)]]
.I [\-n number\-to\-stat(*1024)[:max\-size[:min\-size][:num\-directories]]]
.I [\-m machine\-name] [\-r ram\-size\-in\-MiB] [\-x number\-of\-tests]
.I [\-u uid\-to\-use:gid\-to\-use] [\-g gid\-to\-use]
.I [\-q] [\-f] [\-b] [\-D] [\-p processes | \-y]
.SH "DESCRIPTION"
This manual page documents briefly the
.BR bonnie++ ,
program.
.P
Bonnie++ is a program to test hard drives and file systems for performance or
the lack therof. There are a many different types of file system operations
which different applications use to different degrees. Bonnie++ tests some of
them and for each test gives a result of the amount of work done per second
and the percentage of CPU time this took. For performance results higher
numbers are better, for CPU usage lower are better (NB a configuration scoring
a performance result of 2000 and a CPU result of 90% is better in terms of CPU
use than a configuration delivering performance of 1000 and CPU usage of 60%).
.P
There are two sections to the program's operations. The first is to test the
IO throughput in a fashion that is designed to simulate some types of database
applications. The second is to test creation, reading, and deleting many small
files in a fashion similar to the usage patterns of programs such as Squid or
INN.
.P
All the details of the tests performed by Bonnie++ are contained in the file
.BR /usr/share/doc/bonnie++/readme.html
.SH "OPTIONS"
For Bonnie++ every option is of the form of a hyphen followed by a letter and
then the next parameter contains the value.
.TP
.B \-d
the directory to use for the tests.
.TP
.B \-s
the size of the file(s) for IO performance measures in megabytes. If the size
is greater than 1G then multiple files will be used to store the data, and
each file will be up to 1G in size. This parameter may include the chunk size
seperated from the size by a colon. The chunk\-size is measured in bytes and
must be a power of two from 256 to 1048576, the default is 8192. NB You can
specify the size in giga\-bytes or the chunk\-size in kilo\-bytes if you add
\f3g\f1 or \f3k\f1 to the end of the number respectively.
If the specified size is 0 then this test will be skipped.
.TP
.B \-n
the number of files for the file creation test. This is measured in multiples
of 1024 files. This is because no\-one will want to test less than 1024 files,
and we need the extra space on braille displays.
The maximum value for this is 262143, that is 268,434,432 files - it should be
enough.
If the specified number is 0 then this test will be skipped.
The default for this test is to test with 0 byte files. To use files of other
sizes you can specify
.B number:max:min:num\-directories
where
.B max
is the maximum size and
.B min
is the minimum size (both default to 0 if not specified). If minimum and
maximum sizes are specified then every file will have a random size from the
range
.B min..max
inclusive. If you specify a number of directories then the files will be
evenly distributed amoung that many sub\-directories.
If
.B max
is
.B \-1
then hard links will be created instead of files.
If
.B max
is
.B \-2
then soft links will be created instead of files.
.TP
.B \-m
name of the machine \- for display purposes only.
.TP
.B \-r
RAM size in megabytes. If you specify this the other parameters will be
checked to ensure they make sense for a machine of that much RAM. You should
not need to do this in general use as it should be able to discover the RAM
size. NB If you specify a size of 0 then all checks will be disabled...
.TP
.B \-x
number of test runs. This is useful if you want to perform more than one test.
It will dump output continuously in CSV format until either the number of
tests have been completed, or it is killed.
.TP
.B \-u
user\-id to use. When running as root specify the UID to use for the tests. It
is not recommended to use root (since the occasion when a Bonnie++ bug wiped
out someone's system), so if you really want to run as root then use
.B \-u root.
Also if you want to specify the group to run as then use the
.B user:group
format. If you specify a user by name but no group then the primary group of
that user will be chosen. If you specify a user by number and no group then
the group will be
.B nogroup.
.TP
.B \-g
group\-id to use. Same as using
.B :group
for the
.B \-u
parameter, just a different way to specify it for compatibility with other
programs.
.TP
.B \-q
quiet mode. If specified then some of the extra informational messages will be
suppressed.
.TP
.B \-f
fast mode, skips per\-char IO tests.
.TP
.B \-b
no write buffering. fsync() after every write.
.TP
.B \-p
number of processes to serve semaphores for. This is used to create the
semaphores for synchronising multiple Bonnie++ processes. All the processes
which are told to use the semaphore with
.B \-y
will start each test at the same time. Use the value \-1 to delete the
semaphore.
.TP
.B \-y
wait for semaphore before each test.
.TP
.B \-D
use direct IO (O_DIRECT) for the bulk IO tests
.P
.SH "MULTIPLE PROCESSES"
Run the following commands to run three copies of Bonnie++ simultaneously:
.P
bonnie++ -p3
.P
bonnie++ -y > out1 &
.P
bonnie++ -y > out2 &
.P
bonnie++ -y > out3 &
.SH "OUTPUT"
The primary output is plain\-text in 80 columns which is designed to fit well
when pasted into email and which will work well with Braille displays.
.P
The second type of output is CSV (Comma Seperated Values). This can easily be
imported into any spread\-sheet or database program. Also I have included
the programs
.B bon_csv2html
and
.B bon_csv2txt
to convert CSV data to HTML and plain\-ascii respectively.
.P
For every test two numbers are reported, the amount of work done (higher
numbers are better) and the percentage of CPU time taken to perform the work
(lower numbers are better). If a test completes in less than 500ms then
the output will be displayed as "++++". This is because such a test result
can't be calculated accurately due to rounding errors and I would rather
display no result than a wrong result.
.SH "AUTHOR"
This program, its manual page, and the Debian package were written by
Russell Coker <[email protected]>, parts of the program are based on the
work of Tim Bray <[email protected]>.
.P
The documentation, the Perl scripts, and all the code for testing the creation
of thousands of files was written by Russell Coker, but the entire package is
under joint copyright with Tim Bray.
.SH "SIGNALS"
Handles SIGINT and does a cleanup (which may take some time), a second SIGINT
or a SIGQUIT will cause it to immediately die.
.P
SIGXCPU and SIGXFSZ act like SIGINT.
.P
Ignores SIGHUP.
.SH "BUGS"
The random file sizes will add up to different values for different test runs.
I plan to add some code that checks the sum and ensures that the sum of the
values will be the same on seperate runs.
.SH "AVAILABILITY"
The source is available from http://www.coker.com.au/bonnie++ .
.P
See http://etbe.coker.com.au/category/benchmark for further information.
.SH "SEE ALSO"
.BR bon_csv2html (1),
.BR bon_csv2txt (1)