Hardware Assisted Fault Tolerance (HAFT)
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
install
src
.dockerignore
.gitignore
CONTRIBUTORS
Dockerfile
LICENSE
Makefile
README.md

README.md

HAFT (Hardware Assisted Fault Tolerance)

HAFT is a compiler framework that transforms unmodified multithreaded applications to support fault detection via instruction-level replication (ILR) and fault recovery via hardware transactional memory (HTM, in our case Intel TSX). See HAFT paper for details.

Benchmarks

This repository provides two benchmark suites, PARSEC and Phoenix (pthreads version):

The other benchmarks (LogCabin, Memcached, SQLite3, LevelDB, and Apache) are not found in this repository. Please ask us directly if you need them via email: dmitrii.kuvaiskii [at] tu-dresden [dot] de.

Docker

Docker Hub contains a ready-to-use Docker image.

Installation and Performance Experiments

  • You can always use the ready-to-use docker image. However, you can also build a new docker image locally:
make build   # creates haft_container docker
  • To run the docker image, use:
make run   # runs haft_container docker
  • In docker, to install benchmarks:
./install/install_parsec.sh
./install/install_phoenix.sh
  • In docker, to run benchmarks:
EXPORT NUM_RUNS=10   # by default, each benchmark is run once
./install/run_parsec.sh
./install/run_phoenix.sh
  • The results of benchmark runs are aggregated in two logs, saved in your current directory under data/:
less data/parsec.log       # complete log of PARSEC benchmarks' runs
less data/parsec_raw.txt   # aggregated results of PARSEC benchmarks' runs
less data/phoenix.log      # complete log of Phoenix benchmarks' runs
less data/phoenix_raw.txt  # aggregated results of Phoenix benchmarks' runs