NAME¶
memtester - stress test to find memory subsystem faults.
SYNOPSIS¶
memtester [
-p PHYSADDR] <
MEMORY> [
ITERATIONS]
DESCRIPTION¶
memtester is an effective userspace tester for stress-testing the memory
subsystem. It is very effective at finding intermittent and non-deterministic
faults. Note that problems in other hardware areas (overheating CPU,
out-of-specification power supply, etc.) can cause intermittent memory faults,
so it is still up to you to determine where the fault lies through normal
hardware diagnostic procedures; memtester just helps you determine whether a
problem exists.
memtester will
malloc(3) the amount of memory specified, if possible. If this
fails, it will decrease the amount of memory requested until it succeeds. It
will then attempt to mlock(3) this memory; if it cannot do so, testing will be
slower and much less effective. Run memtester as root so that it can mlock the
memory it tests.
Note that the maximum amount of memory that memtester can test will be less than
the total amount of memory installed in the system; the operating system,
libraries, and other system limits take some of the available memory.
memtester is also limited to the amount of memory available to a single
process; for example, on 32-bit machines with more than 4GB of memory,
memtester is still limited to less than 4GB.
Note that it is up to you to know how much memory you can safely allocate for
testing. If you attempt to allocate more memory than is available, memtester
should figure that out, reduce the amount slightly, and try again. However,
this can lead to memtester successfully allocating and mlocking essentially
all free memory on the system -- if other programs are running, this can lead
to excessive swapping and slowing the system down to the point that it is
difficult to use. If the system allows allocation of more memory than is
actually available (overcommit), it may lead to a deadlock, where the system
halts. If the system has an out-of-memory process killer (like Linux),
memtester or another process may be killed by the OOM killer.
So choose wisely.
OPTIONS¶
- -p PHYSADDR
- tells memtester to test a specific region of memory
starting at physical address PHYSADDR (given in hex), by mmap(2)ing
/dev/mem. This is mostly of use to hardware developers, for testing
memory-mapped I/O devices and similar. Note that the memory region will be
overwritten during testing, so it is not safe to specify memory which is
allocated for the system or for other applications; doing so will cause
them to crash. If you absolutely must test a particular region of actual
physical memory, arrange to have that memory allocated by your test
software, and hold it in this allocated state, then run memtester on it
with this option.
- MEMORY
- the amount of memory to allocate and test, in megabytes by
default. You can include a suffix of B, K, M, or G to indicate bytes,
kilobytes, megabytes, or gigabytes respectively.
- ITERATIONS
- (optional) number of loops to iterate through. Default is
infinite.
NOTE¶
memtester must be run with root privileges to mlock(3) its pages. Testing memory
without locking the pages in place is mostly pointless and slow.
EXIT CODE¶
memtester's exit code is 0 when everything works properly. Otherwise, it is the
logical OR of the following values:
- x01
- error allocating or locking memory, or invocation
error
- x02
- error during stuck address test
- x04
- error during one of the other tests
AUTHOR¶
Written by Charles Cazabon.
REPORTING BUGS¶
Report bugs to <charlesc-memtester-bugs@pyropus.ca>.
COPYRIGHT¶
Copyright © 2009 Charles Cazabon
This is free software; see the file COPYING for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR
PURPOSE.