Code and Data to reproduce "ShapleyIQ: Influence Quantification by Shapley Values for Performance Debugging of Microservices" (ASPLOS' 23 paper)
git clone https://github.com/lonyle/ShapleyIQ
cd ShapleyIQ
(the above step may take 1-10 minutes)
- Using Python 3.7
- Download the prepared dataset data.zip from link. Unzip it into the folder rca4tracing/fault_injection/data.
pip install -r requirements.txt
(the above step may take 1-10 minutes)
bash run/run.sh
(the above step should take less than 1 hour)
(1) the code of the ShapleyIQ algorithm and other baseline algorithms; (2) the input data generated by the TrainTicket system (3) code to run the algorithms with the input data. (4) code to run the TrainTicket system, inject faults, and generate the input data for root cause analysis.
- This folder contains the ShapleyIQ algorithm (rca4tracing/rca/shapley_value_rca.py), and the baseline algorithms (in folder rca4tracing/rca/baselines/)
- After running the algorithm according to run/README.md, the experiment results will be in the folder rca4tracing/experiment/output_data/experiment_jaeger
- prepare_data/README.md provides instructions to prepare the input data.
The folder run contains scripts to run the experiments and a detailed run/README.md file.
To reproduce the example of Figure 1 in the Introduction section of the paper.
install Python 3.7
pip install -r requirements.txt
There are two ways to prepare the dataset. The first way is to download the prepared dataset in link. The second is to run a TrainTicket microservice system and generate the dataset by injecting faults. The details are in prepare_data/README.md.
- experiments with a single root cause 2) experiments with multiple root causes 3) experiments for global root cause analysis, etc.
To run all the experiments, (the detailed explanations are in run/README.md) just type the following one-line command:
bash run/run.sh
If you only want to run the experiments for a single root cause, you can run the following:
python rca4tracing/rca/experiment/experiment_jaeger.py
If you find this repo useful, please cite our paper.
@inproceedings{li2023shapleyiq,
author = {Li, Ye and Tan, Jian and Wu, Bin and He, Xiao and Li, Feifei},
title = {ShapleyIQ: Influence Quantification by Shapley Values for Performance Debugging of Microservices},
year = {2024},
isbn = {9798400703942},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3623278.3624771},
doi = {10.1145/3623278.3624771},
booktitle = {Proceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 4},
pages = {287โ323},
numpages = {37},
series = {ASPLOS '23}
}
If you have any question, please contact [email protected]