Jump to content

MemTest86

From Wikipedia, the free encyclopedia

MemTest86
Original author(s)Chris Brady
Developer(s)PassMark Software
Initial release1994; 30 years ago (1994)[1]
Stable release
11.1 (Build 1000)[2] Edit this on Wikidata / 31 October 2024
Written inC, assembly language
Available in12 languages[3]
List of languages
English, French, German, Czech, Polish, Russian, Spanish, Portuguese, Italian, Catalan, Japanese, Chinese
TypeUtility
Licensefreeware, proprietary license
Websitewww.memtest86.com Edit this on Wikidata
Memtest86+
Developer(s)Martin Whitaker, Sam Demeulemeester
Initial release2004; 20 years ago (2004)[4]
Stable release
7.20[5] Edit this on Wikidata / 11 November 2024
Repository
Written inC, assembly language
Available inEnglish
TypeUtility
LicenseGNU General Public License, version 2.0
Websitewww.memtest.org Edit this on Wikidata

MemTest86 and Memtest86+ are memory test software programs designed to test and stress test an x86 architecture computer's random-access memory (RAM) for errors, by writing test patterns to most memory addresses, reading back the data, and comparing for errors.[6] Each tries to verify that the RAM will accept and correctly retain arbitrary patterns of data written to it, that there are no errors where different bits of memory interact, and that there are no conflicts between memory addresses.

MemTest86

[edit]

History

[edit]

MemTest86 was developed by Chris Brady in 1994.[1] It was written in C and x86 assembly, and for all BIOS versions, was released under the GNU General Public License (GPL). The bootloading code was originally derived from Linux 1.2.1.[7] The program is compiled as position-independent code so as to be able to move itself around and test all the memory regions.[8] The proprietary PassMark version does not have this ability.[9]

BadRAM patch

[edit]

Starting from MemTest86 2.3, the program can output a list of bad RAM regions in the format expected by the BadRAM patch for the Linux kernel.[10] GRUB2 is able to supply this same information to an unpatched kernel, making the BadRAM patch unnecessary.[11] Microsoft Windows has a similar feature (badmemorylist/badmemoryaccess), but manual conversion is required for setting it up.[citation needed]

PassMark purchase

[edit]

In February 2013, the original MemTest86 was sold to PassMark. The BIOS version was updated under GPL until version 4.3.7.

MemTest86 Version 5.0 (3 December 2013) was rewritten for UEFI booting (initially with fallback to BIOS booting on non-UEFI systems), allowing for secure boot approval and mouse support. All UEFI versions are released under a proprietary freeware license. Version 6.0 (13 Feb 2015) adds support for DDR4 RAM, and a row-hammer test based on research from Yoongu Kim, et al..[1][10][12] Version 8.0 removed backward compatibility with non-UEFI systems, requiring a separate download of the older version 4.3.7.[10]

Memtest86+

[edit]

History

[edit]

After MemTest86 remained at version 3.0 (2002 release) for two years, Samuel Demeulemeester created the Memtest86+ fork to add support for newer CPUs and chipsets.

From version 1.60, the program can output a list of bad RAM regions in the format expected by the BadRAM patch for the Linux kernel[13] (similar to MemTest86 2.3).

The BIOS-based line of Memtest86+ entered a stall after the release of version 5.01 (September 2013). In April 2020, the final BIOS-based version, 5.31 beta, was released with a short changelog claiming "many fixes".[14][15]

In May 2020, Martin Whitaker forked Memtest86+ 5.31 into PCMemTest, rewriting it for UEFI support, DDR4 and DDR5 RAM, and supporting all current AMD and Intel chipsets and CPUs. In October 2022, this branch merged back, becoming Memtest86+ 6.0.[16][17]

Adoption

[edit]

Memtest86+ is included, optionally or by default, in many Linux distributions, including Debian,[18] the derived Ubuntu, and Arch Linux.[19] Ubuntu includes it as part of the default installation if the machine is booting in BIOS mode, showing it in the GRUB OS-select menu;[20] the version 6.0, UEFI-capable, is available from Ubuntu 23.04 Lunar Lobster.[21] Whilst Memtest86+ version 5.01 required significant patching by distributions to keep the 2013 code base functional,[22] the 6.0 release did not require such extensive patching.[23]

Common features

[edit]
Detections of faulty memory are displayed prominently. The application shows which memory locations failed and which patterns made them fail.

There are two development streams of MemTest86(+). The original is simply known as MemTest86. The other, known as Memtest86+, is a development fork of the original MemTest86. Their on-screen appearance and functionality were almost identical up until, respectively, MemTest86 4.3 and Memtest86+ 5.0.[1]

Version 5.0 of MemTest86 added a mouse-driven graphical user interface (GUI) and UEFI support; the latter was added by Memtest86+ from version 6.0.[citation needed]

These programs work with nearly all PC-compatible computers from 80386- and 80486-based systems to the latest systems with 64-bit processors. Each new release adds support for newer processors and chipsets.[10][13]

MemTest86(+) is designed to run as a stand-alone, self-contained program from a bootable USB flash drive, CD-ROM, floppy disk, or from a suitable boot manager without an operating system present.[24] This is because the program must directly control the hardware being tested and leave as much of the RAM space as possible for examination.

MemTest86(+)'s testing is very comprehensive, so it can find otherwise hidden problems on machines that appear to work normally.[24][25] With many chipsets, MemTest86 allows counting of failures even in error-correcting ECC DRAM (without special handling, error correcting memory circuits can mask problems with the underlying memory chips).

Some errors manifest intermittently or depend on the precise bits being stored, and do not occur on each pass; such errors may be revealed by running many passes over an extended period. Some tests use different data each pass to reveal data-dependent errors.[26]

Both versions now support current multi-core processors, the corresponding chipsets, and UEFI.[4][27]

References

[edit]
  1. ^ a b c d "MemTest86 History". MemTest86.com. Archived from the original on 11 May 2019.
  2. ^ "MemTest86 What's New?".
  3. ^ "MemTest86 Feature Comparison". MemTest86.com. Retrieved 22 August 2024.
  4. ^ a b "Memtest86+ History". Memtest.org.
  5. ^ "Release 7.20". 11 November 2024. Retrieved 26 November 2024.
  6. ^ "MemTest86 Technical Information". MemTest86.com. PassMark Software. Retrieved 22 October 2015.
  7. ^ "bootsect.S - chromiumos/third_party/memtest - Git at Google". ChromiumOS Source. Copyright (C) 1991, 1992 Linus Torvalds 1-Jan-96 Modified by Chris Brady
  8. ^ "README.build-process - chromiumos/third_party/memtest - Git at Google". chromium.googlesource.com.
  9. ^ "MemTest86 – Known Issues". MemTest86.com. Retrieved 31 October 2023. MemTest86 cannot remap itself to different portions of memory in order to run tests in the section of memory it was occupying.
  10. ^ a b c d "What's New?". MemTest86. Retrieved 6 September 2024.
  11. ^ "GNU GRUB Manual 1.99 § Badram".
  12. ^ Kim, Yoongu; Daly, Ross; Kim, Jeremie; Fallin, Chris; Lee, Ji Hye; Lee, Donghyuk; Wilkerson, Chris; Lai, Konrad; Mutlu, Onur (8 July 2014). "Flipping Bits in Memory Without Accessing Them: An Experimental Study of DRAM Disturbance Errors" (PDF). Carnegie Mellon University. Retrieved 7 April 2015.
  13. ^ a b "Memtest86+ - Advanced Memory Diagnostic Tool". MemTest.org.
  14. ^ "Memtest86+ Archives". Memtest86+.
  15. ^ "728766 – sys-apps/memtest86+-5.31b version bump". Bugs.Gentoo.org.
  16. ^ Klotz, Aaron (24 October 2022). "Memtest86+ Is Back! New Version Released After 9 Years". Tom's Hardware. Retrieved 25 October 2022.
  17. ^ "memtest86+ v6.0 Released As Rewritten Open-Source RAM Tester". Phoronix.com. Retrieved 25 October 2022.
  18. ^ "Package: memtest86+". Debian Packages. Retrieved 15 January 2024.
  19. ^ "Arch Linux - memtest86+ 5.01-3 (any)". Retrieved 7 April 2019.
  20. ^ "MemoryTest". Ubuntu Help Wiki. Retrieved 7 April 2019. Hold down Shift to bring up the GRUB menu. Use the arrow keys to move to the entry labeled Ubuntu, memtest86+
  21. ^ "Memtest86+ 6.10-4 (amd64 binary) in Ubuntu Lunar". Ubuntu Launchpad. Retrieved 16 January 2024.
  22. ^ "Patch tracker: memtest86+". Debian Sources. Retrieved 20 September 2023.
  23. ^ "Patch tracker: memtest86+". Debian Sources. Retrieved 20 September 2023.
  24. ^ a b Fisher, Tim (6 February 2018). "MemTest86 v7.5 Free Memory Testing Tool Review". Lifewire. Dotdash. Retrieved 24 February 2018.
  25. ^ "MemTest86 Technical Information: Algorithms". MemTest86.com. PassMark Software. Retrieved 1 November 2014.
  26. ^ "MemTest86 Technical Information: Detailed Descriptions". MemTest86.com. PassMark Software. Retrieved 22 October 2015.
  27. ^ "MemTest86 Support". MemTest86.com.
[edit]