Diagnosing Windows Memory Problems

Overview

I can remember way back when how amazed I was to order a new desktop computer with 2MB of RAM. Even the days of ordering a server with 64MB of RAM seemed like sooooo much memory. And in case you missed it, those are values in megabytes. Naturally today’s systems are in another class altogether. And while I’d like to think the quality of memory manufacturing has also increased over the years, things can still go wrong.
Failing or faulty memory doesn’t always manifest itself with a huge announcement. In the event that Windows 7 or Windows Server 2008 detects such a problem, it will most likely prompt you to run the Windows Memory Diagnostic tool. But you can also manually run this tool anytime you’d like if you prefer to be a bit more proactive.

Using the Windows Memory Diagnostic Tool

You can manually launch the Windows Memory Diagnostic tool from the Administrator Tools menu short cut. Or if you prefer a command line approach run this:

​C:\> mdsched

Alas, there do not appear to be any command line parameters. However you launch it you should get something like Figure 1.
MemoryDiag 1
Figure 1 Windows Memory Diagnostic

As the dialog suggests you can either reboot immediately or schedule the diagnostic for the next reboot. Whichever option you choose, upon reboot, the memory diagnostic will launch automatically and begin running. You will see something like Figure 2.
Running Windows Memory Diagnostic
 
Figure 2 Running Memory Diagnostic
Press F1 to customize the tools. You can modify what tools are run and how many passes. Figure 3 shows the Basic tests that will be run. These tests run pretty quickly.
Windows Basic Memory Tests
 
Figure 3 Basic Memory Tests
Figure 4 shows the Standard tests. This is the default behavior.
Windows Standard Memory Tests
 
Figure 4 Standard Memory Tests
If you prefer a more thorough examination, select the Extended test mix, as shown in Figure 5.
By default, the diagnostic will run two passes, but you can tab down to the Pass Count section and put in a number between 0 and 99. I wish there was a way to set this when configuring the scheduled task, but I have yet to fine one.
Windows Extended Memory Tests
 
Figure 5 Extended Memory Tests

Now, it would be nice to have a more granular selection of tests or even an explanation about what all these acronyms mean. But I guess that’s why we have search engines. In any event, all that really matters is if you pass or fail. Upon completion, the computer will automatically reboot. After you logon, you should get a balloon message in the system tray. It may take a few minutes for it to appear and it will fade away as Figure 6 demonstrates.
Memory Diagnostic Result
Figure 6 Memory Diagnostic Result
But at least I have no issues. You can also check the Windows event log for the results. Open the Event Viewer Management Console and select the System Event Log. Then do a search for MemoryDiagnostics-Results. Or if you’re using PowerShell, run a command like this:

​PS C:\> get-eventlog system -after "12/26/2011 12:00PM"
-source Microsoft-Windows-MemoryDiagnostics-Results |
Select EntryType,InstanceID,Message |
format-list
EntryType : Information
InstanceId : 1201
Message : The Windows Memory Diagnostic tested the computer's memory
and detected no errors
EntryType : Information
InstanceId : 1101
Message : The Windows Memory Diagnostic tested the computer's memory
and detected no errors

I’m using the –After parameter to speed up my search to only return results from the last run.

Conclusion

You can run this tool on both Windows 7 and Windows Server 2008. It is a simple tool in some regards but it is free and readily available. I expect most of you will have vendor or OEM supplied tools for this sort of diagnostic, but if not this is a good place to start.