Giter VIP home page Giter VIP logo

cloudsim's People

Contributors

beloglazov avatar dependabot[bot] avatar deremo avatar hetianzhang avatar jie-jay avatar manoelcampos avatar nikolayg avatar sarehfotuhi avatar skardani avatar williamvoor avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cloudsim's Issues

Default behaviour of Cloudlet may lead to unnecessary usage of heap space

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

cloudletsSubmitted in DatacenterBroker should be protected, not private

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

  • Merged into: #9

Network examples do not load topology file

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

Behaviour of VmSechedulerTimeShared

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

Output error when setDisableMigrations is set to true

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

Access modifier of DatacenterBroker::cloudletsSubmitted

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

ConcurrentModificationException in CloudSimExample8

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

VM is created without check on host's storage capacity

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

Data File transfer

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

Optimization of Cloudsim.runClockTick()

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

Some issue about CloudSim

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

Pause or Hold Does not work

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

Network Topology

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

cloud not find main methos

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

Bug: Call getVm(vmId, userId) Function

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

VM and Host connection

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

precision of floating point arithmetic

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

Rounding problem in VMSchedulerTimeShared

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

Declaration problem

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

Finish time of Cloudlets in FCFS

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

Access modifier of DatacenterBroker::finishExecution()

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

Wrong sharing of MIs among VMs by VmSchedulerTimeShared

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

How i can use the Workload in CloudSim?

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

Problem using cloudsim

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

CloudSimTags class should be abstract, not final

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

Vm Host::getVm(int vmId, int userId) problems in DataCenter.class

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

UtilizationModelPlanetLabInMemory: use a global constant to define the size of the data field

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

SanStorage confused

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

HostDynamicWorkload.updateVmsProcessing() throws NullPointerException

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:

"Something is wrong, the VM can's be restored" should be an Exception

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

Recalculating MIPS in findHostForVm()

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

Null reference exception on HostDynamicWorkload::updateVmsProcessing

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

Problem in manifests of Maven-generated jar files

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

Data center that is both Power and Network-aware

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

Turn the 'future' queue of CloudSim class protected

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

bug for ant classpath

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:

Wrongle calculation of debt during migration

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

Change log misunderstanding

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

Dynamically created space-shared VMs fail to process cloudlets

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

Cloudlet Status

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

Abrupt termination of the simulation caused by VmAllocationPolicySimple

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

HarddriveStorage confused

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

Simulation failed by the RAM where it should not fail

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

maybe it's a problem

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

Addition of simulation termination feature to CloudSim core

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

Mobile Cloud Computing based simulatation

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

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.