Skip to content

Latest commit

 

History

History
65 lines (47 loc) · 2.81 KB

README.md

File metadata and controls

65 lines (47 loc) · 2.81 KB

RAMpage

This repository contains the RAMpage online memory tester for Linux, which we developed on the basis of Jens Neuhalfen's memtester.

Basic Setup

These steps are required to setup and run RAMpage:

  • You need to patch the Linux kernel sources in order to export a few more symbols needed by the module. You can find a patch matching the Linux 3.5 sources in patches/kernelpatch-rampage-3.5-declone.diff, but with some luck (and if the kernel memory management hasn't changed too much) this should be portable to newer kernel versions with little to no effort. The kernel should be configured by moving /config-rampage-final-2.6.35 to $kernelsource/.config and running make oldconfig. (RAMpage only works with an x86-64 kernel at the moment.)

  • After having booted the patched kernel, you need to build and insert the kernel module by entering module/ and running ./rebuild.sh.

  • Then you need to prepare the userspace memory tester C extensions:

      cd rampage/userspace/tester  
      make && cp build/*/*.so .  
      cd ..
    
  • RAMpage should now be ready to run, for example:

      ./main.py -a blockwise --run-time 86400 --retest-time 86400 -4 -t mt86* -f 5120 \
        --enable-p4-claimers=buddy,hotplug-claim,shaking
    

    ./main.py --help gives an explanation for the parameters and switches.

Be aware that RAMpage is a prototype, not production-ready software. One detail you certainly will have to change before using it in a multiuser environment is the access permissions to /proc/kpagecount and /proc/kpageflags (rampage/module/rebuild.sh currently chmod's these to 0444) and especially the module's own /proc/phys_mem (currently 0777).

Patches and ports to new kernel versions and other kernels welcome!

Publications

A detailed description, and measurements on both effectiveness and efficiency, can be found in the following two publications:

The code in this repository is licensed under the GNU General Public License (GPL), Version 2.