Even small problems with a system’s memory can cause a machine to act strangely. However, memory is one of the harder components to accurately test, partly because the system reserves various portions of the memory for internal functions while other portions are consumed by the operating system. But there is a tool you can use to overcome many memory-testing obstacles—it's one of the best that I have found for such testing—called Memtest86.
Downloading and installing Memtest86
Memtest86 is a freeware utility released under Gnu Public License (GPL). I’ll leave the legalese to the lawyers, but basically the license states that anyone can use or copy the program for free but that modifications aren’t allowed. You can download Memtest86 here.
At the time of this writing, the current release was 3.0, but 2.9 was also available. If you are using an earlier version of Memtest86, I strongly recommend upgrading to one of these two versions because of the way memory size is determined. Starting in version 2.9, the E820 method of testing memory size is used. This technique seems to be less problematic than the technique used in previous versions.
There are also several download options, including:
- Linux Memtest86 v3.0 Source and Binary Package
- Pre-Compiled Memtest86 v3.0 installable from Windows and DOS
- Memtest86 v3.0 ISO Image (zip)
- Memtest86 v3.0 ISO Image (gzip)
Once you've downloaded Memtest86, the installation couldn't be easier. If you downloaded a version other than the ISO images, simply extract the files from the zip archive, open the directory where the files were extracted, and run the install program. You will be prompted to enter the floppy drive letter and also insert a blank floppy disk. Once you've done so, press [Enter] and the install program will create the Memtest86 bootable floppy. Memtest86 will run automatically when this disk is used to boot a PC. To create a bootable CD, just use your favorite burning software and one of the ISO images.
Why Memtest86 can run better tests
One of the problems with testing a system’s memory is that a large portion of the memory is usually used by the BIOS and by the operating system. However, it’s just as important to test these areas of memory. After all, your system needs to have reliable memory, regardless of what that memory will eventually be used for, so why test only part of it?
But like many other memory testers out there, Memtest86 is unable to test 100 percent of a computer’s memory. It is, however, able to test more memory than most testers, because Memtest86 doesn’t require an operating system. And Memtest86 is designed to run from a bootable floppy or CD, which means that since an operating system hasn’t filled up the system’s memory, the memory is free for testing. Sure, a bootable CD does technically use an operating system, but it’s usually some derivative of DOS and occupies only a few kilobytes of memory and not the countless megabytes occupied by Windows operating systems. Another advantage to using a bootable CD for Memtest86 is that by doing so, you can test a PC regardless of what operating system is actually installed. This means that Windows, Linux, and UNIX machines are all fair game.
Another reason Memtest86 can test so much of a PC’s memory is because of the E820 method. In the E820 method, Memtest86 looks at a table provided by the BIOS that lists the various memory segments and what they are used for. Unless you tell it otherwise, Memtest86 will test all memory flagged as available and the area that’s reserved for advanced configuration and power interface (ACPI) tables. The ACPI table memory can be tested because the test doesn’t rely on the data stored in these tables and because the ACPI memory space can be reused for other purposes once the tables have been copied.
Getting even more from Memtest86
If you want to test even more memory, there are a couple of other options you can use. One option is to use the BIOS—All command. If you use the BIOS—All method, Memtest86 will look at the E820 memory address to determine the memory size and will then proceed to test all the system’s memory, regardless of what the memory is intended to be used for. The exception to this is that memory above 3 GB isn’t tested, because doing so causes stability problems.
Another technique called probing can also be used. The probing method can be more thorough than the BIOS—All method. However, the two tests usually produce the same results. Furthermore, the probing technique isn’t entirely stable.
If you are testing an older system that doesn’t use ACPI tables, the E820 method of testing won’t work. In such cases, Memtest86 can use the E801 and the E88 testing methods. While these methods do work, the BIOS—All method isn’t supported when using them.
When you find an error
Now that you know a little bit about Memtest86, you may wonder what to do if you find a memory error. Most of the time, the results that Memtest6 provides are valid. However, there have been reports of tests 5 and 8 failing on perfectly healthy Athlon systems.
If your test indicates a memory failure and you believe that the test results are reliable, I recommend removing one memory module at a time and repeating the test until you are able to determine which memory module has the problem. When using this method, you will likely have to shuffle around some memory modules so that sequential memory sockets are occupied.
If you have tested each individual module and the test results are still showing bad memory, one of two things has likely happened. Either the test results are inaccurate or one of the memory sockets is bad. You can experiment with moving around your memory modules to various sockets on your system board to see which is the case.