varunv123 / cloudsim Goto Github PK
View Code? Open in Web Editor NEWAutomatically exported from code.google.com/p/cloudsim
Automatically exported from code.google.com/p/cloudsim
What steps will reproduce the problem?
1. In some pieces of code which call getVm(vmId, userId) assign false parameter
as getVm(userId, vmId) which must flip the parameter to getVm(vmId, userId).
The mistake in:
*Class Datacenter:
|processCloudletStatus(SimEvent ev) (1 statement)
|processCloudletStatus(SimEvent ev) (1 statement)
|processCloudletMove(int[] receivedData, int type) (2 statements)
|processCloudletResume(int cloudletId, int userId, int vmId, boolean ack) (1 statement)
|processCloudletPause(int cloudletId, int userId, int vmId, boolean ack) (1 statement)
|processCloudletCancel(int cloudletId, int userId, int vmId) (1)
What is the expected output? What do you see instead?
getVm(vmId, userId)
What version of the product are you using? On what operating system?
Cloudsim 3.0, Mac OSX, Netbeanse 7.0, Ant 1.8.
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 5 Jul 2012 at 3:51
I want to used clousim, when i ran the command 'ant' on my Ubuntu 11.10 system
it gives following error --------
/home/agent/cloudsim-3.0/build.xml:54: Unable to find a javac compiler;
com.sun.tools.javac.Main is not on the classpath.
Perhaps JAVA_HOME does not point to the JDK.
It is currently set to "/usr/lib/jvm/java-6-openjdk/jre"
what i do?
Original issue reported on code.google.com by [email protected]
on 4 Mar 2012 at 1:04
1. Create a datacenter with one host using the VmSechedulerTimeShared policy.
The host is a quad core machine, with 1000 MIPS each processing element.
2. A broker that tries to create 5 VMs in the datacenter, each one requesting
one core running at 800 MIPS.
I thought it would create four virtual machines, each on one processor, and the
fifth would fail as there is no processor with enough computing power (the
virtual machine needs 800 MIPS, and each processor of the host has free only
200 MIPS). However, the fifth virtual machine is created.
Original issue reported on code.google.com by rodrigo.calheiros
on 9 Oct 2012 at 11:17
What steps will reproduce the problem?
1. Create a datacenter with a single host. The host has 500 of storage
2. Create a VM with size 1000
3. Submit the VM to the data center
What is the expected output? What do you see instead?
VM should not be accepted because of lack of storage. Nevertheless, the VM is
accepted and runs in the host.
Original issue reported on code.google.com by rodrigo.calheiros
on 17 Mar 2011 at 1:37
Because of some rounding problems, some situations may arise that make the
return of Cloudlet.isCloudletFinished() and the Cloudlet.getCloudletStatus() to
be inconsistent.
Original issue reported on code.google.com by rodrigo.calheiros
on 10 Oct 2012 at 5:46
What steps will reproduce the problem?
1. Create a simple example with 1 host, 1 pe, 3 vms (each with 1 core, same
mips as PE)
2. Use VmSchedulerTimeShared to host, CloudletSchedulerTimeShared for VMs
3. Create 3 cloudlets with same length; assign each one to a different VM
What is the expected output? What do you see instead?
MIs are not equally split among the 3 VMs; 3rd VM gets more mips and its
Cloudlet completes first.
The expected behaviour is having the MIs from the single core equally divided
among VMs and their cloudlets should finish at the same time.
Please use labels and text to provide additional information.
It seems that this problem was introduced together with PeAllocationPolicy
(older code works properly).
I could isolate the problem to the VmSchedulerTimeShared and
VMSchedulerTimeSharedOverSubscription classes. The faulty method seems to be
allocatePesForVm(String, List<Double>), where the wrong value is being set in
the mipsMap. Another candidate for faulty method is updatePeProcessing(), but
it is less likely.
Original issue reported on code.google.com by rodrigo.calheiros
on 8 Sep 2011 at 6:00
What steps will reproduce the problem?
1. Try to run the examples using the method described in the examples.txt file
2.
3.
What is the expected output? What do you see instead?
The examples are not executed because the main methods are not located.
Original issue reported on code.google.com by rodrigo.calheiros
on 23 Aug 2011 at 12:45
What steps will reproduce the problem?
1. Try to execute the class "NetworkExample1"
What is the expected output? What do you see instead?
The topology file is not properly loaded. The message
"Problem in processing BRITE file. Network simulation is disabled."
is shown.
Original issue reported on code.google.com by rodrigo.calheiros
on 17 Jul 2011 at 11:55
The following modifications to the CloudSim class allows for a simulation to be
terminated at a given point in time (similar to the pause feature).
First, add class variable:
/** The termination time. */
private static long terminateAt = -1;
Second, add corresponding methods:
/**
* This method is called if one wants to terminate the simulation.
*
* @return true, if successful; false otherwise.
*/
public static boolean terminateSimulation() {
running = false;
printMessage("Simulation: Reached termination time.");
return true;
}
/**
* This method is called if one wants to terminate the simulation at a
* given time.
*
* @param time the time at which the simulation has to be terminated
* @return true, if successful
* otherwise.
*/
public static boolean terminateSimulation(long time) {
if (time <= clock) {
return false;
} else {
terminateAt = time;
}
return true;
}
Third, modify run() method as follows:
public static double run() {
if (!running) {
runStart();
}
while (true) {
if (runClockTick() || abruptTerminate) {
break;
}
// This IF statement is the only modification required
// to the run() method.
if (terminateAt != -1 && clock >= terminateAt) {
terminateSimulation();
clock = terminateAt;
break;
}
if (pauseAt != -1 && ((future.size() > 0 && clock <= pauseAt && pauseAt <= future.iterator().next().eventTime()) || future.size() == 0 && pauseAt <= clock)) {
pauseSimulation();
clock = pauseAt;
}
while (paused) {
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
double clock = clock();
finishSimulation();
runStop();
return clock;
}
Original issue reported on code.google.com by [email protected]
on 29 Aug 2011 at 8:30
Hello sir,
i haven't any issue but want to ask is it possible in Cloudsim to simulate
mobile cloud computing based algorithm or technique ???
If it possible in this reply me or any other simulator if u know that check
functionality of the mobile cloud ???
Thanks....
Chirag
Original issue reported on code.google.com by [email protected]
on 7 Nov 2012 at 4:28
What steps will reproduce the problem?
1. Create a scenario with a large number of hosts (> 50) and virtual machines
(>100).
2. Use HostDynamicWorkload class to simulate the hosts and make sure all hosts
have sufficient resources to allocate all VMs.
3. Run the simulation.
What is the expected output? What do you see instead?
The simulation should run normally. Instead, a null reference exception is
thrown on line 95 of the HostDynamicWorkload class. The method is
updateVmsProcessing. It tries to retrieve a list of processing elements for a
VM, but the list is returned as null. Then it tries to iterate on this list and
the exception is thrown.
What version of the product are you using? On what operating system?
CloudSim 3.0 on Linux.
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 3 Sep 2012 at 3:32
What version of the product are you using? On what operating system?
CloudSim3.0
Please provide any additional information below.
Below is a snippet of code from the Cloudsim class
public static boolean runClockTick() {
...
SimEntity ent;
boolean queue_empty;
int entities_size = entities.size();
for (int i = 0; i < entities_size; i++) {
ent = entities.get(i);
if (ent.getState() == SimEntity.RUNNABLE) {
ent.run();
}
}
...
}
Unless you are only accessing an ArrayList once, it is better to use an
Iterator to iterate through the array list. Here is my proposed change:
public static boolean runClockTick() {
...
Iterator<SimEntity> it = entities.iterator();
while(it.hasNext()) {
ent = it.next();
if (ent.getState() == SimEntity.RUNNABLE) {
ent.run();
}
}
...
}
Original issue reported on code.google.com by [email protected]
on 11 Nov 2012 at 4:22
In PowerVmAllocationPolicySingleThreshold.java on lines 220-223 we have:
if (!host.vmCreate(vm)) {
Log.printLine("Something is wrong, the VM can's be restored");
System.exit(0);
}
The "Something is wrong, the VM can's be restored" message should be throw as
an (Runtime) Exception so that we can control the simulation without being
necessary to have log enabled. This is especially useful in big/huge
simulations.
Original issue reported on code.google.com by [email protected]
on 10 Nov 2011 at 5:18
I want to run an experiment which requires the capabilities of both
Power-awareness and Network-awareness in Datacenter. I tried to extend
org.cloudbus.cloudsim.network.datacenter.NetworkDatacenter and
org.cloudbus.cloudsim.power.PowerDatacenter but I am not sure how this two
class interfere. It would be of great help if you can guide me on how to go
about in implementing this.
Thanks in advance.
What version of the product are you using? On what operating system?
Cloudsim 3.0 on Mac
Original issue reported on code.google.com by [email protected]
on 24 Jun 2012 at 6:30
What steps will reproduce the problem?
1.build different network topology like VL2, BCube, DCell and portland.
2.try to show the deference between VL2 and BCube using change function in
org.cloudbus.cloudsim.examples.network.datacenter.TestExample class as follow:
static void CreateNetworkVL2(int numhost, NetworkDatacenter dc) {
// Edge Switch
EdgeSwitch edgeswitch[] = new EdgeSwitch[1];
AggregateSwitch aggSwitchL1[] = new AggregateSwitch[1];
AggregateSwitch aggSwitchL2[] = new AggregateSwitch[1];
RootSwitch rootSwitch[] = new RootSwitch[1];
for (int i = 0; i < 1; i++) {
edgeswitch[i] = new EdgeSwitch("Edge" + i, NetworkConstants.EDGE_LEVEL, dc);
aggSwitchL1[i] = new AggregateSwitch("AggregateL1" + i, NetworkConstants.Agg_LEVEL, dc);
aggSwitchL2[i] = new AggregateSwitch("AggregateL2" + i, NetworkConstants.Agg_LEVEL, dc);
rootSwitch[i] = new RootSwitch("Root" + i, NetworkConstants.ROOT_LEVEL, dc);
rootSwitch[i].uplinkbandwidth = 1000;
aggSwitchL2[i].uplinkbandwidth = 500;
aggSwitchL1[i].uplinkbandwidth = 500;
edgeswitch[i].uplinkbandwidth = 100;
rootSwitch[i].downlinkbandwidth = 1000;
aggSwitchL2[i].downlinkbandwidth = 500;
aggSwitchL1[i].downlinkbandwidth = 500;
edgeswitch[i].downlinkbandwidth = 100;
//not active
rootSwitch[i].latency = 2;
aggSwitchL2[i].latency = 5;
aggSwitchL1[i].latency = 5;
edgeswitch[i].latency = 10;
rootSwitch[i].switching_delay = 2;
aggSwitchL2[i].switching_delay = 5;
aggSwitchL1[i].switching_delay = 5;
edgeswitch[i].switching_delay = 10;
edgeswitch[i].uplinkswitches.add(aggSwitchL1[i]);
aggSwitchL1[i].uplinkswitches.add(aggSwitchL2[i]);
aggSwitchL2[i].uplinkswitches.add(rootSwitch[i]);
rootSwitch[i].downlinkswitches.add(aggSwitchL2[i]);
aggSwitchL2[i].downlinkswitches.add(aggSwitchL1[i]);
aggSwitchL1[i].downlinkswitches.add(edgeswitch[i]);
// edgeswitch[i].uplinkswitches.add(null);
dc.Switchlist.put(edgeswitch[i].getId(), edgeswitch[i]);
dc.Switchlist.put(aggSwitchL2[i].getId(), aggSwitchL2[i]);
dc.Switchlist.put(aggSwitchL1[i].getId(), aggSwitchL1[i]);
dc.Switchlist.put(rootSwitch[i].getId(), rootSwitch[i]);
// aggswitch[(int)
// (i/Constants.AggSwitchPort)].downlinkswitches.add(edgeswitch[i]);
}
for (Host hs : dc.getHostList()) {
NetworkHost hs1 = (NetworkHost) hs;
hs1.bandwidth = NetworkConstants.BandWidthEdgeHost;
int switchnum = (int) (hs.getId() / NetworkConstants.EdgeSwitchPort);
edgeswitch[switchnum].hostlist.put(hs.getId(), hs1);
dc.HostToSwitchid.put(hs.getId(), edgeswitch[switchnum].getId());
hs1.sw = edgeswitch[switchnum];
List<NetworkHost> hslist = hs1.sw.fintimelistHost.get(0D);
if (hslist == null) {
hslist = new ArrayList<NetworkHost>();
hs1.sw.fintimelistHost.put(0D, hslist);
}
hslist.add(hs1);
}
}
static void CreateNetworkBCube(int numhost, NetworkDatacenter dc) {
// Edge Switch
EdgeSwitch edgeswitch[] = new EdgeSwitch[1];
AggregateSwitch aggSwitchL1[] = new AggregateSwitch[1];
RootSwitch rootSwitch[] = new RootSwitch[1];
for (int i = 0; i < 1; i++) {
edgeswitch[i] = new EdgeSwitch("Edge" + i, NetworkConstants.EDGE_LEVEL, dc);
aggSwitchL1[i] = new AggregateSwitch("AggregateL1" + i, NetworkConstants.Agg_LEVEL, dc);
rootSwitch[i] = new RootSwitch("Root" + i, NetworkConstants.ROOT_LEVEL, dc);
rootSwitch[i].uplinkbandwidth = 1000;
aggSwitchL1[i].uplinkbandwidth = 500;
edgeswitch[i].uplinkbandwidth = 100;
rootSwitch[i].downlinkbandwidth = 1000;
aggSwitchL1[i].downlinkbandwidth = 500;
edgeswitch[i].downlinkbandwidth = 100;
//not active
rootSwitch[i].latency = 2;
aggSwitchL1[i].latency = 5;
edgeswitch[i].latency = 10;
rootSwitch[i].switching_delay = 2;
aggSwitchL1[i].switching_delay = 5;
edgeswitch[i].switching_delay = 10;
edgeswitch[i].uplinkswitches.add(aggSwitchL1[i]);
aggSwitchL1[i].uplinkswitches.add(rootSwitch[i]);
rootSwitch[i].downlinkswitches.add(aggSwitchL1[i]);
aggSwitchL1[i].downlinkswitches.add(edgeswitch[i]);
// edgeswitch[i].uplinkswitches.add(null);
dc.Switchlist.put(edgeswitch[i].getId(), edgeswitch[i]);
dc.Switchlist.put(aggSwitchL1[i].getId(), aggSwitchL1[i]);
dc.Switchlist.put(rootSwitch[i].getId(), rootSwitch[i]);
// aggswitch[(int)
// (i/Constants.AggSwitchPort)].downlinkswitches.add(edgeswitch[i]);
}
for (Host hs : dc.getHostList()) {
NetworkHost hs1 = (NetworkHost) hs;
hs1.bandwidth = NetworkConstants.BandWidthEdgeHost;
int switchnum = (int) (hs.getId() / NetworkConstants.EdgeSwitchPort);
edgeswitch[switchnum].hostlist.put(hs.getId(), hs1);
dc.HostToSwitchid.put(hs.getId(), edgeswitch[switchnum].getId());
hs1.sw = edgeswitch[switchnum];
List<NetworkHost> hslist = hs1.sw.fintimelistHost.get(0D);
if (hslist == null) {
hslist = new ArrayList<NetworkHost>();
hs1.sw.fintimelistHost.put(0D, hslist);
}
hslist.add(hs1);
}
}
3.the output result is same for boot topology?! However, the functionality of
the AggregateSwitch and RootSwitch is not achived by simulator.
What is the expected output? What do you see instead?
The result must be different between network topologies.
What version of the product are you using? On what operating system?
CloudSim 3.0.2, MacOSx, Java JDK 1.6, ant 1.8.
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 16 Dec 2012 at 3:11
What steps will reproduce the problem?
1. Run CloudSim with some Cloudlets
2. Watch the results of isFinished() for a Cloudlet
What is the expected output? What do you see instead?
Cloudlet should be finished
What version of the product are you using? On what operating system?
Win 7 64bit -> Cloudsim 3.0
Please provide any additional information below.
In updateVmProcessing() of every scheduler a subtraction of doubles is used to calculate the timespan:
double timeSpam = currentTime - getPreviousTime();
in my example this gives => 39.9999999999 = 80.1 - 40.1
which isn't correct and should be 40.
To control the precision of floating point arithmetic, you should use
java.math.BigDecimal. See
http://stackoverflow.com/questions/179427/how-to-resolve-a-java-rounding-double-
issue for the complete solution.
Original issue reported on code.google.com by [email protected]
on 3 Oct 2012 at 8:41
What steps will reproduce the problem?
1. I follow your readme.txt, I successful download flanagan.jar and put it into
jars folder.
2. But when I run $ant, the output say classpath env is not set
3. After googled a bit, I modify your default build.xml to add classpath env,
and successfull build cloudsim-new.jar.
I hope my mod-build.xml will help someone who stuck like me.
Original issue reported on code.google.com by [email protected]
on 25 Jun 2012 at 11:50
Attachments:
What steps will reproduce the problem?
1. In Cloudlet class i see many state the cloudlet can be (CREATED, READY,
...etc), but the question is how i can manage the status of cloudlet and
reflect this status to simulation.
2. I need to pause a cloudlets until other cloudlets is finish, i try to use
setCloudletStatus function to Pause cloudlet but the simulation return result
without pauses cloudlets. how can i do this?
What is the expected output? What do you see instead?
I expect the cloudlet status is involved with the simulation life cycle and the
programer can change the state and reflect it to simulation result.
What version of the product are you using? On what operating system?
CloudSim 3.0, Netbeans 7.0, Mac OSX.
Please provide any additional information below.
Original issue reported on code.google.com by [email protected]
on 3 Jul 2012 at 4:11
I was trying to make an SimEntity and I found that the
"pause" function does not work. Is there any way to hold an entity for
the time delay from the current time ?
I tried all most every possible function but didnt get it working.
Original issue reported on code.google.com by rodrigo.calheiros
on 15 Jan 2012 at 10:23
1. First build up a VM and a Cloudlet, the running time of a single
Cloudlet on a VM is one second.
2. Create 10 Cloudlet into the VM, the running time is 10 seconds.
3. Create 100 Cloudlet into the VM, the running time is 99.5 seconds.
4. Create 1000 Cloudlet into the VM, the running time is 915 seconds.
The above experiments are all conducted using the TimeShared mode.
My question is: When there was one VM, my understanding towards
TimeShared is to distribute time period, to distribute the running
time to a single person. Take 1000 missions for example, is to divide
the time unit into 1000 periods, let each Cloudlet take 1 period VM
resource, if so, 1000 single missions running separately each require
1 second, their total running time shouldn't be less than 1000
seconds, let alone the consumption of communication between task
Original issue reported on code.google.com by rodrigo.calheiros
on 31 Oct 2011 at 11:31
I use CloudSim 3.0 to simulate two public and private cloud and relation of
them , when I study Cloudsim Examples I can understand related of Host- Data
Centers and VMs - Brockers but can't find the connection between VMs and
related Host.How/where they connect?
Original issue reported on code.google.com by [email protected]
on 18 May 2012 at 6:40
What steps will reproduce the problem?
Through reading the source code of CloudSim,an issue confused me for a long
time,in the HarddriveStorage class,in getFile method
obj.setTransactionTime(seekTime + transferTime) why not
obj.setTransactionTime(seekTime + transferTime+latency)
best regards.
Please provide any additional information below.
public File getFile(String fileName) {
// check first whether file name is valid or not
File obj = null;
if (fileName == null || fileName.length() == 0) {
Log.printLine(name + ".getFile(): Warning - invalid " + "file name.");
return obj;
}
Iterator<File> it = fileList.iterator();
int size = 0;
int index = 0;
boolean found = false;
File tempFile = null;
// find the file in the disk
while (it.hasNext()) {
tempFile = it.next();
size += tempFile.getSize();
if (tempFile.getName().equals(fileName)) {
found = true;
obj = tempFile;
break;
}
index++;
}
// if the file is found, then determine the time taken to get it
if (found) {
obj = fileList.get(index);
double seekTime = getSeekTime(size);
double transferTime = getTransferTime(obj.getSize());
// total time for this operation
obj.setTransactionTime(seekTime + transferTime);
}
return obj;
}
Original issue reported on code.google.com by [email protected]
on 19 Feb 2012 at 3:58
What steps will reproduce the problem?
1. Create a subclass of DatacenterBroker
2. Implement a method (new or overriden) that uses the
DatacenterBroker::cloudletsSubmitted private field.
3.
What is the expected output? What do you see instead?
The new class won't inherit the private field
DatacenterBroker::cloudletsSubmitted. This prevents it from compiling
successfully.
What version of the product are you using? On what operating system?
CloudSim 2.1.1
OS: Linux and Windows
Please provide any additional information below.
Changing the field's access modifier to protected or public will solve this
issue. An alternate solution is to create a public getter/setter, since this is
the only field of this class that is not encapsulated.
Original issue reported on code.google.com by [email protected]
on 2 Sep 2011 at 12:46
What steps will reproduce the problem?
1. Open the SingleThreshold.java example.
2. Change the hosts number to a big number, like 1000. Change the VMs number to
2000 and the cloudlets number to 2000.
3. Run the simulation several times (10 should be ok).
What is the expected output? What do you see instead?
Expected: Simulation completed successfully.
Instead: "Allocation of VM #??? to Host #??? failed by RAM". It should not fail
because we have more than enough hosts and RAM for this simulation.
What version of the product are you using? On what operating system?
2.1.1. This problems occurs on both Windows and Linux; using JDK 6.
Please provide any additional information below.
I think that there's a problem with the lines between 148 and 171 from
PowerDatacenter.java file ( if (!isDisableMigrations()) { ... } ).
More specifically, *maybe* the problem resides on the fact (that I suppose)
that "send(getId(), vm.getRam() / ((double) vm.getBw() / 8000) + 0,
CloudSimTags.VM_MIGRATE, migrate)" method does not instantly reserves RAM and
BW on destination host, but at the end of migration instead.
Original issue reported on code.google.com by [email protected]
on 10 Nov 2011 at 2:38
What steps will reproduce the problem?
To run fine:
1. Open SingleThreshold.java example.
2. Run.
3. Check the output for each cloudlet.
To run with errors:
1. Open SingleThreshold.java example.
2. Set datacenter.setDisableMigrations() to true
[datacenter.setDisableMigrations(true)].
3. Run.
4. Check the output for each cloudlet.
In the second case there is no output for cloudlets.
What is the expected output? What do you see instead?
Expected:
Something like:
"
========== OUTPUT ==========
Cloudlet ID STATUS Resource ID VM ID Time Start Time Finish
Time
15 SUCCESS 2 15 335 0 335
3 SUCCESS 2 3 340 0 340
11 SUCCESS 2 11 350 0 350
19 SUCCESS 2 19 360 0 360
7 SUCCESS 2 7 365 0 365
10 SUCCESS 2 10 465 0 465
14 SUCCESS 2 14 470 0 470
18 SUCCESS 2 18 480 0 480
6 SUCCESS 2 6 485 0 485
17 SUCCESS 2 17 620 0 620
1 SUCCESS 2 1 630 0 630
13 SUCCESS 2 13 645 0 645
9 SUCCESS 2 9 680 0 680
0 SUCCESS 2 0 1205 0 1205
8 SUCCESS 2 8 1280 0 1280
4 SUCCESS 2 4 1295 0 1295
12 SUCCESS 2 12 1345 0 1345
Total simulation time: 1644.60 sec
"
Saw instead:
"
========== OUTPUT ==========
Cloudlet ID STATUS Resource ID VM ID Time Start Time Finish
Time
Total simulation time: 1255.00 sec
"
What version of the product are you using? On what operating system?
CloudSim 2.1.1.
Please provide any additional information below.
Something bad happens when the migrations are disabled (ie: this also occurs at
DVFS.java example).
Original issue reported on code.google.com by [email protected]
on 31 Oct 2011 at 4:27
--------------------------------
This is an enhancement request
--------------------------------------
Can we include a sample in cloudsim that illustrates data file transfer from
sender to receiver. I myself had this problem and resolved it by extending File
and HardDriveStorage class and then calling addFile and getFile methods. It
would be good if it can be included in samples.
Original issue reported on code.google.com by [email protected]
on 24 Apr 2013 at 12:29
What steps will reproduce the problem?
1. Use r100 trunk CloudSim
2. Run DVFS.java in power examples
3. Use VmSchedulerSpaceShared instead of VmSchedulerTimeShared (default) and
recompile, run again
What is the expected output? What do you see instead?
New resource usage for the time frame starting at 5.00:
5.00: [Host #0] Total allocated MIPS for VM #0 (Host #0) is 222.70, was requeste
d 222.70 out of total 250.00 (89.08%)
java.lang.NullPointerException
at org.cloudbus.cloudsim.HostDynamicWorkload.updateVmsProcessing(Unknown
Source)
at org.cloudbus.cloudsim.power.PowerDatacenter.updateCloudetProcessingWi
thoutSchedulingFutureEventsForce(Unknown Source)
at org.cloudbus.cloudsim.power.PowerDatacenter.updateCloudletProcessing(
Unknown Source)
at org.cloudbus.cloudsim.Datacenter.processEvent(Unknown Source)
at org.cloudbus.cloudsim.core.SimEntity.run(Unknown Source)
at org.cloudbus.cloudsim.core.CloudSim.runClockTick(Unknown Source)
at org.cloudbus.cloudsim.core.CloudSim.run(Unknown Source)
at org.cloudbus.cloudsim.core.CloudSim.startSimulation(Unknown Source)
at DVFS.main(DVFS.java:84)
Unwanted errors happen
DVFS example finished!
What version of the product are you using? On what operating system?
r100 trunk CloudSim
Windows XP SP3
JDK 1.6.0_26
Please provide any additional information below.
I traced the code. In HostDynamicWorkload.updateVmsProcessing() method:
List<Pe> pes = getVmScheduler().getPesAllocatedForVM(vm);
may return null in VmSchedulerSpaceShared.
(VmSchedulerSpaceShared.getPesAllocatedForVM)
Thus when run this line:
for (Pe pe : pes) {
It will throw a NullPointerException.
I don't know why VmSchedulerSpaceShared.getPesAllocatedForVM returns null, but
we can prevent it by adding an assertion before for().
if (pes != null) {
for () ...
}
Original issue reported on code.google.com by [email protected]
on 26 Nov 2011 at 6:07
Attachments:
The change log for 3.0 says
NEW VM SCHEDULER. VmSchedulerTimeSharedOverSubscription models a scheduler that
allows unbounded number of
VMS to be deployed in a single "VM", regardless its requirements in terms of
number of MIPS. Notice that this
was the behaviour of VmSchedulerTimeShared in CloudSim 1.0 Beta, but this
behaviour had changed in
CloudSim 2.0 to accommodate requests with specific amount of MIPS.
--
How can VMS be deployed in a Single VM. I doubt that, instead of VM it should
be HOST!
please correct me if i'm wrong.
Original issue reported on code.google.com by [email protected]
on 10 Dec 2012 at 2:21
delete a comment
Original issue reported on code.google.com by [email protected]
on 26 Apr 2012 at 5:57
Attachments:
cloudletsSubmitted in DatacenterBroker should be protected, not private. Or
there must have protected/public get/set methods to change this.
The reason for this is that when creating classes that extends DatacenterBroker
and overrides methods like "processCloudletReturn()" and
"processCloudletReturn()" we must have control of this variable.
Original issue reported on code.google.com by [email protected]
on 10 Nov 2011 at 2:42
i HAVE DOWNLOADED cloudAnalyst.How to add nodes,how to set parameter in
CloudAnalyst's GUI.
Original issue reported on code.google.com by [email protected]
on 16 Nov 2011 at 5:26
What steps will reproduce the problem?
1.I have created a new project and import the cloudsim3.0 jar file.
and create a java class under this project then copy and paste the
first example is example list delivered with cloudsim package.
2.everything seems fine in my eclipse (no error at all).
when I try to run it gives error: Cloud not fine main: the program will exit.
What is the expected output? What do you see instead?
the program is expected to run correctly.
What version of the product are you using? On what operating system?
Windows 7
Please provide any additional information below.
java is in my class path and typing "java" on my command prompt works by
responding a list of java commands. (so that should not be a problem)
I just run one simple example, so that I can understand and use.
help please.
Original issue reported on code.google.com by [email protected]
on 25 Apr 2012 at 10:20
What steps will reproduce the problem?
1. In CloudSimExample8, add:
GlobalBroker globalBroker2 = new GlobalBroker("GlobalBroker2"); // in the next
line of GlobalBroker globalBroker = new GlobalBroker("GlobalBroker");
2.Add:
newList.addAll(globalBroker2.getBroker().getCloudletReceivedList()); // after
newList.addAll(globalBroker.getBroker().getCloudletReceivedList());
3. Run the class.
What is the expected output? What do you see instead?
The error that you will get is:
java.util.ConcurrentModificationException
at java.util.TreeMap$PrivateEntryIterator.nextEntry(TreeMap.java:1100)
at java.util.TreeMap$KeyIterator.next(TreeMap.java:1154)
at org.cloudbus.cloudsim.core.CloudSim.runClockTick(CloudSim.java:476)
at org.cloudbus.cloudsim.core.CloudSim.run(CloudSim.java:815)
at org.cloudbus.cloudsim.core.CloudSim.startSimulation(CloudSim.java:154)
at org.cloudbus.cloudsim.examples.CloudSimExample8.main(CloudSimExample8.java:139)
Please provide any additional information below.
The error is produced by two Globalbrokers scheduled at the same time, as you
can see in the method:
@Override
public void startEntity() {
Log.printLine("GlobalBroker is starting...");
schedule(getId(), 200, CREATE_BROKER);
}
Original issue reported on code.google.com by rodrigo.calheiros
on 19 Jul 2011 at 12:26
What steps will reproduce the problem?
1.Constant.java
2.
3.
What is the expected output? What do you see instead?
/*
* VM instance types:
* High-Memory Extra Large Instance: 3.25 EC2 Compute Units, 8.55 GB // too much MIPS
* High-CPU Medium Instance: 2.5 EC2 Compute Units, 0.85 GB
* Extra Large Instance: 2 EC2 Compute Units, 3.75 GB
* Small Instance: 1 EC2 Compute Unit, 1.7 GB
* Micro Instance: 0.5 EC2 Compute Unit, 0.633 GB
* We decrease the memory size two times to enable oversubscription
*
*/
public final static int VM_TYPES = 4;
public final static int[] VM_MIPS = { 2500, 2000, 1000, 500 };
public final static int[] VM_PES = { 1, 1, 1, 1 };
public final static int[] VM_RAM = { 870, 1740, 1740, 613 };
public final static int VM_BW = 100000; // 100 Mbit/s
public final static int VM_SIZE = 2500; // 2.5 GB
What version of the product are you using? On what operating system?
cloudsim 3.0
Please provide any additional information below.
mismatch in creation VM parameter.
Original issue reported on code.google.com by [email protected]
on 20 Jan 2013 at 9:02
What steps will reproduce the problem?
1.I want to create many broker like user send request in different time.
But it has performance issue with memory used. (GC overhead)
I create 100000 broker and let them start at diffent time , changing some
function making cloudsim work effciency but still slower and too many memory
used.
2.Does cloudsim support waiting queue?
Now I change the cloudsim code and let broker could start from different start
time.
If I want to add this function in cloudsim , where do I need to focus?
Like using event to complete this function?
What is the expected output? What do you see instead?
I hope cloudsim could work like a real cloud system.
And try my best to update those function.
Thanks a lot. :)
Original issue reported on code.google.com by [email protected]
on 29 May 2012 at 6:47
The default behaviour of Cloudlets make it log information about movements it
does between resources. It may cause unnecessary consumption of heap space,
especially because most simulations do not require such movement information,
as it can be tracked by the broker.
Therefore, the default behaviour of Cloudlets should be not logging movement,
and if users want to log, they can use the alternative constructor with the
extra boolean record parameter (set to true for enabling the record).
Original issue reported on code.google.com by rodrigo.calheiros
on 22 Aug 2012 at 12:22
The problem appears when more than one VM is allocated to the host in one time
frame. I guess a simple solution is to recalculate the actual MIPS in
findHostForVm() as you did. However, this will result in some run-time
overhead.
Need to replace the calls to getUtilizationOfCpuMips() and
getMaxUtilizationAfterAllocation() with calls to methods that recalculate the
actual MIPS.
Original issue reported on code.google.com by [email protected]
on 1 Oct 2012 at 1:13
Suggested by Seyed Saeid:
Fortunately I found the problem. In class UtilizationModelPlanetLabInMemory,
size of data was specified 289 , this value was specified with this assumption
that SCHEDULING_INTERVAL in "constant.java" is always 300 . As I had changed
this variable to 100 thus it was leaded to stack overflow for data
--------------------------------------
public class UtilizationModelPlanetLabInMemory implements UtilizationModel {
/** The scheduling interval. */
private double schedulingInterval;
/** The data (5 min * 288 = 24 hours). */
private final double[] data = new double[289];
----------------------------------------------
Original issue reported on code.google.com by [email protected]
on 9 Dec 2012 at 11:31
What steps will reproduce the problem?
1.CloudSim.clock() function in cloudlet.java produce same finish time of every
cloudlets.
2.If change the value of CloudSim.clock() by any value then it represents the
time taken of execution of each cloudlet.
3.
What is the expected output? What do you see instead?
Since FCFS then start time is different as well as finish time is also
different.
But the Finish time of every cloudlets are same, which is program time.
What version of the product are you using? On what operating system?
Version Cloudsim3.0,operating system ubuntu 11.04.
Please provide any additional information below.
Try to implement FCFS where Start time and Finish time of every cloudlets are
different.
Original issue reported on code.google.com by [email protected]
on 19 Feb 2013 at 10:24
What steps will reproduce the problem?
Through reading the source code of CloudSim,an issue confused me for a long
time,in the VmAllocationPolicySimple class,it stored information about the vm's
allocation by the key->value which key=vm.getuid(),it makes me so confused
because a broker may need several VM on the same Datacencer,it goes wrong and
make the simulation result unprediction.
best regards.
Original issue reported on code.google.com by [email protected]
on 11 Jul 2011 at 4:02
[deleted issue]
Playing with migrations, I've found a bug in the code of the class
VmAllocationPolicySimple. The method in question is
allocateHostForVm(Vm vm, Host host) -- lines 232 to 248 in the
attached version of the file.
The new code follows. As you can see, there's a comment explaining why
I added four lines of code between the invocation to getVmTable() and
the call to Log.formatLine().
The bug would cause an abrupt termination of the simulation when a VM
created with this method would try to be destroyed. The execution
would fail in the method deallocateHostForVm(Vm vm) -- line 125 in the
attached version of the file.
********************************************************************************
public boolean allocateHostForVm(Vm vm, Host host) {
if (host.vmCreate(vm)) { //if vm has been succesfully created in the host
getVmTable().put(vm.getUid(), host);
// I believe the following four lines were missing in the original
// coding of this method. Notice that when a VM is allocated in
// the method allocateHostForVm(vm), the two lines that modify the
// number of used and free PEs are indeed present.
int requiredPes = vm.getPesNumber();
int idx = getHostList().indexOf(host);
getUsedPes().put(vm.getUid(), requiredPes);
getFreePes().set(idx, getFreePes().get(idx) - requiredPes);
Log.formatLine("%.2f: VM #" + vm.getId() + " has been allocated to
the host #" + host.getId(), CloudSim.clock());
return true;
}
return false;
}
********************************************************************************
Original issue reported on code.google.com by rodrigo.calheiros
on 18 Jul 2011 at 12:36
The following methods in "Datacenter.class"
processCloudletMove
processCloudletResume
processCloudletPause
processCloudletCancel
processCloudletStatus
use getVm(userId,vmId) method from "Host.class" :
1- processCloudletMove:
Cloudlet cl = getVmAllocationPolicy().getHost(vmId, userId).getVm(userId,
vmId).getCloudletScheduler().cloudletCancel(cloudletId);
2- processCloudletResume:
double eventTime = getVmAllocationPolicy().getHost(vmId,userId).getVm(userId,
vmId).getCloudletScheduler().cloudletResume(cloudletId);
3- processCloudletPause:
boolean status = getVmAllocationPolicy().getHost(vmId,userId).getVm(userId,
vmId).getCloudletScheduler().cloudletPause(cloudletId);
4-processCloudletCancel:
Cloudlet cl = getVmAllocationPolicy().getHost(vmId,userId).getVm(userId,
vmId).getCloudletScheduler().cloudletCancel(cloudletId);
5- processCloudletStatus:
status = getVmAllocationPolicy().getHost(vmId, userId).getVm(userId,
vmId).getCloudletScheduler().getCloudletStatus(cloudletId);
Therefore, the order of the parameter passing in calling getVm does not comply
with its definition. Consequently, calling getVm in these methods leads NULL to
be returned in general.
Version : 2.1 - 3.0
solution:
change these codes to
1- processCloudletMove:
Cloudlet cl = getVmAllocationPolicy().getHost(vmId, userId).getVm(vmId,
userId).getCloudletScheduler().cloudletCancel(cloudletId);
2- processCloudletResume:
double eventTime =
getVmAllocationPolicy().getHost(vmId,userId).getVm(vmId,userId).getCloudletSched
uler().cloudletResume(cloudletId);
3- processCloudletPause:
boolean status =
getVmAllocationPolicy().getHost(vmId,userId).getVm(vmId,userId).getCloudletSched
uler().cloudletPause(cloudletId);
4-processCloudletCancel:
Cloudlet cl = getVmAllocationPolicy().getHost(vmId,userId).getVm(userId,
vmId).getCloudletScheduler().cloudletCancel(cloudletId);
5- processCloudletStatus:
status = getVmAllocationPolicy().getHost(vmId,
userId).getVm(vmId,userId).getCloudletScheduler().getCloudletStatus(cloudletId);
Reporter: seyedmehdi Hosseinimotlagh
email : [email protected]
Original issue reported on code.google.com by [email protected]
on 9 Dec 2012 at 9:37
public final class CloudSimTags {
...
private CloudSimTags() {
throw new UnsupportedOperationException("CloudSim Tags cannot be instantiated");
}
}
should be
public abstract class CloudSimTags {
// No constructor
}
It is a constant storage class, there is no point making it final.
Original issue reported on code.google.com by [email protected]
on 17 Nov 2011 at 2:50
What steps will reproduce the problem?
Through reading the source code of CloudSim,an issue confused me for a long
time,in the SanStorage class, method in addFile file.getSize() * bandwidth
why not file.getSize() /bandwidth
best regards.
Please provide any additional information below.
public double addFile(File file) {
double time = super.addFile(file);
time += networkLatency;
time += file.getSize() * bandwidth;
return time;
}
Original issue reported on code.google.com by [email protected]
on 19 Feb 2012 at 3:03
What steps will reproduce the problem?
1. In "org.cloudbus.cloudsim.util" package there is "WorkloadFileReader
implements WorkloadModel" that must read the predefine workload file and
simulate it in the CloudSim, but i am not see any examples show how can i use
it.
2. And in Addition, can i build dynamic workload and integrate it with
CloudSim, if possible how?
What is the expected output? What do you see instead?
Example descrip how can i use workload in CloudSim.
What version of the product are you using? On what operating system?
CloudSim 3.0 in Mac OS under Netbeans IDE.
Please provide any additional information below.
All example is run well, and thank you for your helpful.
Original issue reported on code.google.com by [email protected]
on 28 Apr 2012 at 4:39
In Datacenter.processVmMigrate(SimEvent, boolean), debt is being increased
during migration. Therefdore, for two VMs running during the same time, one
that migrated will incur a bigger debt.
I suggest removing all the debt calculation in the next version of CloudSim,
and let it be user-defined.
Original issue reported on code.google.com by rodrigo.calheiros
on 9 Apr 2013 at 11:47
What steps will reproduce the problem?
1. Create 1 DC, 1 Host (VMSchedulerSpaceShared)
2. Create a new VM with CloudletSchedulerspaceShared policy during the
simulation
3. Submit a Cloudlet to it
What is the expected output? What do you see instead?
Cloudlet should run, but it is queued instead.
Please use labels and text to provide additional information.
It happens because a defect in Vm.getCurrentRequestedMips(), which has a
strange tests for "recent created" VMs. VMs created during simulation are not
considered recently created and don't receive MIPS.
Are these tests really necessary? Why they are there?
Original issue reported on code.google.com by rodrigo.calheiros
on 29 Sep 2011 at 5:23
from Lien Deboosere:
I would like to add a priority field to the SimEvent class to order the
SimEvents according to their priority.
My idea was to extend the SimEvent class and simply add this field "priority".
So far so good, but when I want to create an extension of the CloudSim class to
implement the priority mechanism, I cannot access the "future" queue object
which is needed for example to override the function "addEntity".
My problem would be solved if the "future" queue object in the CloudSim class
would be declared protected instead of private.
However, for compatibility with future releases of cloudsim, does any one know
another way to implement this extension of SimEvent?
Or would it be possible to declare this object protected in future releases of
cloudsim, or is there a reason not to do this?
Original issue reported on code.google.com by rodrigo.calheiros
on 28 Jun 2011 at 1:31
What steps will reproduce the problem?
1. Create a subclass of DatacenterBroker
2. Implement a method (new or overriden) that uses the
DatacenterBroker::finishExecution() method.
3.
What is the expected output? What do you see instead?
The new class won't be able to call the DatacenterBroker::finishExecution()
method due to its private access level. This makes the subclass unable to
compile successfully.
What version of the product are you using? On what operating system?
CloudSim 2.1.1
OS: Linux and Windows
Please provide any additional information below.
Changing the method's access modifier to protected would solve this issue.
Original issue reported on code.google.com by [email protected]
on 2 Sep 2011 at 1:06
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.