Hi,

Today, I’m gonna explain how to setup CloudSim Environment in your Linux Machine using Eclipse IDE. CloudSim is actually a Library for Cloud Simulation written in Java Language, that can be added to our Source files. So, Essentially, Our Linux Computer should have Java Development Kit installed in it. It can be installed by typing the following command in your terminal. Skip the sections if Java an Eclipse Installations are already done.

Step 1. Installation & Verification of Java Compiler

sudo apt-get install openjdk-7-jdk

You can verify the installation of JDK, by typing the below command in your terminal.

javac -version               or            java -version

Step 2. Installation of Eclipse

On execution of the above commands, the version of the Java Compiler and/or the Java RunTime Environment will be displayed. If the JDK version is displayed, you are ready to go ahead and install Eclipse. Eclipse can be installed using the following command in your terminal.

sudo apt-get install eclipse

Note, that all the installations can also be done in a graphical way using Software Updater in Ubuntu.

Step 3. Creation of Project (for Complete Beginners)

Now that, we have installed Java Compiler and Eclipse, we can create a new project and add the Libraries to it. Create a new Project in Eclipse. This can be done using File->New->Project->Java Project; Give a name to your Project.  Now the screen will resemble the screen-shot shown below:

newPrj

Step 4: CloudSim Library Adding

Currently, there is no source file associated with it. Let’s firstly add the libraries to it. Right Click the Project and add folder named “libs” to it. Assuming you had already downloaded and extracted the CloudSim Library from the website http://cloudsim.googlecode.com/files/cloudsim-3.0.3.tar.gz

Go to the Extracted Folder and locate the jars in the “jars” folder. Copy the jar, cloudsim-3.03.jar and paste it inside the newly created folder in the project, as  shown below.

jarRight-Click the Jar Build Path -> Add to Build Path. Immediately the jars will be added in the Referenced Libraries.

Step 5: Running a Simulation

/////////////////////////////////////Class Begins Here////////////////////////////////////////

/*

* 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 Hi {

/** 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 Hi CloudSim…”);

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

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 simulation

CloudSim.startSimulation();

CloudSim.stopSimulation();

//Final step: Print results when simulation is over

List<Cloudlet> newList = broker.getCloudletReceivedList();

printCloudletList(newList);

Log.printLine(“Hi CloudSim 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 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()));

}

}

}

}

/////////////////////////////////////Class Ends Here////////////////////////////////////////

Put the above code into a file named Hi.java inside your src folder and press ctrl+f11, and you will get an output like below.

outputSUCCESS!!!

Go through the codes and understand the components and their behaviour. Feel Free to comment me back, if you face any problem.

– Happy Exploring!!!

🙂 Support me 

4 thoughts on “CloudSim Setup and Running Simulation using Eclipse in Linux

  1. Hi, I am Chhabi. I have done it in my ubuntu-14LTS but I am getting the this erreo message:
    Exception in thread “main” java.lang.Error: Unresolved compilation problems:
    Syntax error on tokens, delete these tokens
    Syntax error on token “Invalid Character”, @ expected
    Syntax error, type annotations are illegal here
    Syntax error on token(s), misplaced construct(s)
    CloudSim cannot be resolved to a variable
    Syntax error on tokens, delete these tokens
    The method createDatacenter(String) in the type Hi is not applicable for the arguments ()
    Syntax error on tokens, delete these tokens
    Syntax error on tokens, delete these tokens
    Syntax error on token “Invalid Character”, @ expected
    Syntax error, type annotations are illegal here
    Syntax error on token(s), misplaced construct(s)
    finished cannot be resolved to a variable
    Syntax error on tokens, delete these tokens
    Syntax error on token “Invalid Character”, @ expected
    Syntax error, type annotations are illegal here
    Syntax error on token(s), misplaced construct(s)
    happen cannot be resolved to a variable
    Syntax error on token “Invalid Character”, delete this token

    at Hi.main(Hi.java:39)
    Kindly give me the solution.


  2. https://polldaddy.com/js/rating/rating.jsException in thread “main” java.lang.Error: Unresolved compilation problems:
    Syntax error on tokens, delete these tokens
    Syntax error on tokens, delete these tokens
    The method createDatacenter(String) in the type Hi is not applicable for the arguments ()
    Syntax error on tokens, delete these tokens
    Syntax error on tokens, delete these tokens
    Syntax error on tokens, delete these tokens
    Syntax error on tokens, delete these tokens
    at Hi.main(Hi.java:51)

Leave a comment