christoffetzer / haft

Hardware Assisted Fault Tolerance (HAFT)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

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

About

Hardware Assisted Fault Tolerance (HAFT)

License:MIT License


Languages

Language:C 45.2%Language:C++ 32.6%Language:Python 10.8%Language:Shell 7.7%Language:Makefile 3.7%