User:Drinkbeer007/CloudSim

CloudSim is an open-source software framework written in Java for modeling and simulation of cloud computing infrastructures and services. The CloudSim provided a generalized, and extensible simulation framework that enables seamless modeling, simulation, and experimentation of emerging cloud computing infrastructures and application services. It is developed by Department of Computer Science and Software Engineering,  University of Melbourne.

The CloudSim Toolkit software is released as open source under the GNU Lesser General Public License.

CloudSim is powered by JProfiler.

Features
=== Functionalities ===
 * modeling and simulation of large scale cloud computing data centers
 * modeling and simulation of virtualized server hosts, with customizable policies for provisioning host resources to virtual machines
 * modeling and simulation of energy-aware computational resources
 * modeling and simulation of data center network topologies and message-passing applications
 * modeling and simulation of federated clouds
 * dynamic insertion of simulation elements, stop and resume of simulation
 * user-defined policies for allocation of hosts to virtual machines and for allocation of host resources to virtual machines

Features
CloudSim has the following unique features:

First, providing virtualization engine, which is designed to help build and manage data centers on multiple nodes. Second, when allocating virtualization service, processing cores can be shared in both time sharing and space sharing.

On conclusion, CloudSim offers the following features :
 * 1) Support modeling and simulation of large scale computing environment.
 * 2) A self contained platform for modeling clouds, service brokers, provisioning and allocation policies.
 * 3) Support for simulation of network connections among the simulated system elements.
 * 4) Facility for simulation of federated cloud environment, that inter-networks resources from both private and public domains.
 * 5) Availability of a virtualization engine that aids in the creation and management of multiple independent and co-hosted virtual services on a data center node.
 * 6) Flexibility to switch between space shared and time shared allocation of processing cores to virtualized services.

Components
CloudSim platform to help accelerate the development of cloud computing algorithms, methods and specifications. CloudSim software framework includes SimJava, GridSim, CloudSim, UserCode.

=== Cloud computing on CloudSim === One significant difference between Cloud computing and Grid computing is that cloud computing is based on virtualization technology, turn virtual data center resources into resource packages to provide services to users. CloudSim reflects this feature, CloudSim achieves a series interfaces, provides virtualization technology which is based on the data center, virtualized cloud modeling and simulation capabilities. Typically, a host of data center resources based on user requirements can be mapped to multiple virtual machines, therefore, there is a competition for resources between the host virtual machine. So under this situation, CloudSim provides monitoring resources and the host mapping capabilities of the virtual machine.

== Core Libraries ==
 * 1) Cloudlet class: building cloud task environments.
 * 2) DataCenter class: data center class provides virtualization grid resources to deal with queries of virtual machine information, including the virtual machine resource allocation strategy.
 * 3) DataCenterBroker class: managing virtual machines, such as the creation, job submission, destruction other virtual machines.
 * 4) Host categories: extend the policies to change from machine to a virtual machine, such as bandwidth, storage space, memory.
 * 5) VirtualMachine class: virtual machine class which running on the host, share resources with other virtual machines.
 * 6) VMScheduler class: scheduling policy for the virtual machine to manage tasks.
 * 7) VMCharacteristics class: virtual machine description.
 * 8) VMMAllocationPolicy class: virtual machine monitor policy class.
 * 9)   VMProvisioner class: Implement host data center to map resource to virtual machines.

CloudSim vs SimJava
CloudSim is built to extend SimJava library, because SimJava has the following restrictions when creating a simulation environment: To overcome these limitations, The Cloud Computing and Distributed Systems Laboratory, University of Melbourne redesign a new framework of discrete event, it is CloudSim core simulation framework. CloudSim has the following advantages:
 * 1) not support reset program in runtime
 * 2) with the increase of system size, SimJava’s multithreading features lead to increased performance overhead,  as too much context switching between threads lead to performance degradation.
 * 3) system debugging and multi-thread operations in SimJava are too complexity.
 * 1) entity can deactivate at runtime.
 * 2) context switches under different threads don't need to deactivate and recovery threads.
 * 3) a new entity can create at runtime.
 * 4) simulation can be terminated and restarted at runtime.

Creation
creating data center

Creating a data center in CloudSim simulation platform, a data center composed by one or more of the Machine, a Machine is composed of one or more PEs or CPUs components. create proxy Broker create virtual machine assign Broker to virtual machine join the virtual machine list submit list of virtual machines to the appropriate Broker create cloud task submit task list to Broker

Related Projects
CloudSimEx

The goal of the CloudSimEx project is to develop a set of extensions for the CloudSim simulator. The extensions that prove to be worthy will be merged with CloudSim later on.

WorkflowSim

WorkflowSim extends the CloudSim simulation toolkit by introducing the support of workflow preparation and execution with an implementation of a stack of workflow parser, workflow engine and job scheduler. It supports a multi-layered model of failures and delays occurring in the various levels of the workflow management systems.

Cloud2Sim

Cloud2Sim proposes a distributed concurrent architecture to CloudSim simulations. Exploiting Hazelcast in-memory data grid, CloudSim is extended to have multiple instances executing the Cloudlet and VM workloads from multiple nodes, and submit them to the Data center Broker, while executing the core simulation segments that cannot be distributed from the master Cloud2Sim instance.

SimpleWorkflow

This is a simple package containing classes helping in simulating workflows on CloudSim. This is not as comprehensive as WorkflowSim, but it utilizes the same workload description files than WorkflowSim.

DynamicCloudSim

Performance instability commonly encountered in non-uniform and shared infrastructures like computational clouds, which have strong influence to the runtime of applications. DynamicCloudSim extends the CloudSim simulation toolkit by introducing models for heterogeneity in the performance of computational resources, uncertainty in and dynamic changes to the performance of virtual machines, and straggler machines and failures during task execution.

RealCloudSim

RealCloudSim is a simulator of allocations of virtual machines based on the main engine of the CloudSim project. RealCloudSim provides a graphical interface to read network topologies based on the BRITE format.

CloudReports

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.

CloudAuction

It extends CloudSim by developing a package library that enables CloudSim to handle auction-based services. The main objective of this research is implementing auction-based mechanisms in CloudSim. In this package library, the auction is held based on cost for CPU MIPS and the remaining characteristics (bandwidth, RAM size, etc.) are regarded on VM side if they match the request.

CloudMIG Xpress

CloudMIG Xpress facilitates the comparison and planning phases concerning the migration of software systems to PaaS or IaaS based Cloud environments. Code models can be extracted from Java-based software model to a CloudSim model, which could enable integrated simulation of various cloud deployment options regarding future costs, response times, and service-level agreement violations.