CloudSim is a simulation toolkit that supports the modeling and simulation of the core functionality of the cloud, like job/task queue, processing of events, creation of cloud entities(datacenter, datacenter brokers, etc), communication between different entities, implementation of broker policies, etc. This toolkit allows to:
- Test application services in a repeatable and controllable environment.
- Tune the system bottlenecks before deploying apps in an actual cloud.
- Experiment with different workload mix and resource performance scenarios on simulated infrastructure for developing and testing adaptive application provisioning techniques
- 1 The core features of CloudSim:
- 2 Is Cloudsim suitable for my research work?
- 3 Does Cloudsim setup require a High computing system?
- 4 How to download Cloudsim?
- 5 How to install Cloudsim?
- 6 How does cloudsim work?
- 7 How to run my first cloudsim simulation scenario?
- 8 Cloudsim is frequently used for?
- 9 Other simulators based on cloudsim
- 10 Learning Resources
- 11 Sample Source Codes
The core features of CloudSim:
- The Support of modeling and simulation of large-scale computing environments as federated cloud data centers, and virtualized server hosts, with customizable policies for provisioning host resources to virtual machines and energy-aware computational resources
- It is a self-contained platform for modeling cloud service brokers, provisioning, and allocation policies.
- It supports the simulation of network connections among simulated system elements.
- Support for simulation of federated cloud environment, that inter-networks resources from both private and public domains.
- 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.
- Flexibility to switch between the space-shared and time-shared allocation of processing cores to virtualized services.
Is Cloudsim suitable for my research work?
This simulation toolkit is an API that allows a developer to run any server hardware model as a software simulation, to analyze its behavior for real-world workloads.
Therefore it is clear that it allows a researcher to simulate the Infrastructure as a Service(IaaS) layer.
This includes software models of data centers, hosts, storage, virtual machines, Cloud datacenter brokers, allocation & scheduling policies for the virtual machines as well as tasks, power management policies including migrations and consolidation of the virtual machines over different hosts, defining the workload attributes for its execution simulation over the cloud systems, etc.
It is not applicable/suitable where you are looking to analyze any service related to Platform as a Service(PaaS) or Software as a Service(SaaS) for example real-time applications, security algorithms, platform implementations, etc
Does Cloudsim setup require a High computing system?
No, not at all. The cloudsim is a software simulation toolkit and is developed using Java programming language, Therefore, any computer system with a dual-core processor, 2 GB RAM, and 1 GB storage is good enough to simulate the cloud-based systems using the cloudsim as this is required to support the JRE working.
Also, the hardware requirements may differ on the basis of which IDE you are using for JAVA development.
How to download Cloudsim?
Cloudsim project source code, as well as compiled jars files, are published through the GitHub project page: https://github.com/Cloudslab/cloudsim.
By default, the project page displays the source code(based on the maven build tool) of the current release, which is currently released version 5.0(beta) and the page displays the basic information about the project along with the publication details.
Now if you are interested in using the previous versions of this project then you have to click on the releases link option available on the project’s main page or otherwise, you may access it directly from the following links:
- Release Version 5.0
- Release Version 4.0
- Release Version 3.0.3
- Release Version 3.0.2
- Release Version 3.0.1
- Release Version 3.0
- Release Version 2.1.1
- Release Version 2.1
Every version except 5.0(still under development) contains 4 asset files example description for each asset file is as follows:
- cloudsim-4.0.tar.gz: This file contains the compiled JAR file that can be directly used in the custom simulation implementation where there is no need to change the source code of the cloudsim simulation engine. This version is Linux-specific.
- cloudsim-4.0.zip: This is the same as above the only difference is that it is Windows-specific.
- Source code(zip): This file contains the complete source code of the cloudsim simulation framework project. As cloudsim uses the Maven build tool for its DevOps. Therefore to set up this project you require to use an IDE that supports Maven project imports. How do you identify that its a maven-based project? you will find a “pom.xml” file in the project root folder. This zip is Windows operating system-specific file.
- Source code(tar.gz): This file contains a similar structure as mentioned above, but it is specific to Linux
How to install Cloudsim?
Cloudsim setup is very easy, for this you may follow the following link: cloudsim-setup-using-eclipse/. This link describes in detail all the steps that are required to successfully configure the Cloudsim 3.0.3 version.
The cloudsim 3.0.3 version is best to start with that once you understand the basic working and architecture then you can move to the latest version.
How does cloudsim work?
As it is already mentioned that the cloudsim allows modeling and simulate the cloud system components, therefore to support its function different set of classes has been developed by its developers:
- To simulate the regions and datacenters the class named “Datacenter.java” is available in org.cloudbus.cloudsim package.
- To simulate the workloads for the cloud, the class named “Cloudlet.java” is available in org.cloudbus.cloudsim package.
- To simulate the load balancing and policy-related implementation the classes named “DatacenterBroker.java”, “CloudletScheduler.java”, “VmAllocationPolicy.java”, etc are available under org.cloudbus.cloudsim package.
- Now because all the different simulated hardware models are required to communicate with each other to share the simulation work updates this cloudsim has implemented a discrete event simulation engine that keeps track of all the task assignments among the different simulated cloud components.
To read and understand more about the architecture, you should definitely read the article titled “CloudSim Simulation Toolkit: An Introduction” as well as “Beginners Guide to Cloudsim Project Structure“
How to run my first cloudsim simulation scenario?
Once you have completed your installation/setup and understand the basic working of the cloudsim, the next step is to implement your own custom scenario.
Any simulation will go through the following steps:
- Initialize the CloudSim with the current clock time and this will also initialize the core CloudInformationService entity.
- Create Datacenter(s) as Datacenters are the resource providers in CloudSim. We need to list one of them to run a CloudSim simulation.
- Create a Broker to simulate the user workload scheduling as well as virtual machine allocation and placements.
- Create one/more virtual machines and submit them to the broker for further submitting it to the respective DataCenters for placement and execution management during the simulation run.
- Create one/more Cloudlets and submit the Cloudlet list to the broker for further task scheduling on the active virtual machines for its processing during the simulation run.
- Starts the simulation, this will initiate all the entities and components created above and put them into execution for supporting various simulation operations.
- Stop the simulation, concludes the simulation, and flush all the entities & components before the exit of a simulation run.
- Print results when the simulation is over, where you will be able to display which cloudlet executed on which virtual machine along with how much time it spent in execution, its start time as well as its finish time.
The step-by-step detailed description of each step can be read in the article “Guide to CloudsimExample1.java simulation workflow“
Cloudsim is frequently used for?
- Load Balancing of resources and tasks
- Task scheduling and its migrations
- Optimizing the Virtual machine allocation and placement policies
- Energy-aware Consolidations or Migrations of virtual machines
- Optimizing schemes for Network latencies for various cloud scenarios
- and many more.
Other simulators based on cloudsim
The Cloudsim 3.x.x version was a very important release and become the base for many other extensions which in turn support a very specific type of use cases:
- Learn from a list of articles available on CloudsimTutorials.online
- An online self-paced course named Learn Basics of Cloudsim, with weekly content updates till August 2021.
- List of Research Work relates to Cloudsim
Sample Source Codes
There are various researchers who have published their cloudsim project code on their GitHub handles, following are the quick links for your reference:
- https://gist.github.com/Farwa-Rajput: This cloudsim code demonstrates what are the different changes that are required to be made to the datacenterborker.java for implementation of the Shortest job first:
- https://github.com/Deeksha96: This handles published code related to a hybrid heuristic algorithm for workflow scheduling in cloud systems and an Ant Colony Optimisation heuristic for task scheduling in Cloud Computing.
- https://github.com/michaelfahmy: The repository from this handle https://github.com/michaelfahmy/cloudsim-task-scheduling published the code related to Particle Swarm Optimization(PSO.PSO_Scheduler), Round Robin Algorithm (RoundRobin.RoundRobinScheduler), Shortest Job First (SJF.SJF_Scheduler), First Come First Serve (FCFS.FCFS_Scheduler).
- https://github.com/James2356: The repository from this handle https://github.com/James2356/cloudsim-task-scheduling contains two additional algorithms implementations related to Self-adaptive weight PSO (SAWPSO.SAWPSO_Scheduler), Ant Colony Optimization (ACO.ACO_Scheduler).
As a beginner, you may refer to these pieces of code to understand, how other fellow researchers have worked on the cloudsim-based simulation to implement their work.
And definitely, this will help you to accelerate yours by forking these projects and working on your own additions or a complete overhaul of these sets of codes.
Also, To quickly get started with Cloudsim Simulation Toolkit, Feel free to join our ongoing series of webinars for beginners to Cloudsim Simulation Toolkit I am really interested to interact with you.
I am a PhD student working on an offloading project rested upon cloud computing infrastructure. For that, I am using the CloudSim as the simulator. I have several questions about how it actually works. For example, I want to know what is the SchalutingIntervals defined at DataCenter class or what is the main purpose of the VM_DATACENTER_EVENT?
Would you please be so kind as to help me in this regard?