Diagnosing memory-related problems can be one of the most difficult tasks for an administrator. For servers and high-demand workstations, especially custom-built ones, a thorough memory test is worth the time taken to do it. Bad memory can cause random, inexplicable system failures with no consistent cause or resolution.
Many companies have created memory-testing programs that run within Windows. The downside of running memory tests in Windows proper is that because of the way Windows manages and allocates memory, a truly thorough and complete memory test is simply not possible. The best way to conduct a memory test is by using a dedicated program that boots on its own and does not require an operating system.
One such program is Memtest86, a "thorough, stand alone memory test for x86 architecture computers," released as freeware under the GNU Public License. Memtest86 can be written to a floppy disk and booted, or can be burned to a CD-ROM from an ISO image and booted.
Most of the way Memtest86 works is self-configuring, but some motherboards do not report the total amount of installed memory correctly. Memtest86 compensates for this by using a series of widely-supported standards for determining the total amount of memory available. The user can also specify testing via manual probing, but this can cause the program to crash on a few motherboards. Because of the time involved in testing, the best way to use Memtest86 is to run the most thorough battery of tests on a prospective system overnight.
The results produced by Memtest86 take into account not only memory in DIMMs, but level 1 and level 2 cache memory as well. (What is cache memory? Read a definition here.) Most of the time, if there is a fatal problem, it will be with a DIMM, but if the problem is persistent across several varieties and models of DIMM then the CPU's own cache may be to blame. (The only solution for this is a new CPU, unfortunately.) Some DIMMs simply do not work well in some varieties of motherboard, so a memory error should be seen as the beginning of a troubleshooting effort and not the end.
The latest revision of the program, 3.1a, as of this writing, includes support for newer AMD processors and a number of new memory-testing features.
Microsoft has also produced a little-publicized diagnostic program for memory testing, called the Windows Memory Diagnostic. Like Memtest86, it runs as a standalone program outside Windows (from a floppy or CD-ROM), and can generate useful results within minutes. Be sure to read the documentation before using it, especially with regard to options like caching (which can significantly change the time needed to run the test or bias the results).
Serdar Yegulalp is the editor of the Windows 2000 Power Users Newsletter. Check out his Windows 2000 blog for his latest advice and musings on the world of Windows network administrators – please share your thoughts as well!