All Projects → neuhalje → kernel-memtest

neuhalje / kernel-memtest

Licence: other
Hybrid memtest running in kernel mode, and userspace.

Programming Languages

python
139335 projects - #7 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects
Makefile
30231 projects

Projects that are alternatives of or similar to kernel-memtest

Diamorphine
LKM rootkit for Linux Kernels 2.6.x/3.x/4.x/5.x (x86/x86_64 and ARM64)
Stars: ✭ 725 (+4164.71%)
Mutual labels:  kernel, linux-kernel
Simplefs
A simple file system for Linux kernel
Stars: ✭ 65 (+282.35%)
Mutual labels:  kernel, linux-kernel
Proton zf6
Proton Kernel for the Asus Zenfone 6 (2019), codename Kirin and also known as I01WD and ZS630KL.
Stars: ✭ 42 (+147.06%)
Mutual labels:  kernel, linux-kernel
Kernel Exploits
Various kernel exploits
Stars: ✭ 397 (+2235.29%)
Mutual labels:  kernel, linux-kernel
Linux Samus
Linux 4.16 on Chromebook Pixel 2015
Stars: ✭ 179 (+952.94%)
Mutual labels:  kernel, linux-kernel
Spy
👀 Linux kernel mode debugfs keylogger
Stars: ✭ 546 (+3111.76%)
Mutual labels:  kernel, linux-kernel
Traceshark
This is a tool for Linux kernel ftrace and perf events visualization
Stars: ✭ 63 (+270.59%)
Mutual labels:  kernel, linux-kernel
Microdot
The Microdot Project guides you to create a fully functional but compact Linux system from scratch
Stars: ✭ 41 (+141.18%)
Mutual labels:  kernel, linux-kernel
Linux Kernel Utilities
👷 Utilities to compile and / or update linux kernels for Debian and derivatives (e.g. Ubuntu, LinuxMint, etc.)
Stars: ✭ 166 (+876.47%)
Mutual labels:  kernel, linux-kernel
Raspberry Pi Os
Learning operating system development using Linux kernel and Raspberry Pi
Stars: ✭ 11,000 (+64605.88%)
Mutual labels:  kernel, linux-kernel
Sphinx-Beryllium
Sphinx Custom Kernel for Pocophone F1 (Beryllium)
Stars: ✭ 23 (+35.29%)
Mutual labels:  kernel, linux-kernel
Prototype Kernel
Prototyping kernel development work outside mainline
Stars: ✭ 214 (+1158.82%)
Mutual labels:  kernel, linux-kernel
camflow-dev
Generates kernel patch for CamFlow Linux Provenance Capture.
Stars: ✭ 19 (+11.76%)
Mutual labels:  kernel, linux-kernel
Paper collection
Academic papers related to fuzzing, binary analysis, and exploit dev, which I want to read or have already read
Stars: ✭ 710 (+4076.47%)
Mutual labels:  kernel, linux-kernel
kernel-ci
Continuous integration for the Linux Kernel - Built within Docker
Stars: ✭ 34 (+100%)
Mutual labels:  kernel, linux-kernel
Sutekh
An example rootkit that gives a userland process root permissions
Stars: ✭ 62 (+264.71%)
Mutual labels:  kernel, linux-kernel
execmon
Advanced process execution monitoring utility for linux (procmon like)
Stars: ✭ 77 (+352.94%)
Mutual labels:  kernel, linux-kernel
linux kernel wiki
linux内核学习资料:200+经典内核文章,100+内核论文,50+内核项目,500+内核面试题,80+内核视频
Stars: ✭ 1,653 (+9623.53%)
Mutual labels:  kernel, linux-kernel
Linux 0.11
A heavily commented linux kernel source code in Chinese.
Stars: ✭ 81 (+376.47%)
Mutual labels:  kernel, linux-kernel
Linux Uek
Oracle Linux UEK: Unbreakable Enterprise Kernel
Stars: ✭ 185 (+988.24%)
Mutual labels:  kernel, linux-kernel

Summary

Everything a computer does at some point involves RAM ("Memory"). Typical home computers, and small servers have between 4 and 16 gigabytes of it. Defects RAM is not easily detected because the symptoms are very unspecific. But in almost all cases bad RAM corrupts data that is saved to disk at some point. Corrupted data can be anything between a pixel in a video having a slightly different color than is should, documents/databases that are no longer readable, or -- worst -- data that you or your company is liable for has changed its meaning without anyone finding out until it is too late.

In mid 2009 Google and Bianca Schroeder from the University of Toronto published a study that showed that Google’s -- albeit commodity grade -- server hardware is prone to memory errors: Each year a third of the studied systems suffered at least on correctable memory error (CE). According to their study, a system that had a CE in the past is very likely to have much more CEs or even uncorrectable errors (UE) in the near future. It is safe to assume, that consumer grade hardware is likely to show worse behaviour. These results emphasize the importance of the early detection of defective memory modules.

Not only Google found this: From the NASA website, updated May 17, 2010 at 5:00 PT.

One flip of a bit in the memory of an onboard computer appears to have caused the change in the science data pattern returning from Voyager 2, engineers at NASA’s Jet Propulsion Laboratory said Monday, May 17. A value in a single memory location was changed from a 0 to a 1.

TL;DR

Broken RAM is bad. Finding defect RAM is a non trivial task, and can be done in hardware (e.g. ECC memory), software (e.g. memtest86+) or a combination of both. Hardware tests do not find all errors, and conventional software tests require many hour long downtimes of the machines. Other software tests can run while the computer is in normal use, e.g. editing spreadsheets or serving webpages. These programs have a different problem: They just randomly poke around the computer memory, and often test only very small parts of the system memory.

In my diploma thesis I developed an online memory test for the Linux kernel. This is a program (userspace & kernel module) that can test substantial (~70%, more with some programming) parts of the computers memory while the computer is in normal use, thus solving the biggest current problem with memory test.

More?

If you want to know more, then read my blogpost. If that still is not enough, read the thesis or read the paper based on my thesis.

Content

Package Diagram of the Design The package diagram of the implementation shows seven packages, six of them are a part of the implementation.  The TestScheduler on the left side determines which frames are to be tested when, and how. Algorithms for different fault models are implemented according to the strategy pattern. Kernel based services are located in the middle column. At the top is the StructPageMap package that allows user space processes to mmap the page-flags into their address room. Below it are the Linux kernel and the PhysMem module which implements the functionality, giving the user space access to the frames acquired by the PageClaiming Implementations.  On the right side, the MemoryVisualization package can collect snapshots of the pageflags and generate videos that visualize the behaviour of the mm.

The implementation has three major parts:

  • A kernel module that allows user space programs to request, and isolate specific page frames.
  • A userspace implementation that drives the test: It decides which frame to test when, and how.
  • Userpace implementations that implement the test algorithms to test a single page frame.

Further there are some tools to analyse the memory management:

Further development

Horst Schirmeier greatly extended the base laid by the thesis, e.g. by implementing the test algorithms in C, and by claiming more types of memory.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].