What is memtest86+
Memtest86+ is a utility designed to test your memory for read and write errors. The application repeatedly writes sequences of data to all memory locations and reads them back again while verifying whether the result of the read are the same as what was written to memory. Memory errors can be due to either the wrong BIOS settings; either memory timings or insufficient voltage (especially when overclocked), or it could be due to a damaged memory DIMM. Memtest simply identify that errors exist, and you must use logical elimination to determine where the problem lies. This process is explained in 'how to test your memory modules' on the next page. Based on the well-known original memtest86 written by Chris Brady, memtest86+ is a port by some members of the x86-secret team, now working at www.canardpc.com. Our goal is to provide an up-to-date and completly reliable version of this software tool aimed at memory failures detection. Memtest86+ is, like the original, released under the terms of the Gnu Public License (GPL). No restrictions for use, private or commercial exist other than the ones mentioned in the Gnu Public License (GPL). Texts about the original version was taken from the original website and written by Chris Brady. PS : A newsletter for memtest86+ updates is available / Donation for Memtest86+ welcome. Please support free GPL software.
What do I need?
First you will need to download the application. The download section is here http://www.memtest.org/#downiso A USB Drive or a CD/DVD burner and a blank writable disc. The USB method is preferred because it's easier and less wasteful than burning a disc.
How to create the Bootable Memtest86+ USB drive
I strongly suggest you download the USB version as this is the easiest of all to use in my view and that is the version I will be referring to in this guide. The process of creating a bootable Memtest86 USB drive could not be easier. Download the ‘Auto-installer for USB key) and simple run the application on completion of the download. You will not need a very big USB drive for Memtest86+; a 1GB USB drive will certainly be big enough. Make sure you have removed any data from the USB stick that you are going to use for your Memtest86+ USB drive as the USB drive will be formatted during the installation process. Simply follow the instructions, make sure you select the correct drive as there is no going back once you start the process. I strongly recommend that you remove all other USB drives when creating a Memtest86 USB device. And that is all there is to it.
How do I use Memtest86+
First you will need to fit your Memtest86+ USB drive into an available USB port. I suggest you use the USB2 ports found on the rear panel, as below, but all USB ports should work.
Power up your system and select your first boot deivce from the list either in BIOS or using the Boot manager which can be accessed during the POST process using the F8 key. Once selected the Memtest86+ USB drive will auto load and the test will begin automatically.
How long does memtest run?
Memtest86+ will run continuously unless you stop it. The tests are cycled over and over again. Memtest86+ runs a number of different tests which each test different aspects of your system ram in trying to expose any errors in our memory. You can check the progress of the test by looking at the two progress pars that are found at the top right of your screen. The upper progress bar represents the current cycle’s progress, the lower progress bas is active test progress. One cycle consists of all the tests in the memtest suite. It is recommended that several cycles of Memtest86+ are completed before stopping the test. Two cycles is the bare minimum in my view. The reason for that is because certain types of errors will not show up until the system has been running for some time. Once successful cycle of memtest86+ will be sufficient to determine if your memory is good most times, however to be quite certain that your memory (or the overclock of your memory) is completely stable multiple cycles are recommended. Only a flawless or error free cycle is acceptable.
- This is what Memtest looks like running
Continued on the next page.
What do the tests do?
Memtest86 executes a series of numbered test sections to check for errors. These test sections consist of a combination of test algorithm, data pattern and cache setting. The execution orders for these tests were arranged so that errors will be detected as rapidly as possible. A description of each of the test sections follows:
- Test 0 [Address test, walking ones, no cache]
Tests all address bits in all memory banks by using a walking ones address pattern.
- Test 1 [Address test, own address, Sequential]
Each address is written with its own address and then is checked for consistency. In theory previous tests should have caught any memory addressing problems. This test should catch any addressing errors that somehow were not previously detected. This test is done sequentially with each available CPU.
- Test 2 [Address test, own address, Parallel]
Same as test 1 but the testing is done in parallel using all CPUs and using overlapping addresses.
- Test 3 [Moving inversions, ones&zeros, Sequential]
This test uses the moving inversions algorithm with patterns of all ones and zeros. Cache is enabled even though it interferes to some degree with the test algorithm. With cache enabled this test does not take long and should quickly find all "hard" errors and some more subtle errors. This test is only a quick check. This test is done sequentially with each available CPU.
- Test 4 [Moving inversions, ones&zeros, Parallel]
Same as test 3 but the testing is done in parallel using all CPUs.
- Test 5 [Moving inversions, 8 bit pat]
This is the same as test 4 but uses a 8 bit wide pattern of "walking" ones and zeros. This test will better detect subtle errors in "wide" memory chips.
- Test 6 [Moving inversions, random pattern]
Test 6 uses the same algorithm as test 4 but the data pattern is a random number and it's complement. This test is particularly effective in finding difficult to detect data sensitive errors. The random number sequence is different with each pass so multiple passes increase effectiveness.
- Test 7 [Block move, 64 moves]
This test stresses memory by using block move (movsl) instructions and is based on Robert Redelmeier's burnBX test. Memory is initialized with shifting patterns that are inverted every 8 bytes. Then 4mb blocks of memory are moved around using the movsl instruction. After the moves are completed the data patterns are checked. Because the data is checked only after the memory moves are completed it is not possible to know where the error occurred. The addresses reported are only for where the bad pattern was found. Since the moves are constrained to a 8mb segment of memory the failing address will always be less than 8mb away from the reported address. Errors from this test are not used to calculate BadRAM patterns.
- Test 8 [Moving inversions, 32 bit pat]
This is a variation of the moving inversions algorithm that shifts the data pattern left one bit for each successive address. The starting bit position is shifted left for each pass. To use all possible data patterns 32 passes are required. This test is quite effective at detecting data sensitive errors but the execution time is long.
- Test 9 [Random number sequence]
This test writes a series of random numbers into memory. By resetting the seed for the random number the same sequence of number can be created for a reference. The initial pattern is checked and then complemented and checked again on the next pass. However, unlike the moving inversions test writing and checking can only be done in the forward direction.
- Test 10 [Modulo 20, ones and zeros]
Using the Modulo-X algorithm should uncover errors that are not detected by moving inversions due to cache and buffering interference with the the algorithm. As with test one only ones and zeros are used for data patterns.
- Test 11 [Bit fade test, 90 min, 2 patterns]
The bit fade test initializes all of memory with a pattern and then sleeps for 5 minutes. Then memory is examined to see if any memory bits have changed. All ones and all zero patterns are used.
How To Test Memory
Follow this process of elimination to determine whether your memory DIMMs are producing errors:
- Remove any overclock or custom tweaks by resetting your BIOS to default settings. As an industry standard, all memory is programmed to work at this fail safe.
- F5 to select BIOS defaults and enter.
- Test your memory modules one by one in the first DIMM slot (check your manual to see which this is).
- If one module is consistently giving errors and another is consistently showing no errors the module giving the errors is defective.
- To exclude the possibility that a defective slot is the cause of the errors, please use the same slot to test each different module.
- Once you have determined your memory DIMMs are fine at default settings, then add one additional module in the same colored slot to create a dual channel setup. For Rampage (Intel X79) motherboards, this increases to four DIMM for quad-channel. If you do get errors with two modules and you have tested each module and each slot, there could be an compatibility issue or damage to the CPU.
- Everything still OK? Right, now let's get overclocking!
- Once you have completed two or more successful cycles of Memtest86+ at default change the memory frequency to the desired setting. In this example we will rum Memtest86+ with our memory running at 2400Mhz.
- You can manually change the frequency as I have done here, but remember to set the voltage to the appropriate level for your memory modules.
- Adjust the primary timings of your memory.
- If you do not wish to set your own memory frequency or the timings and voltages there, is an option to overclock your memory with out the hassle; XMP profiles. Not every DIMM kit has this feature (check the manufacturer specs), however if it does it can be useful as a guide. Repeat the process with your memory modules set using their XMP profile (under the overclocking mode change Manual to XMP) or the overclock you have manually entered in BIOS.
Does knowing what tests failed help me fix the problem?
While some test patterns might generate errors where others do not, highlighting a weakness rather than a problem, unfortunately knowing which test failed does not help pinpoint the solution or the cause. Ultimately it matters not if you fail test 6 or test 1, all that matters is that your memory has not passed Memtest86+ successfully.
I have no Errors is my memory stable?
Most likely yes, but there is never a 100% guarantee ever. All we have proved is that your memory modules have passed Memtest86+ successfully. And that is a very big step towards either problem solving why your system is unstable or as the first step in your over clocking process. Memtest86+ does not cause damage to your memory when testing for errors so you can use the application with confidence.