Skip to content

Automatic Non-Volatile Memory Crash Consistency Testing for Full Systems

License

Notifications You must be signed in to change notification settings

KIT-OSGroup/vinter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

5dc6189 · Sep 14, 2023

History

16 Commits
Jun 8, 2022
Sep 14, 2023
Jul 6, 2022
May 13, 2022
May 19, 2022
Jan 5, 2023
May 13, 2022
May 13, 2022
May 13, 2022
May 13, 2022
Jul 6, 2022
May 5, 2023
May 13, 2022

Repository files navigation

DOI

Vinter: Automatic Non-Volatile Memory Crash Consistency Testing for Full Systems

This is the source code of Vinter, a tool for automated NVM crash consistency testing.

Source Code Overview

Short overview over the main components of Vinter:

  • vinter_python/: The original implementation of Vinter that was used for the analysis in the paper.
    • pmemtrace.py: The "Tracer" component of Vinter.
    • trace2img.py: The "Crash Image Generator" and "Tester" components of Vinter.
    • trace-and-analyze.sh: Main script for running the full testing pipeline.
    • report-results.py: Script for analyzing output from the testing pipeline.
  • vinter_rust/: A reimplementation of Vinter in Rust, with the intention of improved performance and to provide a clean base for future extensions.
    • vinter_trace/: The "Tracer" component of Vinter.
    • vinter_trace2img/: The "Crash Image Generator" and "Tester" components of Vinter. Runs the full testing pipeline.
  • fs-testing/: Everything related to the analysis of file systems.
    • scripts/: Helper scripts, VM definitions, and test case definitions.
    • initramfs/: Busybox-based userspace of the test VMs.
    • fs-dump/: State extraction program for file systems.
    • linux/: Source code and binaries of the Linux kernels we test.
  • panda/: The underlying hypervisor based on QEMU.

Setup

Note that we provide a virtual machine image with Vinter and its dependencies installed. See "Artifact Evaluation" below.

# install dependencies
# on Fedora:
sudo dnf install python3-pip python3-mypy python3-capstone glibc-static \
	elfutils-libelf-devel dtc capstone-devel libdwarf-devel glib2-devel \
	pixman-devel protobuf-devel protobuf-c-devel curl-devel jsoncpp-devel \
	chrpath datamash nmap-ncat
pip install yq sortedcontainers

# Rust via rustup (see https://rustup.rs)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
rustup target add x86_64-unknown-linux-musl

# build panda and vinter
./build-panda.sh
./build-vinter.sh

# build kernels
git clone https://github.com/NVSL/linux-nova fs-testing/linux/nova
git -C fs-testing/linux/nova checkout 593f927a78a6900d7cfec58199fb0a4a4fd1d646
fs-testing/linux/build-kernel.sh nova

git clone https://github.com/linux-pmfs/pmfs fs-testing/linux/pmfs
# Note: Building PMFS requires gcc4, build from a suitable container. For example:
podman run --rm -v"$PWD/fs-testing/linux:/mnt" docker.io/library/gcc:4 \
	sh -c 'apt-get update && apt-get install bc && /mnt/build-kernel.sh pmfs'

Artifact Evaluation

Information for artifact evaluation is in artifact-evaluation/README.md.

License

Vinter is released under the MIT license, see LICENSE for details.

About

Automatic Non-Volatile Memory Crash Consistency Testing for Full Systems

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published