The goal of RUMT is to check the memory of a computer over a long period of time and almost-real load conditions without having to interrupt the services.
RUMT exploits the possibility of some Unix kernels to selectivly disable
some memory areas while still accessing them through the
/dev/mem device. The principle of RUMT is to write
pseudo-random data in these disabled memory areas, and later check them.
This principle and the original code for the deterministic pseudo-random
generator are from
David Madore.
rumt_trymem
The core of RUMT is rumt_trymem, which accepts the following
options:
-d device: use device instead of
/dev/mem.-i input seed: check the memory areas according to
input seed.-i output seed: prepare the memory areas according
to output seed.
The remaining arguments are memory areas, with one of the syntax
start+length or start-end (where end is excluded).
Values can be suffixed with k, M or p
for kilobytes, megabytes or pages (usually 4kB). All values must be
multiples of the page size.
The normal way to use RUMT is to call rumt_trymem -o
some_seed on the disabled memory areas, wait some time and
then call rumt_trymem -i with the same seed on the same memory
areas. If nothing has changed, rumt_trymem will be silent. If
something has changed, the detected bad bits will be printed as
0xAAAAAAAAAAAA.b± with AAAAAAAAAAAA the address,
b the bit, and ± the direction (+ for
a bit that should be 0 and is 1, - else).
Beware! Calling rumt_trymem -o on memory areas
used by the system will likely cause crashes or data loss. Triple check your
arguments.
rumt_daemon
rumt_daemon is a shell script that calls
rumt_trymem, keeps track of the seed, and keeps a nice table of
detected bad bits. It can be configured using the rumt.conf
auxiliary script. See the comments in this script for options.
rumt_fusion
This is a perl script used by rumt_daemon to beautify the list
of bad bits.
highmem.o
On Linux, for those who have more than 960MB of memory and so enabled the
CONFIG_HIGHMEM option, /dev/mem gives access to
only the first 768MB. This kernel module creates
/dev/misc/highmem which does not have this limit.
Beware. This code has been tested on my box without crashing it. It has also
been posted on LKML, but got no answer. I do not know if it is compatible
with the CONFIG_HIGHMEM64G option. Use at your own risks.
print_holes_linux
This perl script will parse the boot messages of a Linux kernel to guess its
command lines options and disabled memory areas. It prints one line with the
mem= arguments to the kernel, and one line with the disabled
areas in a format suitable for rumt_trymem.
You should double-check the former with your Grub/LILO/whatever
configuration and your /proc/cmdline before using the
later.
RUMT works for me at home with a 2.4.20 Linux kernel;
rumt_trymem and the shell scripts should be quite portable.
There is no installation procedure: is started from its compilation
directory; anyway, RUMT is not a program that one wants to use now and then.
Since I do not have bogus memory any more, I do not intend to keep working on it. I give it to the comunity as is, and whoever wants to enhance it is welcome.