
Working with Cloudsim Simulation Toolkit requires the basic understanding of cloud computing. As Cloudsim simulates and imitates the Infrastructure as a service(IaaS) of cloud computing. The objectives for this lecture are:
1. Basic understanding of Cloud Computing.
2. Introduction to various services and deployment types in cloud computing.
3. What are the challenges faced by Cloud computing domain research community?
4. How Cloudsim Simulation Toolkit bridges the gap?
Cloudsim simulation toolkit setup is easy. Before you start to setup CloudSim, following resources must be Installed/downloaded on the local system
Java Development Kit(JDK): As the Cloudsim simulation toolkit is a class library written in the Java programming language, therefore, the latest version of Java(JDK) should be installed on your machine, which can be downloaded from Oracles Java portal. For assistance in the installation process, detailed documentation is provided by Oracle itself and you may follow the installation instructions
Eclipse IDE for Java developers: As per your current installed operating system(Linux/Windows). Before you download to make sure to check if 32-bit or 64-bit version is applicable to your Computer machine.
CloudSim source code: Till date various versions of CloudSim are released the latest version is 4.0, which is based on a container-based engine. Whereas to keep the setup simple for beginners we will be setting up the most used version i.e. 3.0.3, which can be directly downloaded by clicking on any of the following: Click for Windows or click for Linux
One external requirement of Cloudsim i.e. common jar package of math-related functions is to be downloaded from the Apache website or you may directly download by clicking here.
Unzip Eclipse, Cloudsim and Common Math libraries to some common folder.
These errors occur due to two reasons:
Case 1: The version of Java installed on your computer system is older than 1.5. For this, you have to download and install the latest java version from Oracle/Java website.
Case 2: Your default java environment for the eclipse project not set to the latest java version which is available on your computer system. Here, you have to do some modifications in the eclipse project, and for this, you should follow these steps:
In the eclipse IDE menu, click on ‘Project’ and from the dropped menu list click on ‘Properties’ to open a project properties window.
On the project properties window, from the list available on left select ‘Java Compiler’, this will display the compiler options.
Now, click on the ‘Enable Project Specific Settings’ checkbox, which further enables the options provided just below the checkbox.
Now, under JDK compliance heading change the ‘Compiler Compliance Level’ to the highest number available on the list.
Also, make sure “Use default compliance settings” should be in the checked state.
Now, click on the “Apply and Close” button. Now a popup alert will be displayed asking for the confirmation to apply the settings. Click ‘Yes’.
Now you will notice that the rebuild process for the project will get started and to confirm the error is resolved or not. You may check the error log window or run any example class available in org.cloudbus.cloudsim.examples namespace.
Cloudsim Simulation Toolkit is an API that is written using the Java programming language and its classes are structured in a very specific way. This lecture will help you to understand more in detail about major packages and important classes within them.
The eclipse project explorer should contain 6 folders and 7 files
Within Source Folder, there exist 12 namespaces; each namespace has a set of classes with specific correlated functions:
-Org.cloudbus.cloudsim
-Org.cloudbus.cloudsim.core
-Org.cloudbus.cloudsim.core.predicates
-Org.cloudbus.cloudsim.distribution
-Org.cloudbus.cloudsim.lists
-Org.cloudbus.cloudsim.network
-Org.cloudbus.cloudsim.network.datacenter
-Org.cloudbus.cloudsim.power
-Org.cloudbus.cloudsim.power.lists
-Org.cloudbus.cloudsim.power.models
-Org.cloudbus.cloudsim.provisioners
-Org.cloudbus.cloudsim.util
The “examples” folder. It contains 7 namespaces, and each namespace contains a particular type of scenario implementations.
CloudsimExample1.java is the basic simulation scenario that is provided by the cloudsim developer's team. This example helps you to understand the most basic attribute specifications that are required to run a sample simulation of the CloudSim simulation engine. In this video, you will get to know about the essential details about all the major sections and how to make some changes suitable to your own set of requirements.
CloudsimTag.java is one of the most crucial model class in cloudsim. This class provides a design to define the new actions that a cloud-based researcher might be planning to utilize during the simulation run. This class is responsible for defining action events that an entity is going to use for simulating a particular behavior of real cloud systems.
SimEvent.Java is the core building block of the Cloudsim simulation toolkit as this is the class that defines the specification for the discrete events that the simulation engine works upon. This class defines the set of event types as etypes, that is used by the cloudsim.java's processEvent() method. This class also defines certain set and get methods along with the clone and comparable interface implementation. Also, the overridden implementation of the toString() method allows a programmer to print the event object details directly on the output console.
Cloudsim.java is another crucial model class in cloudsim. This class is a part of org.cloudbus.cloudsim.core package and it the primary class that manages the discrete events execution flow that is scheduled between the entities. This class has implementations for simulation related methods like pauseSimulation(). terminateSimulation() etc. This class also provisions to add the new entity during the simulation run. This video will help you understand its different methods and their flow of executions. This will intern help you to get a piece of insight knowledge about what changes you required to do in your code to perform the desired simulation scenario.
The SimEntity.java is a core model class of the Cloudsim toolkit. This class is the base for various other entity classes like Datacenter, DatacenterBroker, CloudInformationService, etc. The class is an abstract class and contains three abstract methods named startEntity, shutdownEntity, and processEvent. This class contains the basic logic for scheduling the events between the different entities as well.
FutureQueue.java and DeferredQueue.java act as the process queues for the Cloudsim simulation toolkit. Without these classes, there is no way to support the operations of the simulation engine flow. The futureQueue model instance holds the event details as the first stage through which the sender entity request for passing the information to the destination entity is maintained by the simulation engine. The deferredQueue model instance is the second stage in which actually the simulation engine assigns/schedules the events to the desired destination entities for further execution purposes.
CloudInformationService is an entity model class that exists in org.cloudbus.cloudsim.core package. This class model through the simulation engine provides resource registration, indexing, and directory service.
This model class maintains the three mail resource lists:
1. resList: All type of host list through Datacenter instance ID
2. arList: Any advance registration for host list through datacenter instances
3. gisList: works for maintaining the federated cloud resources.
Now to manipulate these methods there are a variety of methods supported like checkResource, resourceExist, resourceSupportAR, etc.
As this class is an entity and is child to SimEntity class there it overrides & implements three methods: startEntity(), processEvent() and shutdownEntity(). The implementation is done as per the specific requirements/actions to produce a specific behavior for directory service and indexing of resources in the CloudInformationService model class.
Cloudsim Simulation Engine works on the discrete events that are scheduled between the different entities of this cloud-based simulator. This video lecture is a bit lengthy but describes in detail about the end to end simulation flow. We have used cloudsimExample1.java for the purpose of explanation of this sample simulation flow.
In this lecture following methods have been discussed:
1. SimEntity.java/Datacenter.java/DatacenterBroker.java/CloudInformationService.java: startEntity(), processEntity(), shutdownEntity(), run(), send() and schedule() methods.
2. Cloudsim.java: startSimulation(), stopSimulation(), run(), runstart(), runClockTick() and send() methods.
The Simulation flow works in three stages:
Stage 1: Initialization of the required Entities
Stage 2: Actual Simulation flow, where the events are being scheduled and executed among the various entities.
Stage 3: The initiation for the stop of the stimulation process and flush the states of all the entities and simulation attributes before the actual exit from the simulation. Then finally displays the output.
This video lecture will be a discussion about the various attributes of the cloudlet class and explains their significance. Also, we have discussed the nested resource class in detail and how it gets connected with the datacenter class for the processing of cloudlet purposes.
This video will discuss in detail about the Vm.java class attributes as well as its methods along with their respective purposes.
This video discusses in detail about the various primary tasks for the datacenter model class and did some small comparison with the real life datacenters. Apart from this we have also descibed about how the other entities interact with the datacenter class to assign the work as well as fetch the information throught the datacenter class during the simulation run.
This video discusses in detail all the components defined in the DatacenterBroker.java class. This video will help you to understand how a datacenterbroker negotiates with the other infrastructure entities to host the virtual machines as well as for the processing of cloudlets. Moreover, the detailed flow of messages between the datacenterbroker and the datacenter is being discussed to better understand the role of the datacenterbroker class model.
This video discusses in detail all the components defined in the Host.java class. This video will help you to understand how a Host accommodates the virtual machines and manage its processing life cycle. Moreover, the detailed flow of various other functions relates to the migration of virtual machines, host failure checks, etc. The discussion has also done for the implementation of your host-related algorithm implementation as specific code locations.
This video lecture will help you to appreciate the simplest way to write your own simulation scenario using the build of the cloudsim API. We have worked out this example scenario by assuming the demo configuration where primarily SpaceShared Virtual Machine and TimeShared Cloudlets are being simulated.
Note: This is a lengthy video, but will help you to understand the basic purpose of each instruction that is essential for simulating in Cloudsim Simulation Toolkit.
Question asked by Saptarshi Mondal: how do I create 5 datacenters with 2 hosts in each data center and moreover 2 cloudlets will run on each host
The following steps can be followed:
1. Create a new Class in org.cloudbus.cloudsim.examples package.
2. (To save time) Make a copy of the code from any basic Example class.
3. Add more instance of Datacenter and do check your host count and configuration especially the RAM, I am assuming to have each host with dual-core processor and 2048 MB(2gb) RAM
4. Add more instances of the virtual machines where each virtual machine will be allocated to each individual host. Please keep in mind that for the cloudlet execution are done through virtual machines, not the hosts for 5 datacenters the total no of hosts will be 10. the number of virtual machines to be used for this scenario will be 10.
5. Add more instances of cloudlets and required to bind the cloudlets to a particular virtual machine. I am assuming 2 cloudlets on one single host(VM) therefore the total number of cloudlets should be 10 VM x 2 = 20 cloudlets
6. Bind the datacenterbroker with appropriate VM lis as cloudlet list
7. Test your implemented changes by verifying the output.
Computing is one of the most important resources in the Host/Server of a datacenter. Managing its scheduling to the hosted virtual machine is a crucial element for achieving the efficiency of the overall data center. This video lecture discussed about the basic working and functions of the VmScheduler class model and its related hierarchy available in the cloudsim simulation toolkit framework.
This video lecture is in continuation of the "VmScheduler Class Model Hierarchy Description(VmScheduler) - Part 1", here the discussion related to the class hierarchy w.r.t. VmSchedulers are done that are available in the cloudsim simulation toolkit framework.
This video lecture is in continuation of the "VmScheduler Class Model Description(VmScheduler Class Hierarchy) - Part 2", here the discussion related to the class VmSchedulerSpaceShared model class which is available in the cloudsim simulation toolkit framework. This video discuss the logic for scheduling of Virtual machined on a host during the simulation run. In case if you are considering to work on a resource scheduling algorithm under batch processing mode, this is the good lecture to follow for you.
This video lecture is in continuation of the "VmScheduler Class Model Description(VmSchedulerSpaceShared Explained) - Part 3", here the discussion related to the class VmSchedulerTimeShared model class which is available in the cloudsim simulation toolkit framework. This video discusses the logic for scheduling Virtual machine on a host during the simulation run. In case if you are considering to work on a resource scheduling algorithm under round-robin or timeslice shared processing mode, this is a good lecture to follow for you.
This video lecture is in continuation of the "VmScheduler Class Model Description(VmSchedulerTimeShared Explained) - Part 4", here the discussion related to the class VmSchedulerTimeSharedOversubscription model class which is available in the cloudsim simulation toolkit framework. This video discusses the logic for scheduling of Virtual machines on a host during the simulation run. In case if you are considering to work on a resource scheduling algorithm under round-robin or timeslice shared processing mode, this is a good lecture to follow for you.
Task Scheduling algorithms are the competitive area in which the researchers are working extensively. This video will implement the simplest algorithm of the shortest job first and demonstrate, how to implement your custom scheduling algorithm in the cloudsim simulation toolkit.
Following configuration will be used for this simulation:
============================================
1. One Datacenter: Four Host, Four cores with 1000 mips each core, 8 GB RAM, 100 GB storage i.e. 100000 MB, 1 mbps i.e. 8000 Kbits/s network bandwidth measured as Kbits/s
2. One DataCenterBroker
3. CloudLets:40 Cloudlets/tasks/workload, 40000 length of instructions, 300 kb input filesize, 400 kb output filesize, 1 core cpu
utilization model to full
4. Virtual Machines: 40 Virtual machines, 20 GB Storage disk, 2 GB RAM, 1 vCPU with 1000 mips CPU speed, 1000 kbits/s Bandwidth, Timeshared scheduler for cloudlets execution
Steps to implement:
================
1.0: Initialize the CloudSim package. It should be called before creating any entities.
2.0: Create Datacenter: Datacenter k-- Datacentercharacteristics K-- HostList K-- Processing element List, Also Defines the policy for VM allocation and scheduling
3.0: Create Broker
4.0: Create Cloudlets: Defines the workload
5.0: Create VMs: Define the procedure for a Task scheduling algorithm
6.0: Starts the simulation: Automated process, handled through discrete event simulation engine
7.0: Print results when the simulation is over as Outputs
This video lecture discusses in detail about the Timeshare as well as Spaceshared policy implementation at the cloudlet and virtual machine level.
This lecture will help you to understand the way how the execution of the cloudlet can be delayed during the scheduling. Also, you will be able to get to know about the pinpointed code locations where the changes are required to be done.
This lecture demonstrates two ways to randomly set the cloudlet workload for a particular set of cloudsim simulations
The package org.cloudbus.cloudsim.power contains the core set of power-aware models and they are extended. This video discusses the class hierarchies of powerdatacenter, powerdatacenterbroker, powerhost and powervm. Apart from this, the discussion on their role during the simulation run done to understand its importance.
The powerdatacenter extends the basic datacenter class and implements the additional methods that support the virtual machine migration as well as generating the utilization log during the simulation run.
Powerdatacenterbroker is extending the datacenterbriker class and has overridden one single method i.e. processVmCreate() to add additional checks on the creation of the VM after successful migration between the hosts.
Powerhost is very important in terms of calculating the actual power consumption by a datacenter. For utilization, the history is maintained and few statistical calculations can be performed over this data, which could be used in the research paper for more authenticity of your work. An important point is to remember is that the power consumption is in watts and is only done for the CPU resource.
PowerVm inherits the basic VM model and additional methods related to maintaining the VM's utilization history up to 30 states have been implemented.
The org.cloudbus.cloudsim contains two very important sets of classes related to Vm allocation and selection for the purpose of VM migration/consolidation.
The allocation policy is responsible for identification of overutilized/underutilized hosts, which is based on certain criteria whereas the selection policy is responsible for the identification of virtual machines to be migrated from an overutilized host to the underutilized host.
This video discusses briefly the few sample allocation and selection policies that are already implemented in the tool by the cloudsim developers.
In case you want to implement your own power-aware allocation algorithm, then you are required to extend the powerVmAllocationPolicyMigrationAbstract.java class to your new class where you will also your own set of code to support the simulation.
Similarly, In the case of selection policy, you are required to extend the powerVmSelectionPolicy.java class.
Also for more understanding, you should study all the classes mentioned in the hierarchy of both the allocation as well as selection policies.
In the power-aware simulation, generating a real-time power consumption model was a crucial aspect. It is also important that the real-life server models should also be considered. For this, the SPEC benchmark was used and the more models can be included based on the requirement.
There are two categories of power models implemented in cloudsim toolkit:
1. Generic/Mathematical models
2. Real Life server models based on the SPEC benchmark.
The power is in watts and is only for the CPU component.
This video will helps you to understand how the power-aware models are being utilized in some sample example scenarios implemented under the org.cloudbus.cloudsim.examples.power based package. Here we have explained the important classes as well as their call hierarchy.
Apart from this, we have also discussed PlanetLab benchmark dataset along with its nomenclature and how it is been utilized in the sample example scenarios.
This video discusses the flow of the Iqrmmt.java example simulation scenario. Also discussed the importance of various components of supporting classes
This video discusses the insight process of the allocation of virtual machines to the suitable host at the start of the simulation and then during the simulation how the VM migrations are been planned among the hosts.
This video lecture will help you to appreciate the effects of changes that are done to the basic attributes of any power-aware planetlab example. Also we have demonstrated how you can speed up your optimization process and how the outputs over the console can be improved or saved to a particular file.
This video lecture will demonstrate a detailed step by step cloudsim tutorial to implement your own VM allocation and migration policy within power package and then integrate it in simulation flow through a custom power-aware example.
This video lecture discusses how the PlanetLab dataset is integrated into the current power-aware example scenarios and also what changes are required to be done to integrate your own dataset to test the desired simulation scenarios
Took live questions from users.
With over 15 hours of hands-on training content on the Cloudsim Simulation toolkit components with an explanation of steps that you can follow, this is the only comprehensive course available.
We'll cover the workings of the core simulation engine, core entities, power-aware energy-efficient algorithms, task scheduling, virtual machine scheduling, resource scheduling, and more!
Why take this course?
Cloudsim Simulation Toolkit is one of the most used simulators for implementing cloud-related research problems. This course will help you to follow the simulation-based approach of Cloudsim and can leverage various benefits by yourself like:
Testing of services and scenarios in a controllable environment of cloudsim without spending a single rupee on the actual cloud.
Simulating small—or large-scale infrastructure to evaluate different sets of proposed algorithms, workload, and resource performance. Ultimately, this will facilitate the development, testing, and deployment of adaptive algorithms for resource provisioning techniques.
Optimize various research-based algorithms' performance with the cloudsim simulation engine before writing a research paper.
Primary Objective of this course:
Course content is designed for researchers who are working on a different set of research problems to improve cloud computing technology.
Emphasis is on providing a basic understanding of how to configure/modify and utilize the CloudSim simulation toolkit and how to implement well-researched proposed solutions for a specific research problem(s).
You'll Also Get:
Fast & Friendly Support is available in the Q&A section.
Occasional Q&A session recordings.
Lifetime Access to course updates. This course content will be updated monthly.
If the course is subscribed at the total price(without discount), three complimentary WhatsApp/Hangout on-call sessions with the author.
Udemy Certificate of Completion Ready for Download
Don't Miss Out!
Every second you wait is costing you your research efforts.
This course comes with a 30-day money-back guarantee - so there's no risk to getting started.
Hit the "take this course" button to implement your research work today!
For Preparing for this course, the following references were used:
Cloudsim Project Code from GitHub repository Cloudslab/cloudsim
Calheiros, R.N., Ranjan, R., Beloglazov, A., De Rose, C.A., and Buyya, R., 2011. CloudSim: a toolkit for modelling and simulation of cloud computing environments and evaluation of resource provisioning algorithms. Software: Practice and Experience, 41(1), pp.23-50.