7-CS-IU1941230123 - CC Practical File
7-CS-IU1941230123 - CC Practical File
Cloud Computing
(CE0723)
Practical File
Jigar Prajapati
B.Tech CS-B
Semester 7
IU1941230123
Cloud Computing 1
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 1
AIM:
Sketch out and analyze architecture of CloudSim and identify different entities to
understand the structure of CloudSim.
CloudSim Architecture
Cloud Computing 2
Jigar Prajapati IU1941230123 7CS-B
2. Cloud Resources
This layer includes different main resources like datacentres, cloud coordinator (which
ensures that different resources of the cloud can work in a collaborative way) in the cloud
environment.
It includes:
i. Events handling: this is an abstract class that represents the provisioning policy for
allocating primary memory (RAM) to the VMs.
ii. Cloud Coordinator: this is abstract class that extends a cloud-based data centre to the
federation. It is responsible for periodically monitoring the internal state of data centre
resources and based on that it undertakes dynamic load-shredding decisions.
iii. Sensor: this interface must be implemented to instantiate a sensor component that
can be used by a cloud coordinator for monitoring specific performance parameter
(energy consumption, resource utilization).
iv. Data centre: this class models the core infrastructure-level services (hardware) that are
offered by cloud providers (Amazon, Azure, AppEngine).
3. Cloud Services
This layer includes different service provided to the user of cloud services. The various
services of clouds include Information as a Service (IaaS), Platform as a Service (PaaS) and
Software as a Service (SaaS).
It includes:
i. VM Provisioning: process of creating VM instances on hosts.
ii. CPU Allocation: CPU is allocated to each of the services.
iii. Memory Allocation: memory is allocated to the host.
iv. Storage Allocation: storing of data or service is managed.
v. Bandwidth Allocation: this is an abstract class that models the policy for provisioning of
bandwidth to VMs.
Cloud Computing 3
Jigar Prajapati IU1941230123 7CS-B
4. VM Services
It includes:
i. Cloudlet execution: used to support modelling of other performance and composition
metrics for applications such as transactions in the database oriented applications.
ii. VM management: the VM management stands for the operations control policies
related to VM life cycle such as provisioning a host to VM, VM creation, VM
destruction and VM migration.
5. User Interface
This layer provides the interaction between user and the simulator.
It includes:
i. Cloudlet: this class models the cloud based application services, such as content
delivery, social networking and business workflow.
ii. VM: this class models a virtual machine, which is managed and hosed by cloud host
component.
Cloud Computing 4
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 2
AIM:
Create a scenario in CloudSim to create a datacenter along with one host. Also
create one virtual machine with static configuration to run one cloudlet on it.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
* License: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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;
/**
* A simple example showing how to create a datacenter with one host and run one cloudlet on it.
*/
public class CloudSimExample1 {
Cloud Computing 5
Jigar Prajapati IU1941230123 7CS-B
/*
* Creates main() to run this example.
* @param args the args
*/
@SuppressWarnings("unused")
public static void main(String[] args) {
Log.printLine("Starting CloudSimExample1...");
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 1; // number of cloud users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
// VM description
int vmid = 0;
int mips = 1000;
long size = 10000; // image size (MB)
int ram = 512; // vm memory (MB)
long bw = 1000;
int pesNumber = 1; // number of cpus
String vmm = "Xen"; // VMM name
// create VM
Vm vm = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size, vmm, new
CloudletSchedulerTimeShared());
Cloud Computing 6
Jigar Prajapati IU1941230123 7CS-B
// Cloudlet properties
int id = 0;
long length = 400000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
CloudSim.stopSimulation();
Log.printLine("CloudSimExample1 finished!");
} catch (Exception e) {
e.printStackTrace();
Log.printLine("Unwanted errors happen");
}
}
/**
* Creates the datacenter.
* @param name the name
* @return the datacenter
Cloud Computing 7
Jigar Prajapati IU1941230123 7CS-B
*/
private static Datacenter createDatacenter(String name) {
// 4. Create Host with its id and list of PEs and add them to the list
// of machines
int hostId = 0;
int ram = 2048; // host memory (MB)
long storage = 1000000; // host storage
int bw = 10000;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerTimeShared(peList)
)
); // This is our machine
Cloud Computing 8
Jigar Prajapati IU1941230123 7CS-B
// devices by now
return datacenter;
}
/**
* Prints the Cloudlet objects.
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
Cloud Computing 9
Jigar Prajapati IU1941230123 7CS-B
Log.printLine();
Log.printLine("========== OUTPUT ==========");
Log.printLine("Cloudlet ID" + indent + "STATUS" + indent
+ "Data center ID" + indent + "VM ID" + indent + "Time" + indent
+ "Start Time" + indent + "Finish Time");
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS) {
Log.print("SUCCESS");
Cloud Computing 10
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 3
AIM:
Illustrate a scenario in CloudSim to create one datacenter and one host. Also
implement required virtual machines to run two cloudlets on it. Assume that
cloudlets run in VMs with the same MIPS requirements. The cloudlets will take
the same time to complete the execution.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modelling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, The University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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;
Cloud Computing 11
Jigar Prajapati IU1941230123 7CS-B
/**
* A simple example showing how to create a datacenter with one host and run two cloudlets on it.
*The cloudlets run in VMs with the same MIPS requirements.
* The cloudlets will take the same time to complete the execution.
*/
public class CloudSimExample2 {
Log.printLine("Starting CloudSimExample2...");
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 1; // number of cloud users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//VM description
int vmid = 0;
int mips = 250;
long size = 10000; //image size (MB)
int ram = 512; //vm memory (MB)
long bw = 1000;
int pesNumber = 1; //number of cpus
Cloud Computing 12
Jigar Prajapati IU1941230123 7CS-B
vmid++;
Vm vm2 = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size, vmm, new
CloudletSchedulerTimeShared());
//Cloudlet properties
int id = 0;
pesNumber=1;
long length = 250000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
id++;
Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize, outputSize,
utilizationModel, utilizationModel, utilizationModel);
cloudlet2.setUserId(brokerId);
Cloud Computing 13
Jigar Prajapati IU1941230123 7CS-B
broker.bindCloudletToVm(cloudlet1.getCloudletId(),vm1.getId());
broker.bindCloudletToVm(cloudlet2.getCloudletId(),vm2.getId());
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample2 finished!");
}
catch (Exception e) {
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected error");
}
}
//4. Create Host with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 2048; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
Cloud Computing 14
Jigar Prajapati IU1941230123 7CS-B
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerTimeShared(peList)
)
); // This is our machine
return datacenter;
}
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
//to the specific rules of the simulated scenario
private static DatacenterBroker createBroker(){
Cloud Computing 15
Jigar Prajapati IU1941230123 7CS-B
}
return broker;
}
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
}
}
Cloud Computing 16
Jigar Prajapati IU1941230123 7CS-B
OUTPUT:
Cloud Computing 17
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 4
AIM:
Implement a datacenter with two hosts and run two cloudlets on it in CloudSim.
Consider the cloudlets run in VMs with different MIPS requirements. The
cloudlets will take different time to complete the execution depending on the
requested VM performance.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modelling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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;
/**
Cloud Computing 18
Jigar Prajapati IU1941230123 7CS-B
* A simple example showing how to create a datacenter with two hosts and run two cloudlets on it.
* The cloudlets run in VMs with different MIPS requirements.
* The cloudlets will take different time to complete the execution depending on the requested VM
* performance.
*/
public class CloudSimExample3 {
Log.printLine("Starting CloudSimExample3...");
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 1; // number of cloud users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//VM description
int vmid = 0;
int mips = 250;
long size = 10000; //image size (MB)
int ram = 2048; //vm memory (MB)
long bw = 1000;
int pesNumber = 1; //number of cpus
Cloud Computing 19
Jigar Prajapati IU1941230123 7CS-B
//the second VM will have twice the priority of VM1 and so will receive twice
CPU time
vmid++;
Vm vm2 = new Vm(vmid, brokerId, mips * 2, pesNumber, ram, bw, size, vmm,
new CloudletSchedulerTimeShared());
//Cloudlet properties
int id = 0;
long length = 40000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
id++;
Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize, outputSize,
utilizationModel, utilizationModel, utilizationModel);
cloudlet2.setUserId(brokerId);
Cloud Computing 20
Jigar Prajapati IU1941230123 7CS-B
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample3 finished!");
}
catch (Exception e) {
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected
error");
}
}
//4. Create Hosts with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 2048; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
hostList.add(
new Host(
Cloud Computing 21
Jigar Prajapati IU1941230123 7CS-B
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerTimeShared(peList)
)
); // This is our first machine
hostId++;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList2,
new VmSchedulerTimeShared(peList2)
)
); // This is our second machine
Cloud Computing 22
Jigar Prajapati IU1941230123 7CS-B
return datacenter;
}
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
//to the specific rules of the simulated scenario
private static DatacenterBroker createBroker(){
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
Cloud Computing 23
Jigar Prajapati IU1941230123 7CS-B
}
}
OUTPUT:
Cloud Computing 24
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 5
AIM:
Design a program in CloudSim to create two datacenters with one host and run
two cloudlets on it.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
* License: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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.VmSchedulerSpaceShared;
import org.cloudbus.cloudsim.core.CloudSim;
import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
/**
* A simple example showing how to create two datacenters with one host each and
* run two cloudlets on them.
Cloud Computing 25
Jigar Prajapati IU1941230123 7CS-B
*/
public class CloudSimExample4 {
Log.printLine("Starting CloudSimExample4...");
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 1; // number of cloud users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//VM description
int vmid = 0;
int mips = 250;
long size = 10000; //image size (MB)
int ram = 512; //vm memory (MB)
long bw = 1000;
int pesNumber = 1; //number of cpus
String vmm = "Xen"; //VMM name
Cloud Computing 26
Jigar Prajapati IU1941230123 7CS-B
vmid++;
Vm vm2 = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size, vmm, new
CloudletSchedulerTimeShared());
//Cloudlet properties
int id = 0;
long length = 40000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
id++;
Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize, outputSize,
utilizationModel, utilizationModel, utilizationModel);
cloudlet2.setUserId(brokerId);
Cloud Computing 27
Jigar Prajapati IU1941230123 7CS-B
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample4 finished!");
}
catch (Exception e) {
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected
error");
}
}
//4. Create Host with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 2048; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
//in this example, the VMAllocatonPolicy in use is SpaceShared. It means that only one
VM
//is allowed to run on each Pe. As each Host has only one Pe, only one VM can run on
each Host.
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
Cloud Computing 28
Jigar Prajapati IU1941230123 7CS-B
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerSpaceShared(peList)
)
); // This is our first machine
return datacenter;
}
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
//to the specific rules of the simulated scenario
private static DatacenterBroker createBroker(){
Cloud Computing 29
Jigar Prajapati IU1941230123 7CS-B
return null;
}
return broker;
}
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
}
}
Cloud Computing 30
Jigar Prajapati IU1941230123 7CS-B
OUTPUT:
Cloud Computing 31
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 6
AIM:
Construct a case in CloudSim to create two datacenters with one host each and
run cloudlets of two users on them.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modelling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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.VmSchedulerSpaceShared;
import org.cloudbus.cloudsim.core.CloudSim;
import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
/**
* A simple example showing how to create two datacenters with one host each and
* run cloudlets of two users on them.
*/
Cloud Computing 32
Jigar Prajapati IU1941230123 7CS-B
Log.printLine("Starting CloudSimExample5...");
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 2; // number of cloud users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//VM description
int vmid = 0;
int mips = 250;
long size = 10000; //image size (MB)
Cloud Computing 33
Jigar Prajapati IU1941230123 7CS-B
//Cloudlet properties
int id = 0;
long length = 40000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
//add the cloudlets to the lists: each cloudlet belongs to one user
cloudletList1.add(cloudlet1);
cloudletList2.add(cloudlet2);
Cloud Computing 34
Jigar Prajapati IU1941230123 7CS-B
CloudSim.stopSimulation();
Log.printLine("CloudSimExample5 finished!");
}
catch (Exception e) {
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected
error");
}
}
int mips=1000;
//4. Create Host with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 2048; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
Cloud Computing 35
Jigar Prajapati IU1941230123 7CS-B
//in this example, the VMAllocatonPolicy in use is SpaceShared. It means that only one
VM
//is allowed to run on each Pe. As each Host has only one Pe, only one VM can run on
each Host.
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList,
new VmSchedulerSpaceShared(peList)
)
); // This is our first machine
return datacenter;
}
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
Cloud Computing 36
Jigar Prajapati IU1941230123 7CS-B
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
}
}
Cloud Computing 37
Jigar Prajapati IU1941230123 7CS-B
OUTPUT:
Cloud Computing 38
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 7
AIM:
Make and perform scenario to pause and resume the simulation in CloudSim, and
create simulation entities (a DatacenterBroker) dynamically.
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modelling and Simulation of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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;
/**
* An example showing how to pause and resume the simulation,
* and create simulation entities (a DatacenterBroker in this example) dynamically.
*/
public class CloudSimExample7 {
Cloud Computing 39
Jigar Prajapati IU1941230123 7CS-B
//VM Parameters
long size = 10000; //image size (MB)
int ram = 512; //vm memory (MB)
int mips = 250;
long bw = 1000;
int pesNumber = 1; //number of cpus
String vmm = "Xen"; //VMM name
//create VMs
Vm[] vm = new Vm[vms];
for(int i=0;i<vms;i++){
vm[i] = new Vm(idShift + i, userId, mips, pesNumber, ram, bw, size, vmm, new
CloudletSchedulerTimeShared());
list.add(vm[i]);
}
return list;
}
//cloudlet parameters
long length = 40000;
long fileSize = 300;
long outputSize = 300;
int pesNumber = 1;
UtilizationModel utilizationModel = new UtilizationModelFull();
for(int i=0;i<cloudlets;i++){
cloudlet[i] = new Cloudlet(idShift + i, length, pesNumber, fileSize, outputSize,
utilizationModel, utilizationModel, utilizationModel);
// setting the owner of these Cloudlets
Cloud Computing 40
Jigar Prajapati IU1941230123 7CS-B
cloudlet[i].setUserId(userId);
list.add(cloudlet[i]);
}
return list;
}
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 2; // number of grid users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//Fourth step: Create VMs and Cloudlets and send them to broker
vmlist = createVM(brokerId, 5, 0); //creating 5 vms
cloudletList = createCloudlet(brokerId, 10, 0); // creating 10 cloudlets
broker.submitVmList(vmlist);
broker.submitCloudletList(cloudletList);
Cloud Computing 41
Jigar Prajapati IU1941230123 7CS-B
if (CloudSim.isPaused()) {
break;
}
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
broker.submitVmList(vmlist);
broker.submitCloudletList(cloudletList);
CloudSim.resumeSimulation();
}
};
new Thread(monitor).start();
Thread.sleep(1000);
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample7 finished!");
Cloud Computing 42
Jigar Prajapati IU1941230123 7CS-B
}
catch (Exception e)
{
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected
error");
}
}
//4. Create Hosts with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 16384; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
Cloud Computing 43
Jigar Prajapati IU1941230123 7CS-B
storage,
peList1,
new VmSchedulerTimeShared(peList1)
)
); // This is our first machine
hostId++;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList2,
new VmSchedulerTimeShared(peList2)
)
); // Second machine
return datacenter;
Cloud Computing 44
Jigar Prajapati IU1941230123 7CS-B
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
//to the specific rules of the simulated scenario
private static DatacenterBroker createBroker(String name){
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
Cloud Computing 45
Jigar Prajapati IU1941230123 7CS-B
}
}
}
OUTPUT:
Cloud Computing 46
Jigar Prajapati IU1941230123 7CS-B
Cloud Computing 47
Jigar Prajapati IU1941230123 7CS-B
Cloud Computing 48
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 8
AIM:
Organize a case in CloudSim for simulation entities (a DatacenterBroker) in run-
time using a global manager entity (GlobalBroker).
CODE:
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation of Clouds
* License: GPL - http://www.gnu.org/copyleft/gpl.html
* Copyright (c) 2009, the University of Melbourne, Australia
*/
package org.cloudbus.cloudsim.examples;
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.core.SimEntity;
import org.cloudbus.cloudsim.core.SimEvent;
import org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
/**
* An example showing how to create simulation entities (a DatacenterBroker in this example) in
Cloud Computing 49
Jigar Prajapati IU1941230123 7CS-B
//VM Parameters
long size = 10000; //image size (MB)
int ram = 512; //vm memory (MB)
int mips = 250;
long bw = 1000;
int pesNumber = 1; //number of cpus
String vmm = "Xen"; //VMM name
//create VMs
Vm[] vm = new Vm[vms];
for(int i=0;i<vms;i++){
vm[i] = new Vm(idShift + i, userId, mips, pesNumber, ram, bw, size, vmm, new
CloudletSchedulerTimeShared());
list.add(vm[i]);
}
return list;
}
//cloudlet parameters
long length = 40000;
long fileSize = 300;
long outputSize = 300;
int pesNumber = 1;
UtilizationModel utilizationModel = new UtilizationModelFull();
Cloud Computing 50
Jigar Prajapati IU1941230123 7CS-B
for(int i=0;i<cloudlets;i++){
cloudlet[i] = new Cloudlet(idShift + i, length, pesNumber, fileSize, outputSize,
utilizationModel, utilizationModel, utilizationModel);
// setting the owner of these Cloudlets
cloudlet[i].setUserId(userId);
list.add(cloudlet[i]);
}
return list;
}
try {
// First step: Initialize the CloudSim package. It should be called
// before creating any entities.
int num_user = 2; // number of grid users
Calendar calendar = Calendar.getInstance();
boolean trace_flag = false; // mean trace events
//Fourth step: Create VMs and Cloudlets and send them to broker
vmList = createVM(brokerId, 5, 0); //creating 5 vms
cloudletList = createCloudlet(brokerId, 10, 0); // creating 10 cloudlets
broker.submitVmList(vmList);
broker.submitCloudletList(cloudletList);
Cloud Computing 51
Jigar Prajapati IU1941230123 7CS-B
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample8 finished!");
}
catch (Exception e)
{
e.printStackTrace();
Log.printLine("The simulation has been terminated due to an unexpected
error");
}
}
Cloud Computing 52
Jigar Prajapati IU1941230123 7CS-B
//4. Create Hosts with its id and list of PEs and add them to the list of machines
int hostId=0;
int ram = 16384; //host memory (MB)
long storage = 1000000; //host storage
int bw = 10000;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList1,
new VmSchedulerTimeShared(peList1)
)
); // This is our first machine
hostId++;
hostList.add(
new Host(
hostId,
new RamProvisionerSimple(ram),
new BwProvisionerSimple(bw),
storage,
peList2,
new VmSchedulerTimeShared(peList2)
)
); // Second machine
Cloud Computing 53
Jigar Prajapati IU1941230123 7CS-B
return datacenter;
}
//We strongly encourage users to develop their own broker policies, to submit vms and
cloudlets according
//to the specific rules of the simulated scenario
private static DatacenterBroker createBroker(String name){
/**
* Prints the Cloudlet objects
* @param list list of Cloudlets
*/
private static void printCloudletList(List<Cloudlet> list) {
int size = list.size();
Cloudlet cloudlet;
Cloud Computing 54
Jigar Prajapati IU1941230123 7CS-B
if (cloudlet.getCloudletStatus() == Cloudlet.SUCCESS){
Log.print("SUCCESS");
@Override
public void processEvent(SimEvent ev) {
switch (ev.getTag()) {
case CREATE_BROKER:
setBroker(createBroker(super.getName()+"_"));
broker.submitVmList(getVmList());
broker.submitCloudletList(getCloudletList());
CloudSim.resumeSimulation();
break;
default:
Log.printLine(getName() + ": unknown event type");
break;
Cloud Computing 55
Jigar Prajapati IU1941230123 7CS-B
}
}
@Override
public void startEntity() {
Log.printLine(super.getName()+" is starting...");
schedule(getId(), 200, CREATE_BROKER);
}
@Override
public void shutdownEntity() {
}
public List<Vm> getVmList() {
return vmList;
}
protected void setVmList(List<Vm> vmList) {
this.vmList = vmList;
}
public List<Cloudlet> getCloudletList() {
return cloudletList;
}
protected void setCloudletList(List<Cloudlet> cloudletList) {
this.cloudletList = cloudletList;
}
public DatacenterBroker getBroker() {
return broker;
}
protected void setBroker(DatacenterBroker broker) {
this.broker = broker;
}
}
}
Cloud Computing 56
Jigar Prajapati IU1941230123 7CS-B
OUTPUT:
Cloud Computing 57
Jigar Prajapati IU1941230123 7CS-B
Cloud Computing 58
Jigar Prajapati IU1941230123 7CS-B
Cloud Computing 59
Jigar Prajapati IU1941230123 7CS-B
PRACTICAL - 9
AIM:
Sketch out and analyze architecture of Microsoft Azure.
Microsoft Azure Architecture
AppFabric
It is the middleware which comprises of services such as compute, storage, networking,
and identity management.
Azure is hosted within Microsoft data centers and is accessible from Microsoft Azure
Management Portal.
1. Azure Compute
It includes:
i. Azure Virtual machine: It is an environment that allows the user to have a similar
experience as that of while using dedicated hardware.
ii. Azure Virtual Machine Set: They are used to create thousands of identical virtual
machines.
iii. Azure Container Service: Containers are packages that do not need virtual machines
and instead depend on virtual isolation to run applications that have shared OS kernel.
And Azure container service creates a container hosting solution.
iv. Azure Container Registry: It is used to store and manage container images.
v. Azure Functions: It doesn’t have a server and lets you run code-on-demand without
infrastructure.
Cloud Computing 60
Jigar Prajapati IU1941230123 7CS-B
2. Azure Networking
These networks allow enterprises to safely connect to their cloud resources through
Azure ExpressRoute.
It is also used to manage private virtual networks and, further, create multiple virtual
networks.
It includes:
i. Azure Virtual Network: It performs network isolation and segmentation with filters
which routes the traffic. It comprises of Azure Connect which allows easy setup of IP-
based and Azure Traffic Manager.
ii. Azure Load Balancer: It balances a load of traffic going to virtual machines and isolates
the external traffic to another virtual machine.
iii. Azure Traffic Manager: It provides load balancing features.
iv. Azure Express Route: It is a network that lets you extend the current network into
Microsoft cloud over a private connection.
v. Azure DNS: It translates a website to the IP address.
vi. Content Delivery Network (CDN): It helps in improving delivering the content and
allows the streaming of content by using the location of 24 different locations that are
distributed throughout the world.
vii. Azure VPN Gateway: It sends encrypted traffic across a public connection.
3. Azure Storage
Azure storage provides storage solutions that are more durable and you can build large-
scale applications, and still scale higher if needed, and it automatically balances the data
based on traffic.
It includes:
i. Azure Blob Storage: Azure follows storage in terms of binary large objects (BLOBs) with
blob service. It gives users the ability to describe their data by adding metadata.
Cloud Computing 61
Jigar Prajapati IU1941230123 7CS-B
ii. Azure Queue Storage: It allows applications to communicate via the exchange of
messages on a queue hence it avoids lost or unprocessed messages.
iii. Azure File Storage: It offers file sharing in the cloud using standard protocol.
iv. Azure Table Storage: It stores semi-structured NoSQL data in the cloud.
4. Azure Database
It includes:
i. Azure SQL Database: It is a relational database hosted in Azure and built on SQL server
technologies. It provides a scalable, highly available, and fault-tolerant database.
ii. Azure DocumentDB: It is a NoSQL database-as-a-service whose features are a
transactional process over no schema data, rich querying and query processing and
transaction semantics that are similar to the relational databases.
iii. Azure Redis Cache: It is a data structure that implements a key-value database with
optional durability.
Cloud Computing 62