An extensible simulation tool for energy-aware cloud computing environments
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

Build Status DOI

ShowMyGitBranch example

CloudReports is a graphic tool that simulates distributed computing environments based on the Cloud Computing paradigm. It uses CloudSim as its simulation engine and provides an easy-to-use user interface, report generation features and creation of extensions in a plugin fashion.

The application simulates an Infrastructure as a Service (IaaS) provider with an arbitrary number of datacenters. Each datacenter is entirely customizable. The user can easily set the amount of computational nodes (hosts) and their resource configuration, which includes processing capacity, amount of RAM, available bandwidth, power consumption and scheduling algorithms.

The customers of the IaaS provider are also simulated and entirely customizable. The user can set the number of virtual machines each customer owns, a broker responsible for allocating these virtual machines and resource consumption algorithms. Each virtual machine has its own configuration that consists of its hypervisor, image size, scheduling algorithms for tasks (here known as cloudlets) and required processing capacity, RAM and bandwidth.

Additionally, CloudReports generates HTML reports of each simulation and raw data files that can be easily imported by third-party applications such as Octave or MATLAB.

Here's a screenshot of CloudReports's GUI:

ShowMyGitBranch example

Running CloudReports

You can either compile CloudReports from source or run the .jar file directly (see the downloads page).

Building with Maven

Some build tools such as Ant or Maven make compiling a Java project much easier. Furthermore, most of the popular IDE (e.g. NetBeans and Eclipse) offer integration with these tools, which automates the whole process and saves you a lot of time. The steps below show you how to build CloudReports with Maven and import a project to Eclipse.

First of all, make sure you have your development environment set up. If you don't, download and install the Java Development Kit and Maven. Notice that this project was built using JDK 6 and no tests whatsoever were performed using JDK 7.

Open a terminal in the project's folder and create the executable .jar file with all dependencies:

mvn clean package
mvn clean package jar:jar

Run the jar file:

java -jar target/CloudReports.jar & exit

or

./bin/start.sh

If you want to import the project in Eclipse, just run:

mvn eclipse:eclipse

Running from binaries

Running CloudReports from binaries is very simple:

Download the binaries from the downloads page, extract it, and run the .jar file:

java -jar CloudReports.jar & exit

Extensions development

CloudReports supports the development of extensions that can be "plugged in" on execution time using the Java Reflection API. These extensions can be created independently, without the need of recompiling CloudReports' source code. Currently, the following types of algorithms can be developed as extensions:

  • Virtual machine allocation policies.
  • Broker policies.
  • Resource provisioners: processing elements, RAM and bandwidth.
  • Tasks (cloudlets) schedulers.
  • Power consumption models.
  • Resource utilization models.
  • Virtual machines schedulers.

For more information, visit the wiki page about developing extensions.

Publications

CloudReports: An Extensible Simulation Tool for Energy-Aware Cloud Computing Environments - Cloud Computing - Challenges, Limitations and R&D Solutions. Springer International Publishing.

License

Copyright (c) 2010-2012 Thiago T. Sá

CloudReports is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

CloudReports is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

For more information, refer to the LICENSE file or see the GNU page.