Code Monkey home page Code Monkey logo

cloudrm-sim's Introduction

cloudrm-sim

Cloud resource management simulator

Dependencies

Setup environment

Clone the repository to your local machine:

git clone https://github.com/marcuswac/cloudrm-sim.git

After having R installed, you need to download the input data, create the directory structure and install R packages. In order to do that, go the root directory and run this script:

./download_input_and_setup.sh

Admission control simulation

To execute the admission control simulation, run this command from the project root directory:

./src/admission_control_sim.R [--] [--help] [--consider-mem] [--opts opts] [--cpu-capacity-factor factor] \
                            [--mem-capacity-factor factor] [--cpu-load-factor factor] [--mem-load-factor factor] \
                            [--slo-scenario scenario] [--output-file-prefix prefix] method

Input parameters for admission control simulation:

mandatory arguments:

  method                    Name of the admission control method.
                            Options: <greedy-norejection, greedy-quota, forecast-mean-quota, forecast-ets-quota>

flags:

  -h, --help                          Show this help message and exit

  -cmem, --consider-mem               Flag that defines if memory is considered in admission control decisions.
                                      [default: FALSE]

optional arguments:

  -x, --opts OPTS                     RDS file containing argument values
  
  -ccf, --cpu-capacity-factor FACTOR  Decimal factor applied to the original cloud CPU capacity.
                                      A factor = 1 simulates the cloud with the same CPU capacity found in the
                                      traces. [default: 1]
  
  -mcf, --mem-capacity-factor FACTOR  Decimal factor applied to the original cloud memory capacity.
                                      A factor = 1 simulates the cloud with the same memory capacity found in
                                      the traces. [default: 1]
  
  -clf, --cpu-load-factor FACTOR      Decimal factor applied to the original cloud CPU load.
                                      A factor = 1 simulates the cloud with the same CPU load
                                      (requested resources) found in the traces. [default: 1]
  
  -mlf, --mem-load-factor FACTOR      Decimal factor applied to the original cloud Memory load.
                                      A factor = 1 simulates the cloud with the same Memory load
                                      (requested resources)found in the traces. [default: 1]
  
  -s, --slo-scenario SCENARIO         Integer that identifies the availability SLO scenario. Possible values:
                                      1 (medium); 2 (very low); 3 (low); 4 (high); 5 (very high). [default: 1]
  
  -o, --output-file-prefix PREFIX     Prefix for the CSV output file names resulted from simulations.
                                      [default: "res"]

Sample execution of a base scenario:

./src/admission_control_sim.R forecast-ets-quota --cpu-capacity-factor 1 --mem-capacity-factor 1 --cpu-load-factor 1 \
                            --mem-load-factor 1 --slo-scenario 1 --consider-mem

For details, see paper: Prediction-Based Admission Control for IaaS Clouds with Multiple Service Classes. CloudCom'2015.

cloudrm-sim's People

Contributors

marcuswac avatar alessandrofook avatar jvmafra avatar

Stargazers

jcrashkit avatar

Watchers

James Cloos avatar  avatar Giovanni Farias avatar  avatar Alessandro Lia Fook Santos avatar

Forkers

rafaelvfalc

cloudrm-sim's Issues

Update "admission_control_paper_plots.R" to handle new attributes

The simulation results have new attributes, such as "cpureq.factor", "memreq.factor", "mem.capacity.fraction" and "mem.considered". But the script to generate plots ("admission_control_paper_plots.R") still does not consider these new variables. We need to update this script to also consider the new variables, so that the graphics do not present mixed results.

Use "argparser" R package to parse command-line arguments

The current way of reading and parsing command-line arguments is not intuitive. We should use a more adequate way of passing arguments to the simulator in the command-line.

For example, instead of having an execution line like this:

scripts/run_admission_control_sim.sh "forecast-ets-quota" 1 1 1 1 "yes" 

We could have something more clear like:

scripts/run_admission_control_sim.sh --method "forecast-ets-quota" --cpu-capacity-factor 1 \
    --cpu-load-factor 1 --slo-scenario 1 --mem_capacity_factor 1 --consider-mem "yes" 

The argparser package is a good alternative to implement this feature. We could also use default values, short names (e.g., -m as an alternative for --method) and usage instructions.

Separate capacity planning analysis from graphics generation

Currently, the functions for capacity planning analysis and plot generation are all mixed in a single file ("cp_diffusion_approximation"). We want to separate these two phases for the capacity planning. We need a script for the capacity planning analysis and another one to generate plots. We also want to create a bash script to easily run the capacity planning analysis and generate plots.

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.