Artifact for “Analysis of non-Markovian repairable fault trees through rare event simulation”

by C.E. Budde, P.R. D'Argenio, R.E. Monti, and M. Stoelinga.

Minimal instructions

Copy the artifact/ directory into a Debian-based Linux system (that has build-essentials and cmake installed), and execute the script run_artifact.sh:

cd artifact; ./run_artifact.sh

NOTE: If working with virtual machines and shared directorys, please copy the archive containing the artifact into a directory inside of the machine and extract it there; otherwise (e.g. if working directly in a shared directory) symbolic links contained in the archive may not work correctly.

By default this artifact performs a so-called DEMO run, that takes between 6h and 24h of wallclock run time in a single machine. FULL experimental reproduction requires a PBS-administered cluster: instructions are included at the end of this file.


Contents of the artifact

Environment and requirements

The artifact is prepared to run in Debian-based Linux distributions; it has been tested in Ubuntu 20.04. The GNU essentials for C++ compilation must be available, i.e. the GNU compiler collection (gcc, g++) and Cmake version 2.8.13 or above.

You can download a VirtualBox VM image that satisfies all these requirements from: https://zenodo.org/record/4041464#.X5GeOyVS-EJ . We refer to this virtual machine in its standard configuration with 1 processor and 2 GB RAM as the TACAS VM.

Note that experimental runtimes depend strongly on the hardware and virtualisation employed. These experiments use wallclock runtime as simulation budget, so lower machine performance translates into wider (absolute) confidence intervals widths. In particular, to create the plots in figures 7 through 11 in the paper, the CI widths were obtained from executions in the (non-virtualised) nodes of a cluster with CPUs Intel Xeon E5-2680 v4 @ 2.40 GHz (14 cores, 35M cache), each with 384 GB of DDR4 RAM @ 1600 MHz. Executions in the TACAS VM will produce CIs whose absolute width is considerably higher than those used for the plots presented in the paper. Instead, if the FULL (as opposed to the DEMO) run is executed, the relative CI width among the different run types should remain comparable to those reported in figures 7 through 11. There are instructions on how to do this a the end of this file.

Files for inspection

All files included in this artifact are freely available for inspection, e.g. the source code of FIG, and the Kepler compiler to IOSA. That said, manual inspection is probably mostly relevant for the results reported in the paper.

The directory paper_experiments_results/ contains the full output of the tool executions (in a PBS-administered cluster), that was used to create the plots for figures 7 through 11 in the paper. The following files and locations in that directory may be of prime interest:

Another interesting directory is experiments/models/, which contains the fault tree models used for experimentation. This is all part of our tool chain:


Experiment reproduction

Running this artifact in its default configuration will perform a DEMO run, that minimally demonstrates the results presented in the paper. The entry point is the executable script run_artifact.sh. To run the artifact, open a terminal, move into the artifact/ directory (where this README file resides), and execute the script:

cd artifact/; ./run_artifact.sh

There are two running modes, between which the user can choose by setting the proper value to the variable DEMO_RUN in line 11 of run_artifact.sh:

Execution steps of the artifact

For both run types, executing the artifact will perform the following steps:

  1. Install the required dependencies
  2. Install the FIG tool in the environment
  3. Perform the experimental replication:

In Step 1, most packages are required for plotting purposes only, but a few like libbison-dev and libf-dev are needed by the FIG tool.

Step 2 is crucial: if installation fails, please refer to the FIG homepage for manual installation. In such case, we recommend to download and install the RFT_journal tagged version of FIG.

Step 3 runs the FIG tool on the models presented in the paper. They all build confidence intervals using Student’s-T quantiles that estimate the requested transient or steady-state metrics. Each experiment is repeated N times (N=4 for DEMO and 10 for FULL), running for a simulation time bound chosen per experiment. All values can be read in the bash script files experiments/scripts/run_{demo,full}.sh.

Troubleshooting artifact setup in the TACAS VM

If you are running this artifact in the TACAS VM, a daemon for unattended upgrades may lock the package manager on startup. This interferes with the installation of deb packages, required to satisfy the dependencies of the FIG tool.

Thus, if during installation you see the following error message: E: Could not get lock /var/lib/apt/lists ... then you will have to manually kill the “unattended-upgr” process prior to executing the artifact. Note that this requires root privileges, and you may need to do it twice in a row!


Results inspection

When all experiments finalise, the artifact prints the location of the results, e.g. All plots ready in /home/tacas21/artifact/experiments/results/2021_10_29-13_45_56/plots for the TACAS VM run on Oct 29 (2021) at 13:45:56. In this example let DIR=/home/tacas21/artifact/experiments/results/2021_10_29-13_45_56/, then the following files and locations are of prime interest:

  1. DIR/data/summary.csv has the values from which the scatter plots are drawn (Sec. 6.2 in the paper)
  2. DIR/plots/*{rel,ava}.svg are respectively the bar plots for un-{reli,avail}ability studies (Sec. 6.3 in the paper)
  3. DIR/summaries/ contains all CI widths achieved by every individual run, prior to aggregation, split per model instance

On the reproducibility of exact results

The FIG tool uses the <random> header from the C++ STL: