104 lines
4.6 KiB
Groff
Executable File
104 lines
4.6 KiB
Groff
Executable File
.TH memtester "8" "September 2020" "memtester 4" "Maintenance Commands"
|
|
.SH NAME
|
|
memtester \- stress test to find memory subsystem faults.
|
|
.SH SYNOPSIS
|
|
.B memtester
|
|
[\f -p PHYSADDR\fR [\f -d DEVICE\fR]]
|
|
<\fIMEMORY\fR>
|
|
[\fIITERATIONS\fR]
|
|
.SH DESCRIPTION
|
|
.\" Add any additional description here
|
|
.PP
|
|
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.
|
|
.PP
|
|
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.
|
|
.PP
|
|
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.
|
|
.PP
|
|
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.
|
|
.PP
|
|
So choose wisely.
|
|
.PP
|
|
.SH OPTIONS
|
|
.TP
|
|
\f -p PHYSADDR\fR
|
|
tells memtester to test a specific region of memory starting at physical
|
|
address PHYSADDR (given in hex), by mmap(2)ing a device specified by the
|
|
-d option (below, or /dev/mem by default). 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.
|
|
.TP
|
|
\fIMEMORY\fR
|
|
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.
|
|
.TP
|
|
\fIITERATIONS\fR
|
|
(optional) number of loops to iterate through. Default is infinite.
|
|
.SH ENVIRONMENT
|
|
.PP
|
|
If the environment variable MEMTESTER_TEST_MASK is set, memtester treats the
|
|
value as a bitmask of which tests (other than the stuck address test) to run.
|
|
The value can be specified in decimal, in octal (with a leading 0), or in
|
|
hexadecimal (with a leading 0x). The specific bit values corresponding to
|
|
particular tests may change from release to release; consult the list of tests
|
|
in the source for the appropriate index values for the version of memtester you
|
|
are running. Note that skipping some tests will reduce the time it takes for
|
|
memtester to run, but also reduce memtester's effectiveness.
|
|
.SH NOTE
|
|
.PP
|
|
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.
|
|
.SH EXIT CODE
|
|
.PP
|
|
memtester's exit code is 0 when everything works properly. Otherwise,
|
|
it is the logical OR of the following values:
|
|
.TP
|
|
\f0x01
|
|
error allocating or locking memory, or invocation error
|
|
.TP
|
|
\f0x02
|
|
error during stuck address test
|
|
.TP
|
|
\f0x04
|
|
error during one of the other tests
|
|
.SH AUTHOR
|
|
Written by Charles Cazabon.
|
|
.SH "REPORTING BUGS"
|
|
Report bugs to <charlesc-memtester-bugs@pyropus.ca>.
|
|
.PP
|
|
.SH COPYRIGHT
|
|
Copyright \(co 2001-2020 Charles Cazabon
|
|
.br
|
|
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.
|