CloudSim is a simulation tool that allows Cloud developers to test performance of their provisioning policies in a repeatable and controllable environment free of cost. It helps to tune the bottlenecks before real-world deployment. It is a simulator; hence it doesn’t run any actual software. It can be defined as “running a model of an environment in a model of hardware” and technology specific details are abstracted.
CloudSim is a library for simulation of cloud scenarios. It provides essential classes for describing data centers, computational resources, virtual machines, applications, users, and policies for management of various parts of the system such as scheduling and provisioning. Using these components, it is easy to evaluate new strategies in utilization of clouds considering policies, scheduling algorithms, load balancing policies, etc. It can also be used to assess competence of strategies from various perspectives such as cost, application execution time etc. It also supports evaluation of Green IT policies. User can use it as building blocks for simulated Cloud environment and can add new policies for scheduling, load balancing, and new scenarios. It is flexible enough to be used as a library that allows you to write a desired scenario by writing a Java program.
By using CloudSim organizations, research organizations, and industry-based developers can test the performance of a newly developed application in a controlled and easy to set-up environment.
Features of CloudSim
The prominent features offered by CloudSim are:
Figure 1 – Features of CloudSim
Architecture of CloudSim
The CloudSim layer provides support for modelling and simulation of Cloud environments including dedicated management interfaces for memory, storage, bandwidth, VMs. Provisioning of hosts to VMs, application execution management, and dynamic system state monitoring are handled by this layer. A Cloud service provider can implement customized strategies at this layer to study the efficiency of different policies in VM provisioning.
The User Code layer exposes basic entities such as number of machines, their specification etc., applications, VMs, number of users, application types, and scheduling policies.