Coder Social home page Coder Social logo

yijunquan-afk / shapleyiq Goto Github PK

View Code? Open in Web Editor NEW

This project forked from lonyle/shapleyiq

0.0 0.0 0.0 297.38 MB

Code and Data to reproduce the ASPLOS'23 paper "ShapleyIQ: Influence Quantification by Shapley Values for Performance Debugging of Microservices"

Shell 0.28% Python 99.72%

shapleyiq's Introduction

Python 3.7 DOI

Code and Data to reproduce "ShapleyIQ: Influence Quantification by Shapley Values for Performance Debugging of Microservices" (ASPLOS' 23 paper)

TL;DR

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. Descriptions of folders

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

(1) rca4tracing

  • 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

(2) prepare_data

  • prepare_data/README.md provides instructions to prepare the input data.

(3) run

The folder run contains scripts to run the experiments and a detailed run/README.md file.

(4) introduction_example

To reproduce the example of Figure 1 in the Introduction section of the paper.

2. Workflow to run the experiments

1. Install the necessary python packages

install Python 3.7

pip install -r requirements.txt

2. Prepare the TrainTicket dataset. The details are in prepare_data/README.md

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.

3. Run the experiments, including

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

Citation

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}
}

Contact

If you have any question, please contact [email protected]

shapleyiq's People

Contributors

lonyle avatar liye-li avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.