Skip to content

FTHPC/FaultSight

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

82 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FaultSight

FaultSight is a web-based visualization tool designed to be used together with a fault injector (Such as FlipIt - an LLVM instruction-based fault injector). The tool is written in such a way that it should be applicable to most fault injectors, regardless of whether they are memory based, instruction based, or fault-stop based. FaultSight performs analysis upon the injection data, and provides concrete data regarding an application's fault tolerance capabilities. The data is presented in a interactive web page, with charts generated using D3.js to visualize the fault injection campaign, and allows the user to easily impose custom constraints upon the visualized data.

Generated graphs include:

  • Classification of injections based on instruction type
  • Percent of injections based on function (includes type information)
  • Signals generated by execution of code
  • Trials with detection (includes bit locations and types)
  • Latency of detection
  • Trials that unexpectedly terminate (includes bit locations and types)

This program depends on the following python packages:

  • flask_sqlalchemy
  • numpy
  • scipy

Running FaultSight with the provided Matrix-matrix multiplication injection campaign

If you just want to give FaultSight a quick try, we provide sample data for a matrix-matrix multiplication (MMM) injection campaign in the example_data folder. This is a fault injection campaign that has been run using FilpIt on three different matrix-matrix multiplication functions - the standard three-loop algorithm, the tiled mmm algorithm, and the Strassen mmm algorithm.

There is already an existing FaultSight database file that has been created from this mmm data, and has already been placed in the FaultSight database folder. FaultSight can be run with this database file simply be running

python run.py

from the root FaultSight folder. Once the python file is running, navigate to the following url in your browser:

http://127.0.0.1:5000/

Setting up FaultSight

To use this tool:

1.) Run an injection campaign via the fault injector of your choosing. We recommend FlipIt, as it is natively supported by this tool.

2.) Generate a FaultSight database (.db) file, which follows a generalized schema that should be applicable to most fault injectors. Follow the information provided in the Generating a FaultSight database section below. Place this database file in faultSight/database/, and make sure the file is called campaign.db

3.) Navigate to the faultSight/ directory, and start FaultSight by running the following command:

python run.py

4.) FaultSight should now be running at the following url:

http://127.0.0.1:5000/

Generating a FaultSight database

This tool requires the user to generate the FaultSight database, which follows a generalized schema that should be applicable to most fault injectors. For this purpose, a python script is included, databaseSetup/databaseSetup.py, which provides the user with useful API calls (essentially wrappers to SQL queries) for generating a database that adheres to the FaultSight schema. Therefore, the user is required to write a custom script that parses the output data from their fault injection campaign, and make the appropriate calls to the API to generate the database. This custom script is already provided for the FlipIt fault injector (databaseSetup/examples/FlipIt/database.py), and should be used as example code when writing such a script for other fault injectors. If anyone does write such scripts for other fault injectors, I would appreciate it if you contributed your code to this repository!

For detailed information on generating the database file, look at the README located at /databaseSetup/README.md. If you are using FlipIt, there are specific instructions located at databaseSetup/examples/FlipIt/README.md

Using FaultSight features

[to be written]

Downloading Charts

Once FaultSight is running, generating charts for your injection campaign should be self-explanatory. Generated charts can be downloaded as png, svg, or json file formats. The structure of the json file is straightforward - it consists of an array with two elements. The first is an array of JSON objects, where each element is a component of the chart (slice of piechart, bar in barchart). The second is a JSON object containing chart metadata (chart title, axis title, etc).

Data from the workshop paper

Feel free to request the files from [email protected] or [email protected]

Need more help?

Feel free to email me at [email protected] with questions

About

A web-based visualization tool for fault injection data

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •