GithubHelp home page GithubHelp logo

intelsdi-x / swan Goto Github PK

View Code? Open in Web Editor NEW
8.0 6.0 4.0 20.16 MB

Project Swan - a distributed experimentation framework

License: Apache License 2.0

Makefile 0.32% Python 1.91% Shell 0.84% Go 49.47% Jupyter Notebook 47.23% Dockerfile 0.24%
sensitivity-profile memcached collocation kubernetes containers snap cloud

swan's Introduction

DISCONTINUATION OF PROJECT.

This project will no longer be maintained by Intel.

This project has been identified as having known security escapes.

Intel has ceased development and contributions including, but not limited to, maintenance, bug fixes, new releases, or updates, to this project.

Intel no longer accepts patches to this project.

Project Swan

Swan diagram

Build Status Go Report Card

Overview

Swan is a distributed experimentation framework for automated experiments targeting performance isolation studies for schedulers. You can read more about the vision behind Swan here.

Swan uses Snap to collect, process and tag metrics and stores all experiment data in Cassandra. From here, we provide a Jupyter environment to explore and visualize experiment data.

Swan architecture

Quick Start

Swan's Sensitivity Profile Experiment can be quickly run using Vagrant.

Swan requires VirtualBox & Vagrant. It is recommended to have vagrant-vbguest plugin installed ($ vagrant plugin install vagrant-vbguest).

Run the Sensitivity Profile Experiment using Vagrant

Run Vagrant image supplied by Swan:

git clone https://github.com/intelsdi-x/swan
cd swan/vagrant
vagrant plugin install vagrant-vbguest
vagrant up
vagrant ssh

Inside guest OS, the Mutilate load generator needs to be build. To do so, please clone the https://github.com/leverich/mutilate repository and build it by using scons. After successful build, please copy mutilate binary to /bin.

git clone https://github.com/leverich/mutilate
cd mutilate
scons
sudo ln -sf `pwd`/mutilate /usr/bin/

To run experiment, invoke:

sudo -E memcached-sensitivity-profile -experiment_be_workloads=caffe -experiment_load_duration=5s -experiment_peak_load=10000 -experiment_repetitions=1 > uuid.txt

When experiment is running, please see how to explore experiment data to see results. Note that Experiment UUID that is necessary for obtaining experiment results will be available in uuid.txt file.

While the experiment can be run on developer setup from within a virtual machine or on a laptop, this particular experiment is targeted for distributed cluster environment. For more details, please see Memcached Sensitivity Profile Documentation.

Memcached Sensitivity Profile Experiment

The experiment allows experimenters to generate a so-called sensitivity profile, which describes the violation of Quality of Service under certain conditions, such as CPU cache or network bandwidth interference. An example of the sensitivity profile can be seen below.

Sensitivity profile

During the experiment memcached is colocated with several types of aggressors, which are low priority (best effort) jobs. Memcached response time is critical and needs to stay below a given value which is called Service Level Objective (SLO). SLO is memcached Quality of Service that needs to be maintained. The goal of the experiment is to learn which aggressors interferes the least and which the most with Memcached so that some of them can be safely colocated with it without violating memcached Quality of Service. Colocation of tasks increases machine utilization which in datacenter can be low as 12% decreasing TCO of the datacenter.

Memcached sensitivity experiment is described in detail in memcached sensitivity profile document.

Next Steps

  1. Read Swan Vision to understand what is Swan and what is not.
  2. Read about Workload Interference Theory and see why Noisy Neighbour situations appears in cloud environment.
  3. Try other experiments:
    1. Memcached Sensitivity Profile
    2. Memcached Optimal Core Allocation
    3. Memcached & Cache Allocation Technology
  4. Read Architecture Guide and Development Guide and start to build your own experiments!
  5. Read Known Issues to learn about problems that you may encounter while using Swan.

Contributing

You can learn how to contribute to the project by checking out the contributing document. Best practices for Swan development and submitting code is documented here.

swan's People

Contributors

akwasnie avatar bodepd avatar borqosky avatar bwplotka avatar connordoyle avatar flyingcougar avatar iwankgb avatar janczer avatar kdembler avatar mbbroberg avatar mpatelcz avatar mrigankatgithub avatar mstachowski avatar nqn avatar pbielak avatar ppalucki avatar rdower avatar skonefal avatar squall0gd avatar st4nson avatar thomastaylor312 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

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