This is the opensourced code base of DOCC Lab at Tufts University and Peac Lab at Boston University's full paper VAIF on SoCC21 (pervious short paper Pythia on SoCC19)
VAIF is the final name in paper, but we used old name, Pythia, in code base.
This repo is under BSD 2-clause license.
- This repo contains the parts of Pythia written in Rust, including pythia controller and pythia server in the
pythia_server
folder. - Currently, Pythia can work in OpenStack, HDFS (extra setup needed, not included here) enviornment etc.
- We also opensource Pytyhia instrumentation agent for OpenStack enviornment. Please refer to the repos list at the botoom.
One may compile & install Pythia code base using Rust tools, but it's not recommended. Instead, we recommend to use the following two methods.
-
Create an CloudLab experiment with Pythia & experiment enviornment(OpenStack) installed automatically
- Accessable using this CloudLab profile
-
Pull a Docker container that contains Pythia
- WiP
Please follow this user guide for
- How to create an experiment with shared profile
- How to setup initial search space for Pythia
- How to execute Pythia
- How to injection problem to OpenStack
- How to use Pythia to analyze injected problems
- How to do troubleshooting
No user guide for docker image for now since it's already compiled and it requires OpenStack enviornment to run experiment.
- But we might add some in the future.
(If you plan to contribute, and needs documentation)
After pulling the code, use cargo doc --open --document-private-items
.
Documentation there includes how to install, documentation on the codebase,
etc.
The pythia_server
folder contains an independent rust project, whose documentation
should be built separately, in the same way.
- This repo: Pythia agent and controller.
- openstack-build-ubuntu: Cloudlab profile for setting up openstack.
- osprofiler: Many changes, we have to run this version for the rust code to work.
- nova: Includes more instrumentation and instrumentation fixes.
- python-novaclient: instrumentation for request types.
- python-openstackclient: instrumentation for request types.
- oslo.log: support to add log statements into traces.
- osc_lib: instrumentation on the client side.
- oslo.messaging: split asynchronous requests to capture concurrency correctly.
- neutron: more instrumentation.
- python-blazarclient: support for request types.