You are on page 1of 28

IU2041050070- NISH CE-A

MEHTA

INDUS INSTITUTE OF TECHNOLOGY &


ENGINEERING

Name: NISH MEHTA


Enrollment No: IU2041050070

Branch: Computer Engineering


Semester: VII
Subject: Cloud
Computing Subject Code:
CE0723
IU2041050070- NISH CE-A
MEHTA

INDEX
SR. PRACTICAL Learning DATE PAGE NO. SIGN
NO Outcomes

1 Sketch out and analyze the architecture of Usage of


4/09/2023
Cloudsim and identify different entities to CloudSim and
understand the structure of Cloudsim Architecture of
the same.

2. Create a scenario in Cloudsim to create a Working of the


4/09/2023
datacenter along with one host. Also, create one data centres m
virtual machine with static configuration to run cloud
one cloudlet on it. environment.

3. Illustrate a scenario in cloudsim to create one Understanding


datacenter and one host. Also, implement the Cloudlets 4/09/2023
required virtual machines to run two cloudlets request a cloud
on it. Assume that cloudlets run in VMs with scenario
the same MIPS requirements. The cloudlets will
take the same time to complete the execution.

4. Implement a datacenter with two hosts and run Analyzing the


two cloudlets on it in cloudsim. Consider the cloud
cloudlets run in VMs with different MIPS performance
requirements. The cloudlets will take different in the distinct
time to complete the execution depending on scenario
the requested VM performance.

5. Design a program in cloudsim to create two Multiple


data centers with one host and run two cloudlets
cloudlets on it. Execution in
the cloud.

6. Construct a case in cloudsim to create two Multiple data


datacenters with one host each and run and its
cloudlets of two users on them.

7. Make and perform scenarios to pause and Understanding


resume the simulation in cloudsim, and create the
simulation entities (a Datacenter Broker) Broker concept
dynamically. with example

8. Organize a case in cloudsim for simulation Understanding


IU2041050070- NISH CE-A
MEHTA

entities (a Datacenter Broker) in run-time using the global


a global manager entity (Global Broker). manager in
cloud.

9. Sketch out and analyze the architecture of Working of


Microsoft Azure. AZURE cloud.

10. Implement a web application using a Microsoft Utilizing the


Azure account as a cloud service by creating a cloud
web page and database. Also, provide database services,
connectivity with the implemented webpage.
IU2041050070- NISH CE-A
MEHTA

PRACTICAL -1
AIM: Sketch out and analyze the architecture of Cloudsim and identify
different entities to understand the structure of Cloudsim.

THEORY:

1. Cloudsim introduction: -
CloudSim is an open-source framework, which is used to simulate cloud computing
infrastructure and services. It is developed by the CLOUDS Lab organization and is written
entirely in Java. It is used for modelling and affecting a cloud computing environment as a
means for evaluating a hypothesis prior to software development in order to reproduce tests and
results.
Why use Cloudsim?
Several simulators can be used to simulate the working of new services, among
them CloudSim Simulation Toolkit is the more generalized and effective simulator
for testing Cloud computing-related hypotheses.
CloudSim is an extensible simulation framework developed by a team of
researchers (under the guidance of Dr. Raj Kumar Buyya) at Cloud Computing and
Distributed Systems (CLOUDS) Laboratory, University of Melbourne.

This toolkit allows seamless modeling, simulation, and Experimentation related to


cloud- based infrastructures and application services, and its various released versions
are

published on Cloudsim’s GitHub project page.


CloudSim supports the modeling and simulation of large-scale Cloud computing data
centers. This tool is an API developed using Java programming language.
The interesting point of this tool is that the various components of this real-world
virtualization were modeled in the form of Java classes. These classes produce
similar behavior during the simulation using logical and mathematical models.

Features of CloudSim Simulation Toolkit


1. Support for modeling and simulation of large-scale Cloud computing
environments, including data centers, on a single physical computing
node(could be a desktop, laptop, or server machine).
2. A self-contained platform for modeling Clouds, service brokers, provisioning,
and allocation policies.
3. Facilitates the simulation of network connections across the simulated
system elements.
4. Facility for simulation of federated Cloud environment that inter-networks
resources from both private and public domains, a feature critical for
research studies related to Cloudbursts and automatic application scaling.
5. Availability of a virtualization engine that facilitates the creation and management
IU2041050070- NISH CE-A
MEHTA

of multiple, independent, and co-hosted virtualized services on a data center node.


6. Flexibility to switch between space-shared and time-shared allocation
of processing cores to virtualized services.

2. Cloudsim Architecture

The above diagram demonstrates the layered architecture of the CloudSim Simulation Toolkit.
The CloudSim Core simulation engine provides support for modeling and simulation of
virtualized Cloud-based data center environments including queuing and processing of events,
creation of cloud system entities (like data center, host, virtual machines, brokers, services, etc.)
communication between components and management of the simulation clock.

The CloudSim layer provides dedicated management interfaces for Virtual Machines, memory,
storage, and bandwidth. Also, it manages the other fundamental issues, such as provisioning of
hosts to Virtual Machines, managing application execution, and monitoring dynamic system
state(e.g. Network topology, sensors, storage characteristics, etc), etc.

The User Code layer is a custom layer where the user writes their own code to redefine the
characteristics of the stimulating environment as per their new research findings.

3. Entities of CloudSim
IU2041050070- NISH CE-A
MEHTA

1. Cloudlet: A cloudlet represents a task or workload that needs to be executed in the cloud. It
encapsulates the computational requirements, data size, and other parameters of a specific
job or application.

2. Cloudlet Scheduler: This entity is responsible for scheduling and allocating cloudlets to
virtual machines (VMs) in the cloud. It determines the order and placement of cloudlets on
VMS based on various scheduling policies.

3. Datacenter: A datacenter represents a physical infrastructure that hosts multiple virtual


machines. It consists of physical hosts or servers, which are capable of running V MS, and
networking components that enable communication among the hosts.

4. Datacenter Broker: The Datacenter Broker acts as an intermediary between cloud service
users (clients) and the cloud data centers. It receives cloudlet requests from clients and
submits them to appropriate data centers for execution.

5. Virtual Machine (VM): A VM is a software emulation of a physical computer within


which cloudlets are executed. CloudSim allows the creation and management of multiple
VMS in a data center.

6. Host: A host is a physical machine or server within a data center that can accommodate
multiple VMs. It provides computing resources such as CPU, memory, and storage to the
VMs.

7. CloudSimEntity: This is the base class for all entities in CloudSim. It provides common
attributes and methods that are inherited by other entities.

8. Data center characteristics: This entity represents the characteristics or properties of a


data center, such as its geographical location, power consumption, cost models, and network
parameters.

9. CloudletSchedulerSpaceShared: It is a specific implementation of a cloudlet scheduler


that allocates resources to cloudlets using a space-sharing policy, where each cloudlet is
assigned a portion of resources based on its demands.

10. CloudSimTags: CloudSim uses tags to identify and categorize different types of events and
messages exchanged among entities. CloudSimTags define the constants representing these
tags.
IU2041050070- NISH CE-A
MEHTA

PRACTICAL -2
Aim: Create a scenario in Cloudsim to create a data centre along with one host. Also,
create one virtual machine with a static configuration to run one cloudlet on it.

Code:
package org.cloudbus.cloudsim.examples;
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling and Simulation
* of Clouds
* Licence: GPL - http://www.gnu.org/copyleft/gpl.html
*
* Copyright (c) 2009, The University of Melbourne, Australia
*/
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 {
/** The cloudlet list. */
private static List<Cloudlet> cloudletList;
/** The vmlist. */
private static List<Vm> vmlist;
/**
* Creates main() to run this example.
*
* @param args the args
*/
@SuppressWarnings("unused"
)
public static void main(String[] args) {
Log.printLine("Starting CloudSimExample1...");

try {
IU2041050070- NISH CE-A
MEHTA
// 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

// Initialize the CloudSim library


CloudSim.init(num_user, calendar, trace_flag);

// Second step: Create Datacenters


// Datacenters are the resource providers in CloudSim. We need at
// list one of them to run a CloudSim simulation
Datacenter datacenter0 = createDatacenter("Datacenter_0");

// Third step: Create Broker


DatacenterBroker broker =
createBroker(); int brokerId =
broker.getId();

// Fourth step: Create one virtual


machine vmlist = new ArrayList<Vm>();

// 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());

// add the VM to the


vmList vmlist.add(vm);

// submit vm list to the broker


broker.submitVmList(vmlist)
;

// Fifth step: Create one Cloudlet


cloudletList = new ArrayList<Cloudlet>();

// Cloudlet
properties int id = 0;
long length = 400000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();

Cloudlet cloudlet = new Cloudlet(id, length, pesNumber, fileSize, outputSize,


utilizationModel, utilizationModel, utilizationModel);
cloudlet.setUserId(brokerId)
; cloudlet.setVmId(vmid);
// add the cloudlet to the
list
cloudletList.add(cloudlet);
// submit cloudlet list to the broker
broker.submitCloudletList(cloudletList)
;
// Sixth step: Starts the
IU2041050070- NISH CE-A
MEHTA
simulation
CloudSim.startSimulation();
IU2041050070- NISH CE-A
MEHTA

CloudSim.stopSimulation();
//Final step: Print results when simulation is over
List<Cloudlet> newList =
broker.getCloudletReceivedList();
printCloudletList(newList);
Log.printLine("CloudSimExample1 finished!");
} catch (Exception e) {
e.printStackTrace();
Log.printLine("Unwanted errors happen");
}
}
/**
* Creates the datacenter.
*
* @param name the name
*
* @return the datacenter
*/
private static Datacenter createDatacenter(String name) {
// Here are the steps needed to create a PowerDatacenter:
// 1. We need to create a list to store
// our machine
List<Host> hostList = new ArrayList<Host>();
// 2. A Machine contains one or more PEs or CPUs/Cores.
// In this example, it will have only one
core. List<Pe> peList = new
ArrayList<Pe>();
int mips = 1000;
// 3. Create PEs and add these into a list.
peList.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and MIPS Rating
// 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
// 5. Create a DatacenterCharacteristics object that stores the
// properties of a data center: architecture, OS, list of
// Machines, allocation policy: time- or space-shared, time zone
// and its price (G$/Pe time unit).
String arch = "x86"; // system architecture
String os = "Linux"; // operating system
String vmm = "Xen";
double time_zone = 10.0; // time zone this resource located
double cost = 3.0; // the cost of using processing in this
resource
double costPerMem = 0.05; // the cost of using memory in this resource
double costPerStorage = 0.001; // the cost of using storage in this
//
resource double costPerBw = 0.0; // the cost of using bw in this resource
LinkedList<Storage> storageList = new LinkedList<Storage>(); // we are not adding SA
// devices by now
IU2041050070- NISH CE-A
MEHTA
DatacenterCharacteristics characteristics = new DatacenterCharacteristics(
arch, os, vmm, hostList, time_zone, cost, costPerMem,
costPerStorage, costPerBw);

// 6. Finally, we need to create a PowerDatacenter object.


Datacenter datacenter = null;
try {
datacenter = new Datacenter(name, characteristics, new
VmAllocationPolicySimple(hostList), storageList, 0);
} catch (Exception e) {
e.printStackTrace();
}
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
/**
* Creates the broker.
*
* @return the datacenter broker
*/
private static DatacenterBroker createBroker()
{ DatacenterBroker broker = null;
try {
broker = new DatacenterBroker("Broker");
} catch (Exception e) {
e.printStackTrace()
; 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;
String indent = "
";
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");
DecimalFormat dft = new DecimalFormat("###.##");
for (int i = 0; i < size; i++) {
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 + cloudlet.getVmId()
+ indent + indent
+ dft.format(cloudlet.getActualCPUTime()) + indent
+ indent + dft.format(cloudlet.getExecStartTime())
+ indent + indent
+ dft.format(cloudlet.getFinishTime()));
}
IU2041050070- NISH CE-A
MEHTA
}
}

}
OUTPUT

:
IU2041050070- NISH CE-A
MEHTA

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.
LO:Understanding the cloudlets request in a cloud scenario
THEORY
CloiudSim Architecture

CloudSim - General steps to follow


● Initiate the CloudSim simulation.
IU2041050070- NISH CE-A
MEHTA

● create a datacenter.
● create a datacenter broker.
● create VMs/cloudlet add it to respective lists.
● submit vm and cloudlet list to broker.
● start simulation.
● stop simulation.
● print the end results.

1. DATACENTER:

This Class model the core infrastructure-level services (i.e. hardware) that are offered by
Cloud providers (Amazon, Azure, and App Engine). It encapsulates a set of hosts(resembling
server machine model) instances that can either be homogeneous or heterogeneous
concerning their hardware configurations (memory, cores, capacity, and storage). Also, every
Datacenter component takes care of generalized application provisioning that enforces a set of
policies for the allocation of bandwidth, memory, and storage devices to hosts and their
related VMs.

// Create Datacenters

// Datacenters are the resource providers in CloudSim.

//At list one of them is needed to run a CloudSim simulation. Datacenter datacenter0 =
create Datacenter("Datacenter_0");

/*** Creates the datacenter.

** @param name the name


** @return the datacenter
*/
private static Datacenter create Datacenter(String name) {

// Here are the steps needed to create a PowerDatacenter:


// 1. We need to create a list to store

// our machine

List<Host> hostList = new ArrayList<Host>();

// 2. A Machine contains one or more PEs or CPUs/Cores.


// In this example, it will have only one core. List<Pe> peList
= new
ArrayList<Pe>(); int
mips = 1000;
// 3. Create PEs and add these into a list.
peList.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and
MIPS Rating
IU2041050070- NISH CE-A
MEHTA

// 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

// 5. Create a DatacenterCharacteristics object that stores the


// properties of a data center: architecture, OS, list of

// Machines, allocation policy: time- or space-shared, time zone

// and its price (G$/Pe time unit).

String arch = "x86"; // system architecture String os


= "Linux"; // operating system String vmm = "Xen";
double time_zone = 10.0; // time zone this resource located

double cost = 3.0; // the cost of using processing in this resource double costPerMem
= 0.05; // the cost of using memory in this resource double costPerStorage = 0.001; //
the cost of using storage in this

// resource

double costPerBw = 0.0; // the cost of using bw in this resource LinkedList<Storage> storageList
= new LinkedList<Storage>(); // we are not adding SAN

// devices by now

DatacenterCharacteristics characteristics = new DatacenterCharacteristics( arch, os,


vmm, hostList, time_zone, cost, costPerMem,

costPerStorage, costPerBw);

// 6. Finally, we need to create a PowerDatacenter object. Datacenter datacenter = null;

try {datacenter = new Datacenter(name, characteristics,


new VmAllocationPolicySimple(hostList), storageList, 0);

} catch (Exception e)
{ e.printStackTrace();

}return datacenter;}
IU2041050070- NISH CE-A
MEHTA

2. Datacenter
Broker
or Cloud Broker

This class model is a broker, which is responsible for mediating negotiations between SaaS and
Cloud providers, and such negotiations are driven by QoS requirements. The broker class acts
on behalf of applications. Its prime role is to query the CIS to discover suitable
resources/services and undertakes negotiations for the allocation of resources/services that can
fulfill the application’s QoS needs. This class must be extended for evaluating and testing
custom brokering policies.

// Create Broker

Datacenter Broker broker = create Broker();


int brokerId = broker.getId();

// We strongly encourage users to develop their own broker policies, to

// submit vms and cloudlets according

// to the specific rules of the simulated scenario

/*** Creates the broker.

** @return the datacenter broker


*/
private static DatacenterBroker createBroker()
{ DatacenterBroker broker = null;
try {

broker = new DatacenterBroker("Broker");} catch (Exception e) { e.printStackTrace(); return


null;

}return broker;}

3. Cloudlet

This class model(define specific attributes such as length of instruction, input/output filesize,
no of processor required, etc) the Cloud-based application services (program-based tasks)
such as content delivery, social networking, etc. CloudSim implements the complexity of an
application in terms of its computational requirements. As a developer, we know that every
individual executable application/service workload has a pre-defined instruction length and
requires

certain network data flow (both pre and post-fetches) overhead that it needs to undertake
during its life cycle. this class allows modeling all the above-said requirements

//Create CloudletList

cloudletList = new ArrayList<Cloudlet>();


IU2041050070- NISH CE-A
MEHTA

// Cloudlet properties
//Create one Cloudlet

int id = 0;
long length = 400000;
long fileSize = 300;
long outputSize = 300;

UtilizationModel utilizationModel = new UtilizationModelFull();

Cloudlet cloudlet = new Cloudlet(id, length, pesNumber, fileSize, outputSize, utilizationModel,


utilizationModel, utilizationModel); cloudlet.setUserId(brokerId);

cloudlet.setVmId(vmid);

// add the cloudlet to the list cloudletList.add(cloudlet);


// submit cloudlet list to the broker
broker.submitCloudletList(cloudletList)
;

4. VM:

This class model a Virtual Machine (VM), which is managed and hosted by a Cloud host
component. Every VM component has access to a component that stores the following
characteristics related to a VM (i.e.) accessible memory, processor, storage size, and the VM’s
internal provisioning policy that is extended from an abstract class called the
CloudletScheduler.

// VM description

int vmid = 0; // virtual machine ID

int mips = 1000; // million instructions per second long size = 10000; // image size

(MB) int ram = 512; // vm memory (MB)

long bw = 1000; //bandwidth megabits/sec 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());

// add the VM to the vmList vmlist.add(vm);


// submit vm list to the broker broker.submitVmList(vmlist);
To simulate the workloads
· org.cloudbus.cloudsim -> “Cloudlet.java”To
simulate the regions and datacenters
IU2041050070- NISH CE-A
MEHTA

· org.cloudbus.cloudsim -> “Datacenter.java”


To simulate the task offloading and policy-related
services
· org.cloudbus.cloudsim -> “VmAllocationPolicy.java”,
“CloudletScheduler.java”, “DatacenterBroker.java”,
etc

Conclusion:

We have successfully created a datacenter along with one host. Also created two
virtual machines with static configuration to run two cloudlets on it.

Code-
/*
* Title: CloudSim Toolkit
* Description: CloudSim (Cloud Simulation) Toolkit for Modeling 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;
IU2041050070- NISH CE-A
MEHTA
import org.cloudbus.cloudsim.core.CloudSim;
import
org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
import org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
IU2041050070- NISH CE-A
MEHTA

import org.cloudbus.cloudsim.provisioners.RamProvisionerSimple;
/**
* 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 {
/** The cloudlet list. */
private static List<Cloudlet> cloudletList;
/** The vmlist. */
private static List<Vm> vmlist;
/**
* Creates main() to run this example
*/
public static void main(String[] args) {
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
// Initialize the CloudSim library
CloudSim.init(num_user, calendar, trace_flag);
// Second step: Create Datacenters
//Datacenters are the resource providers in CloudSim. We need at list one
of them to run a CloudSim simulation
@SuppressWarnings("unused")
Datacenter datacenter0 =createDatacenter("Datacenter_0");
//Third step: Create Broker
DatacenterBroker broker =
createBroker(); int brokerId =
broker.getId();
//Fourth step: Create one virtual
machine vmlist = new
ArrayList<Vm>();
//VM
description int
vmid = 0;
int mips = 250;
long size = 10000; //image size
(MB) int ram = 512; //vm memory
(MB) long bw = 1000;
IU2041050070- NISH CE-A
MEHTA
int pesNumber = 1; //number of cpus
IU2041050070- NISH CE-A
MEHTA

String vmm = "Xen"; //VMM name


//create two VMs
Vm vm1 = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size,
vmm, new CloudletSchedulerTimeShared());
vmid++;
Vm vm2 = new Vm(vmid, brokerId, mips, pesNumber, ram, bw, size,
vmm, new CloudletSchedulerTimeShared());
//add the VMs to the
vmList vmlist.add(vm1);
vmlist.add(vm2);
//submit vm list to the broker
broker.submitVmList(vmlist)
;
//Fifth step: Create two Cloudlets
cloudletList = new
ArrayList<Cloudlet>();
//Cloudlet
properties int id = 0;
pesNumber=1;
long length = 250000;
long fileSize = 300;
long outputSize = 300;
UtilizationModel utilizationModel = new UtilizationModelFull();
Cloudlet cloudlet1 = new Cloudlet(id, length, pesNumber, fileSize,
outputSize, utilizationModel, utilizationModel, utilizationModel);
cloudlet1.setUserId(brokerId)
; id++;
Cloudlet cloudlet2 = new Cloudlet(id, length, pesNumber, fileSize,
outputSize, utilizationModel, utilizationModel, utilizationModel);
cloudlet2.setUserId(brokerId);
//add the cloudlets to the
list
cloudletList.add(cloudlet1);
cloudletList.add(cloudlet2);
//submit cloudlet list to the broker
broker.submitCloudletList(cloudletList)
;
//bind the cloudlets to the vms. This way, the broker
// will submit the bound cloudlets only to the specific VM
broker.bindCloudletToVm(cloudlet1.getCloudletId(),vm1.getId())
;
broker.bindCloudletToVm(cloudlet2.getCloudletId(),vm2.getId())
;
// Sixth step: Starts the
simulation
CloudSim.startSimulation();
// Final step: Print results when simulation is over
IU2041050070- NISH CE-A
MEHTA
List<Cloudlet> newList = broker.getCloudletReceivedList();
CloudSim.stopSimulation();
printCloudletList(newList);
Log.printLine("CloudSimExample2 finished!");
IU2041050070- NISH CE-A
MEHTA

}
catch (Exception e) {
e.printStackTrace()
;
Log.printLine("The simulation has been terminated due to an unexpected error");
}
}
private static Datacenter createDatacenter(String name){
// Here are the steps needed to create a PowerDatacenter:
// 1. We need to create a list to store
// our machine
List<Host> hostList = new ArrayList<Host>();
// 2. A Machine contains one or more PEs or CPUs/Cores.
// In this example, it will have only one
core. List<Pe> peList = new
ArrayList<Pe>();
int mips = 1000;
// 3. Create PEs and add these into a list.
peList.add(new Pe(0, new PeProvisionerSimple(mips))); // need to store Pe id and
MIPS Rating
//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
// 5. Create a DatacenterCharacteristics object that stores the
// properties of a data center: architecture, OS, list of
// Machines, allocation policy: time- or space-shared, time zone
// and its price (G$/Pe time unit).
String arch = "x86"; // system architecture
String os = "Linux"; // operating system
String vmm = "Xen";
double time_zone = 10.0; // time zone this resource located
double cost = 3.0; // the cost of using processing in this resource
double costPerMem = 0.05; // the cost of using memory in this
resource double costPerStorage = 0.001; // the cost of using storage in this
IU2041050070- NISH CE-A
MEHTA
resource
IU2041050070- NISH CE-A
MEHTA

double costPerBw = 0.0; // the cost of using bw in this resource


LinkedList<Storage> storageList = new LinkedList<Storage>(); //we are
not
adding SAN devices by now
DatacenterCharacteristics characteristics = new DatacenterCharacteristics(
arch, os, vmm, hostList, time_zone, cost, costPerMem, costPerStorage,
costPerBw);
// 6. Finally, we need to create a PowerDatacenter object.
Datacenter datacenter = null;
try {
datacenter = new Datacenter(name, characteristics, new
VmAllocationPolicySimple(hostList), storageList, 0);
} catch (Exception e)
{ e.printStackTrace(
);
}
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(){
DatacenterBroker broker =
null; try {
broker = new DatacenterBroker("Broker");
} catch (Exception e) {
e.printStackTrace()
; 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;
String indent = "
"
;
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");
DecimalFormat dft = new
DecimalFormat("###.##"); for (int i = 0; i < size; i+
IU2041050070- NISH CE-A
MEHTA
+) {
IU2041050070- NISH CE-A
MEHTA

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 + cloudlet.getVmId() +
indent + indent + dft.format(cloudlet.getActualCPUTime()) + indent +
indent + dft.format(cloudlet.getExecStartTime())+
indent + indent + dft.format(cloudlet.getFinishTime()));
}
}

}
}

Output:

You might also like