Table of Contents
lmdd - move io for performance and debugging tests
lmdd [ option=value
] ...
lmdd copies a specified input file to a specified output
with possible conversions. This program is primarily useful for timing
I/O since it prints out the timing statistics after completing.
- if=name
- Input file is taken from name; internal is the default. internal is a special
file that acts like Sun’s /dev/zero, i.e., it provides a buffer of zeros
without doing a system call to get them.
- of=name
- Output file is taken from
name; internal is the default. internal is a special file that acts like
/dev/null, without doing a system call to get rid of the data.
- bs=n
- Input
and output block size n bytes (default 8192). Note that this is different
from dd(1)
, it has a 512 byte default. Also note that the block size can
be followed by ’k’ or ’m’ to indicate kilo bytes (*1024) or megabytes (*1024*1024),
respectively.
- ipat=n
- If n is non zero, expect a known pattern in the file
(see opat). Mismatches will be displayed as "ERROR: off=%d want=%x got=%x".
The pattern is a sequence of 4 byte integers with the first 0, second
1, and so on. The default is not to check for the pattern.
- opat=n
- If n is
non zero, generate a known pattern on the output stream. Used for debugging
file system correctness. The default is not to generate the pattern.
- mismatch=n
- If n is non zero, stop at the first mismatched value. Used with ipat.
- skip=n
- Skip n input blocks before starting copy.
- fsync=n
- If n is non-zero, call
fsync(2)
on the output file before exiting or printing timing statistics.
- sync=n
- If n is non-zero, call sync(2)
before exiting or printing timing
statistics.
- rand=n
- This argument, by default off, turns on random behavior.
The argument is not a flag, it is a size, that size is used as the upper
bound for the seeks. Also note that the block size can be followed by ’k’
or ’m’ to indicate kilo bytes (*1024) or megabytes (*1024*1024),
- flush=n
- If n is non-zero and mmap(2)
is available, call msync(2)
to invalidate the
output file. This flushes the file to disk so that you don’t have unmount/mount.
It is not as good as mount/unmount because it just flushes file pages
- it misses the indirect blocks which are still cached. Not supported on
all systems, compile time option.
- rusage=n
- If n is non-zero, print rusage
statistics as well as timing statistics. Not supported on all systems, compile
time option.
- count=n
- Copy only n input records.
This is the most
common usage, the intent is to measure disk performance. The disk is a spare
partition mounted on /spare.
# mount /spare
# lmdd if=internal of=/spare/XXX count=1000 fsync=1
7.81 MB in 3.78 seconds (2.0676 MB/sec)
: Flush cache
# umount /spare
# mount /spare
# lmdd if=/spare/XXX of=internal
7.81 MB in 2.83 seconds (2.7611 MB/sec)
Larry McVoy, lm@sun.com
Not copyrighted.
Table of Contents