#./mongo.pl opt11=val11 opt12=val12 ... RUN
[opt21=val21 opt22=val22 ... RUN opt31=val31 opt32=val32 ... RUN
... | @<file to include>],
where opt1j (j = 1, 2, ...) are required and maybe another mongo options, optij (i = 2, ...; j = 1, 2, ...) - mongo options. The expression "optij=valij" means that mongo option optij was specified by the value valij. Here is a description of acceptable values of all mongo options:
Required mongo options:
FSTYPE - filesystem type (e.g. ext3)
DEV - device file name (e.g. /dev/hda9)
DIR - mount-point for the filesystem (e.g. /mnt/testfs)
FILE_SIZE - file size in bytes (e.g. 10000) used in reiser_fract_tree, this is passed to the main generator function determine_size() (see below).
BYTES - file set size in bytes (e.g. 250000000) created by all instances of reiser_fract_tree in one pass. To have results free from buffer cache influence, it has to satisfy to the property: BYTES * REP_COUNTER > ramsize.
Other mongo options:
MKFS - path to the executable file that creates testing filesystem (e.g. /sbin/mkreiserfs). By default (if it is not reiserfs or ext2) mongo.pl tries to create it by the command "mkfs.filesystem_name", so make sure it is available.
MOUNT_OPTIONS - list of mount options separated as usual by commas (e.g. rw,notail).
NPROC - number of processes running simultaneously (3 by default).
REP_COUNTER - number of passes of each mongo phase (3 by default). Each mongo statistics is an average value of REP_COUNTER results. So using REP_COUNTER > 1 reduces dispersion and improves mongo statistics.
SYNC - this option requires one of two strings :"on"/"off" ("off" by default). "on" means forcing of syncing to iozone of regular files in create, copy, append, modify phases.
WRITE_BUFFER - read/write buffer size in bytes for mongo utilities (4096 by default).
GAMMA - the exponent of the core file size distribution of the random value generator determine_size() used in mongo_fract_tree() (see below). GAMMA values are in [0,1] (e.g. 0.2, default value is 0.0).
JOURNAL_DEV - journal device name. This is an option only for reiserfs with non-standard journal support. By default mkreiserfs creates journal on main device (DEV).
JOURNAL_SIZE - journal size in blocks including journal header (e.g. 513). This is an option only for reiserfs with non-standard journal support. By default mkreiserfs creates journal of standard size (8193).
DD_MBCOUNT - size in megabytes of the large file that we want to read (write) by "dd" program. If this option specified mongo executes two special phases "dd_reading_largefile" and "dd_writing_largefile" (see mongo phases description below).
- the name of the file where you wish to store statistics result
tree that mongo.pl creates for each mongo run (see
below). Regardless of this option, mongo.pl writes all the
results into stdout, but we recommend specify it for each file
system variations you want to compare, as it will enable you to
create comparative html-table by mongo_parser.pl script.
INFO_R4 - string information the benchmarked reiser4 version about. This is required option if FSTYPE=reiser4 is set.
Mongo phases settings options
(see mongo phases description below).
PHASE_CREATE - setting for create phase : "on"/"off" ("on" by default). PHASE_COPY - setting for copy phase. This option requires one of the following values : "off"/"cp"/"list". In "cp" mode cp(1) is invoked to copy files. In "list" mode (deafult) uses mongo_copy to copy files. See mongo_copy.c for details. PHASE_APPEND - setting for append phase : "on"/"off" ("on" by default). PHASE_MODIFY - setting for modify phase : "on"/"off" ("on" by default). PHASE_OVERWRITE - setting for overwrite phase : "on"/"off" ("on" by default). PHASE_READ - setting for read phase. The required values are "off"/"find"/"list". In "find" mode find(1) is used to read the files. In "list" mode (deafult) mongo_read is used. See mongo_read.c for details. PHASE_STATS - setting for stats phase : "on"/"off" ("on" by default). PHASE_DELETE - setting for delete phase. This option requires one of the following values : "off"/"rm"/"list". In "cp" mode rm(1) is used to delete the working file set. In "list" mode (deafult) mongo_delete is used. See mongo_delete.c for details.
Special required command:
- defines one mongo run (while the whole string defines one mongo
session) which starts all default and maybe some special mongo
phases (see below) defined by the options specified before this
command. The mongo options keep its values (specified or
default) during all the mongo.pl session unless you respecify
./mongo.pl LOG=/tmp/logfile1 file_size=10000 bytes=10000000
fstype=reiserfs dev=/dev/hda9 dir=/mnt/testfs RUN
log=/tmp/logfile2 mount_options=notail RUN
- We recommend to specify all the mongo options you want in one
file instead of command string, since to edit a file is more
convenient then the command string. Each specification must occupy
one string in this file. For example, previous command can be
rewritten if you place all the options with first "RUN" in the file "mongo.opts":
./mongo.pl log=/tmp/logfile1 @mongo.opts log=/tmp/logfile2 mount_options=notail RUN
mongo.pl executes one or more mongo runs defined by specified options. For each run mongo.pl creates the tree of mongo statistics (statistics result tree).
WARNING: mongo.pl will format each specified device DEV by 'mkfs.xxx' and mount it at MNT directory.
#./mongo_parser.pl log1 [log2 log3 ...] > comparative_table.html
where log1, log2, log3, ... - names of the files which contains
statistics result trees created by mongo.pl. Each those file should
contain only one statistics result tree.
WARNING: The result trees of all specified files file1, file2, file3, ... must be mutually phase-isomorphic. Example: The result trees of logfile1, logfile2 from the example above are phase-isomorphic. On the other hand, specifying of log1, log2, log3 from the following example is not available, since the result trees of log2, log3 are non-isomorphic (different file_size).:
./mongo.pl log=log1 file_size=10000 bytes=10000000 fstype=reiserfs dev=/dev/hda9 dir=/mnt/testfs RUN log=log2 mount_options=notail RUN log=log3 file_size=20000
mongo_parser.pl creates a comparative html-table of specified result trees.
FIGURE 1. The distribution function of the main generator determine_size().
mongo_parser.pl script is to prepare comparative table for one
or more file system variations. First you should prepare the
appropriate mongo output files for each variation by using
mongo.pl script. Make sure that all these files contain
phase-isomorphic result trees (see above). Then specify these
filenames for mongo_parser.pl (see the usage above) which will
create comparative html table (by default in stdout). The file
system variations are represented in this table by the columns of
statistics marked by letter A, B, C, etc.. in the order they were
specified in mongo_parser.pl. The header of this table contains
specifications of each this variation as the set of the same mongo
fs-options which have different values. Absence of any fs-option
means it was specified by default value. If this table represents
more then one file system variations, we assume by default that A
is main, and B, C, ... is A-relative variations. It means that all
the statistics of B, C,... are divided on the appropriate
statistics of A.
The options specified by identical values for all the file system variations locates in special header.
The statistics of each phase variation are specified by subheading (numerated by #1, #2, ...).
Here is an example of Mongo comparative table.