0% found this document useful (0 votes)
479 views6 pages

Experiment 3.1 How To Create A Datacenter With One Host and Run One

This document describes an experiment to create a simple cloud computing simulation with one datacenter, one host, and one virtual machine. It includes code to: 1. Initialize CloudSim and create a datacenter with one host. 2. Create a broker and virtual machine. 3. Submit a cloudlet to be run on the virtual machine. 4. Start the simulation, print results, and clean up.

Uploaded by

Shubham
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
479 views6 pages

Experiment 3.1 How To Create A Datacenter With One Host and Run One

This document describes an experiment to create a simple cloud computing simulation with one datacenter, one host, and one virtual machine. It includes code to: 1. Initialize CloudSim and create a datacenter with one host. 2. Create a broker and virtual machine. 3. Submit a cloudlet to be run on the virtual machine. 4. Start the simulation, print results, and clean up.

Uploaded by

Shubham
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as RTF, PDF, TXT or read online on Scribd
You are on page 1/ 6

Experiment 3.

1
How to create a datacenter with one host and run one
package org.cloudbus.cloudsim.examples;
import
import
import
import
import

java.text.DecimalFormat;
java.util.ArrayList;
java.util.Calendar;
java.util.LinkedList;
java.util.List;

import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import
import

org.cloudbus.cloudsim.Cloudlet;
org.cloudbus.cloudsim.CloudletSchedulerTimeShared;
org.cloudbus.cloudsim.Datacenter;
org.cloudbus.cloudsim.DatacenterBroker;
org.cloudbus.cloudsim.DatacenterCharacteristics;
org.cloudbus.cloudsim.Host;
org.cloudbus.cloudsim.Log;
org.cloudbus.cloudsim.Pe;
org.cloudbus.cloudsim.Storage;
org.cloudbus.cloudsim.UtilizationModel;
org.cloudbus.cloudsim.UtilizationModelFull;
org.cloudbus.cloudsim.Vm;
org.cloudbus.cloudsim.VmAllocationPolicySimple;
org.cloudbus.cloudsim.VmSchedulerTimeShared;
org.cloudbus.cloudsim.core.CloudSim;
org.cloudbus.cloudsim.provisioners.BwProvisionerSimple;
org.cloudbus.cloudsim.provisioners.PeProvisionerSimple;
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
*/

public static void main(String[] args) {


Log.printLine("Starting CloudSimExample1...");
try {
should be called

// First step: Initialize the CloudSim package. It


// 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 are the
CloudSim. We need at
// list one of them to
Datacenter datacenter0
createDatacenter("Datacenter_0");

Datacenters
resource providers in
run a CloudSim simulation
=

// 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 simulation
CloudSim.startSimulation();
CloudSim.stopSimulation();
//Final step: Print results when simulation is over
List<Cloudlet> newList =
broker.getCloudletReceivedList();
printCloudletList(newList);
// Print the debt of each user to each datacenter
datacenter0.printDebts();

Log.printLine("CloudSimExample1 finished!");
} catch (Exception e) {
e.printStackTrace();
Log.printLine("Unwanted errors happen");
}

/**
* Creates the
*
* @param name
*
* @return the
*/
private static

datacenter.
the name
datacenter
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
stores the

// 5. Create a DatacenterCharacteristics object that


// properties of a data center: architecture, OS, list of
// Machines, allocation policy: time- or space-shared,

time zone

located

// and
String
String
String
double

its price (G$/Pe time unit).


arch = "x86"; // system architecture
os = "Linux"; // operating system
vmm = "Xen";
time_zone = 10.0; // time zone this resource

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

You might also like