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.
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 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:
- 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