Cloud Computing Simulation Using CloudSim
Cloud Computing Simulation Using CloudSim
Step 5: The above-mentioned Java Project should be created with the location of the
previously downloaded and extracted CloudSim 3.0.3 folder.
Step 6: The JAR file from the extracted Apache Commons Math 3.6.1 folder needs to
be added to the JAR files of CloudSim.
Jar files of Apache Commons Math extracted to the Jar files of CloudSim
Step 7: Now the CloudSim Environment has been setup in the Eclipse IDE.
CloudSim Environment Has Been Setup
Java
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.LinkedList;
import java.util.List;
import org.cloudbus.cloudsim.Cloudlet;
import org.cloudbus.cloudsim.CloudletSchedulerTimeShared;
import org.cloudbus.cloudsim.Datacenter;
import org.cloudbus.cloudsim.DatacenterBroker;
import org.cloudbus.cloudsim.DatacenterCharacteristics;
import org.cloudbus.cloudsim.Host;
import org.cloudbus.cloudsim.Log;
import org.cloudbus.cloudsim.Pe;
import org.cloudbus.cloudsim.Storage;
import org.cloudbus.cloudsim.UtilizationModel;
import org.cloudbus.cloudsim.UtilizationModelFull;
import org.cloudbus.cloudsim.Vm;
import org.cloudbus.cloudsim.VmAllocationPolicySimple;
import org.cloudbus.cloudsim.VmSchedulerTimeShared;
import org.cloudbus.cloudsim.core.CloudSim;
import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
@SuppressWarnings("unused")
Log.printLine("Starting CloudSimExample2...");
try {
int num_user = 1;
// a CloudSim simulation
Datacenter datacenter0
= createDatacenter("Datacenter_0");
int vmid = 0;
// create 4 VMs
Vm vm1
new CloudletSchedulerTimeShared());
vmid++;
new CloudletSchedulerTimeShared());
vmid++;
Vm vm3 = new Vm(
new CloudletSchedulerTimeShared());
vmid++;
Vm vm 4
new CloudletSchedulerTimeShared());
vmid++;
vmlist.add(vm1);
vmlist.add(vm2);
vmlist.add(vm3);
vmlist.add(vm4);
broker.submitVmList(vmlist);
// Fifth step: Create eight Cloudlets
// Cloudlet properties
int id = 0;
UtilizationModel utilizationModel
= new UtilizationModelFull();
utilizationModel, utilizationModel,
utilizationModel);
cloudlet1.setUserId(brokerId);
id++;
outputSize / 3, utilizationModel,
utilizationModel, utilizationModel);
cloudlet2.setUserId(brokerId);
id++;
outputSize * 3, utilizationModel,
utilizationModel, utilizationModel);
cloudlet3.setUserId(brokerId);
outputSize / 2, utilizationModel,
utilizationModel, utilizationModel);
cloudlet4.setUserId(brokerId);
outputSize / 4, utilizationModel,
utilizationModel, utilizationModel);
cloudlet5.setUserId(brokerId);
Cloudlet cloudlet6 = new Cloudlet(
outputSize * 4, utilizationModel,
utilizationModel, utilizationModel);
cloudlet6.setUserId(brokerId);
outputSize * 2, utilizationModel,
utilizationModel, utilizationModel);
cloudlet7.setUserId(brokerId);
outputSize / 3, utilizationModel,
utilizationModel, utilizationModel);
cloudlet8.setUserId(brokerId);
cloudletList.add(cloudlet1);
cloudletList.add(cloudlet2);
cloudletList.add(cloudlet3);
cloudletList.add(cloudlet4);
cloudletList.add(cloudlet5);
cloudletList.add(cloudlet6);
cloudletList.add(cloudlet7);
cloudletList.add(cloudlet8);
broker.submitCloudletList(cloudletList);
// to the specific VM
broker.bindCloudletToVm(
Cloudlet1.getCloudletId(), vm1.getId());
broker.bindCloudletToVm(
Cloudlet2.getCloudletId(), vm2.getId());
broker.bindCloudletToVm(
Cloudlet3.getCloudletId(), vm3.getId());
broker.bindCloudletToVm(
Cloudlet4.getCloudletId(), vm4.getId());
broker.bindCloudletToVm(
Cloudlet5.getCloudletId(), vm1.getId());
broker.bindCloudletToVm(
Cloudlet6.getCloudletId(), vm2.getId());
broker.bindCloudletToVm(
Cloudlet7.getCloudletId(), vm3.getId());
broker.bindCloudletToVm(
Cloudlet8.getCloudletId(), vm4.getId());
CloudSim.startSimulation();
CloudSim.stopSimulation();
// over
List<Cloudlet> newList
= broker.getCloudletReceivedList();
printCloudletList(newList);
Log.printLine("CloudSimExample1 finished!");
catch (Exception e) {
e.printStackTrace();
// PowerDatacenter:
// our machine
// one core.
peList.add(
int hostId = 0;
int bw = 10000;
hostList.add(new Host(
hostId, new RamProvisionerSimple(ram),
new VmSchedulerTimeShared(
double time_zone
// in this resource
double costPerStorage
= 0.001; // the cost of using storage in this
// resource
double costPerBw
LinkedList<Storage> storageList
// adding SAN
// devices by now
DatacenterCharacteristics characteristics
= new DatacenterCharacteristics(
// object.
try {
name, characteristics,
new VmAllocationPolicySimple(hostList),
storageList, 0);
catch (Exception e) {
e.printStackTrace();
return datacenter;
try {
catch (Exception e) {
e.printStackTrace();
return null;
}
return broker;
printCloudletList(List<Cloudlet> list)
Cloudlet cloudlet;
Log.printLine();
+ "Finish Time");
cloudlet = list.get(i);
Log.print(indent + cloudlet.getCloudletId()
+ indent + indent);
if (cloudlet.getCloudletStatus()
== Cloudlet.SUCCESS) {
Log.print("SUCCESS");
Log.printLine(
indent + indent
+ cloudlet.getResourceId() + indent
+ indent + indent
+ dft.format(
cloudlet.getActualCPUTime())
+ indent + indent
+ dft.format(
cloudlet.getExecStartTime())
+ indent + indent
+ dft.format(cloudlet.getFinishTime()));
Step 5: Output after running the program is shown. One can see all the VM and
cloudlets are created and their finish time(performance) is different as their VM and
cloudlet configurations were different.
Summer-time is here and so is the time to skill-up! More than 5,000 learners have
now completed their journey from basics of DSA to advanced level development
programs such as Full-Stack, Backend Development, Data Science.
And why go anywhere else when our DSA to Development: Coding Guide will help
you master all this in a few months! Apply now to our DSA to Development
Program and our counsellors will connect with you for further guidance & support.