75 - Test your memory (RAM/DIMMs)

joomla visitor
 

Introduction 

If you suspect that your computer has faulty memory (Random Access Memory) then you will need to run a memory test.
Over my (many) years of working as a PC engineer working on the introduction of new PC motherboards and notebooks, I have found that the BEST memory tests are:

For testing memory up to 4GB, I use Gregoriev's AleGR MemTest (a DOS utility).
For testing the memory above 4GB, I use the Vista/Win7 memory diagnostic test which can be found an the OS installation DVD after booting.

In my experience Memtest86+ is NOT the best memory test program (it only finds gross faults). It certainly does not test memory as thoroughly as AleGR MemTest. I have also found that Memtest86+ passed an 8GB consistently crashing system that had a fault at 6GB (as correctly reported by the Microsoft Windows 7 memory test within less than a minute!). So I would not trust Memtest86+ to find any sort of subtle memory fault (and AFAIK it may not actually test past 4GB at all??)..

Make a Bootable USB Flash Drive to Test Your Memory

  1. First make a FreeDos bootable USB flash drive by following Tutorial #37.
  2. Now download and add Gregoriev's AleGR MemTest.exe file from here to the USB drive
  3. Download and add GETMEM to your USB drive. For details about GETMEM, see Tutorial #48.
To use this new flashdrive, boot the suspect system to FreeDos using the new USB flash drive as the boot device.

Now type GETMEM in the FreeDos command line to run the Getmem utility and look for the RMEMTEST line - for example:

SET RMEMTEST_PARAM=1 1014

This shows the correct memory parameters to use for that particular system (as reported by the BIOS). Now use those values to run MEMTEST - e.g. type:

memtest 1 1014 /fastdetect

This will start the memory test. In this example it will test 1014MBs (SIZE) starting at 1MB (START)  (we don't test below 1MB because many systems access this area of memory and change some bytes whilst the memory test is running - this can cause a false fail to be reported by memtest). 

You could write a simple DOS batch file to automate this, however I have encountered many BIOSes which do not accurately report back memory size/locations and so you often need to 'tweak' the memtest SIZE parameter. On some systems may may also need to add the /nolegacyUSB parameter too.

If the system consistently fails on the first pass and at a location near the top of the specified memory range, the problem is probably that you are testing an area of memory that is actually used by the BIOS or CPU or chipset memory-mapped registers. In this case simply reduce the memtest SIZE parameter slightly to avoid this area (e.g. if memtest 1 1014 consistently fails on Pass 1 at the 1014MB point then use a command of memtest 1 1013 and check that it gets further than Pass 1).

Memtest should be left to run for at least 64 passes so that all 64 patterns are tested (if time allows!).

WARNING: If you are testing a notebook, you should be aware that AleGR Memtest can cause excessive current demand and some notebooks may switch off unexpectedly as their overcurrent protection circuit trips in! This exposes a design fault in the notebook power circuitry - memtest can exercise chipset data buffers so fast that the chipset will draw more current than the designers thought possible!

The DOS-based AleGr memtest cannot test memory above 4GB. So use memtest to check the memory below 4GB and use the Windows 7 installation/recovery Microsoft memory test to test all of memory if memtest passes. Alternatively, remove some DIMMs so that only 4GB is fitted - test those DIMMs using memtest - then swap the DIMMs over with the untested ones and test those with memtest until you have tested all the DIMMs that you have. There is also a Windows version of memtest, but this will only test the area of memory not already in use by Windows. The AleGR Windows version of memtest can also be used to test HDD paging and memory above 4GB.

If memtest fails, it will display some diagnostic information including the failing memory addresses. If these addresses are very near the top (end) of memory, then it is possible that you have entered the memory size incorrectly - if you suspect that this is the case then try the memtest command again but reduce the amount of memory to test by a few MB - e.g. memtest 1 1010 /fastdetect would reduce the amount tested by 4MB.

I cannot recommend memtest highly enough and it is well worth getting to know how to run it if you regularly run memory tests on suspect systems. Memtest is not easy to run and can give false fails if you do not specify the correct parameters. If the parameters returned by GETMEM don't seem to be correct, this is usually due to a buggy BIOS not reporting the amount of free memory correctly or gaps in the memory map.