How to test memory for reliability
When you install new memory (or you suspect existing memory), the first thing to do is to verify that it’s present in About This Mac. Clicking the More Info button brings up the System Profiler window; click on Memory to see memory status.
If this is a Mac Pro, the memory will be ECC (error correcting code) memory, and “Status” will show errors if present. There should almost never be ECC errors, though (quite literally) cosmic rays occasionally can induce them, especially at high altitude. Machines without ECC memory just tend to crash when there are errors; errors go undetected and uncorrected.
Memory tends to fail under stress, and stress means heat. The best way to detect latent memory problems is to make the machine hot, to raise its operating temperature. Sub-standard memory will often fail under such conditions, ECC memory will show ECC errors, etc.
For a robust system test, run the MemoryTester stress test for at least one hour. An overnight test (8 hours or longer) is even better—you can’t possibly use the machine that hard in normal use! If the test completes without a crash (the usual result of flaky system), then you’ve got a clean bill of health. On the Mac Pro, there should be no ECC memory errors after any test, so if there are, get the memory exchanged immediately.
A typical MemoryTester stress test run looks like what’s shown below. Activity Monitor will show all CPU cores fully utilized.
llcMP:~ lloyd$ nice dlt run-stress-test --memory-per-thread 4G --duration 8h MemoryTester 1.1.0 64-bit Copyright 2006-2008 diglloyd, Inc. All Rights Reserved. Tuesday, November 25, 2008 10:36:58 AM PT Physical memory (MB): 32768 ********************************** Stress Test ********************************* System memory: 32GB Test duration: 8h CPU percent: 100% (per cpu core) Num CPU threads: 4 Memory per thread (requested): 4GB ==> Determining amount of non-pageable memory (this phase can take several minutes before stress-testing begins) Checking for virtual memory paging for 16GB No paging detected for 4GB (good) No paging detected for 8GB (good) No paging detected for 12GB (good) No paging detected for 16GB (good) Allocated 4GB per thread (16GB) for 4 threads, reverifying paging behavior... Done determining pageable memory. NOTE: Avoid starting applications while tests are running; system response will be very sluggish. Memory usage per thread: 4GB Volumes to test: none Creating 4 CPU thread(s) at 100% utilization, each consuming 4096MB for a total memory use of 16GB 1 2 3 4 Starting... 1 2 3 4 started. Waiting for all threads to start... All threads were started. Thread 0 started OK. Thread 1 started OK. Thread 2 started OK. Thread 3 started OK. 4 cpu threads started successfully using a total of 16GB of memory, to be accessed continually. =====> Use ctrl-C to stop ^lt;===== Note: speeds denote memory copying speed (memmove); multiply by 2 for total bandwidth. 10s: 16384MB @ 2846 MB/sec (best) 20s: 16384MB @ 2909 MB/sec (best) ...