Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@

import org.cloudbus.cloudsim.core.CloudSim;

import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* CloudletSchedulerSpaceShared implements a policy of scheduling performed by a virtual machine
* to run its {@link Cloudlet Cloudlets}.
Expand All @@ -25,6 +29,9 @@
* @author Anton Beloglazov
* @since CloudSim Toolkit 1.0
*/

private static final Logger logger = Logger.getLogger(CloudletSchedulerSpaceShared.class.getName());

public class CloudletSchedulerSpaceShared extends CloudletScheduler {
/** The number of PEs currently available for the VM using the scheduler,
* according to the mips share provided to it by
Expand Down Expand Up @@ -299,6 +306,11 @@ public double cloudletResume(int cloudletId) {
@Override
public double cloudletSubmit(Cloudlet cloudlet, double fileTransferTime) {
// it can go to the exec list
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.INFO);
logger.setLevel(Level.INFO);
logger.addHandler(consoleHandler);

if ((currentCpus - usedPes) >= cloudlet.getNumberOfPes()) {
ResCloudlet rcl = new ResCloudlet(cloudlet);
rcl.setCloudletStatus(Cloudlet.INEXEC);
Expand All @@ -307,11 +319,13 @@ public double cloudletSubmit(Cloudlet cloudlet, double fileTransferTime) {
}
getCloudletExecList().add(rcl);
usedPes += cloudlet.getNumberOfPes();
logger.info("Cloud #" + cl.getCloudletId() + " queued. Time for loading files: " + fileTransferTime);
} else {// no enough free PEs: go to the waiting queue
ResCloudlet rcl = new ResCloudlet(cloudlet);
rcl.setCloudletStatus(Cloudlet.QUEUED);
getCloudletWaitingList().add(rcl);
return 0.0;
logger.info("Cloud #" + cl.getCloudletId() + " no enough free PEs: go to the waiting queue ");
}

// calculate the expected time for cloudlet completion
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,10 @@
import org.cloudbus.cloudsim.lists.CloudletList;
import org.cloudbus.cloudsim.lists.VmList;

import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* DatacentreBroker represents a broker acting on behalf of a user. It hides VM management, as vm
* creation, submission of cloudlets to VMs and destruction of VMs.
Expand All @@ -30,6 +34,7 @@
* @since CloudSim Toolkit 1.0
*/
public class DatacenterBroker extends SimEntity {
private static final Logger logger = Logger.getLogger(DatacenterBroker.class.getName());

/** The list of VMs submitted to be managed by the broker. */
protected List<? extends Vm> vmList;
Expand Down
32 changes: 31 additions & 1 deletion modules/cloudsim/src/main/java/org/cloudbus/cloudsim/Log.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,37 @@ public static void print(Object message) {
print(String.valueOf(message));
}
}

public static void log(String message) {
logger.log(logLevel, message);
}

/**
* Logs CPU usage information.
*
* @param cpuUsage The CPU usage to be logged.
*/
public static void logCpuUsage(double cpuUsage) {
log("CPU Usage: " + cpuUsage);
}

/**
* Logs memory usage information.
*
* @param memoryUsage The memory usage to be logged.
*/
public static void logMemoryUsage(double memoryUsage) {
log("Memory Usage: " + memoryUsage);
}

/**
* Logs electricity usage information.
*
* @param electricityUsage The electricity usage to be logged.
*/
public static void logElectricityUsage(double electricityUsage) {
log("Electricity Usage: " + electricityUsage);
}

/**
* Prints a message and a new line.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@

import org.cloudbus.cloudsim.core.CloudSim;

import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
* VmAllocationPolicySimple is an VmAllocationPolicy that chooses, as the host for a VM, the host
* with less PEs in use. It is therefore a Worst Fit policy, allocating VMs into the
Expand All @@ -25,6 +29,8 @@
* @since CloudSim Toolkit 1.0
*/
public class VmAllocationPolicySimple extends VmAllocationPolicy {
private static final Logger logger = Logger.getLogger(YourSimulationClass.class.getName());


/** The map between each VM and its allocated host.
* The map key is a VM UID and the value is the allocated host for that VM. */
Expand Down Expand Up @@ -102,21 +108,27 @@ public boolean allocateHostForVm(Vm vm) {
}
tries++;
} while (!result && tries < getFreePes().size());

logger.info("VM #" + vm.getId() + " queied for work");
}

return result;
}

@Override
public void deallocateHostForVm(Vm vm) {
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.INFO);
logger.setLevel(Level.INFO);
logger.addHandler(consoleHandler);

Host host = getVmTable().remove(vm.getUid());
int idx = getHostList().indexOf(host);
int pes = getUsedPes().remove(vm.getUid());
if (host != null) {
host.vmDestroy(vm);
getFreePes().set(idx, getFreePes().get(idx) + pes);
}
logger.info("VM #" + vm.getId() + " destroyed");
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,12 @@
import java.util.HashMap;
import java.util.ArrayList;

public class ContainerCloudletSchedulerDynamicWorkload extends ContainerCloudletSchedulerTimeShared {
import java.util.logging.ConsoleHandler;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ContainerCloudletSchedulerDynamicWorkload extends ContainerCloudletSchedulerTimeShared {
private static final Logger logger = Logger.getLogger(YourSimulationClass.class.getName());
/** The mips. */
private double mips;

Expand Down Expand Up @@ -123,6 +127,11 @@ public double cloudletSubmit(Cloudlet cl) {
*/
@Override
public double cloudletSubmit(Cloudlet cl, double fileTransferTime) {
ConsoleHandler consoleHandler = new ConsoleHandler();
consoleHandler.setLevel(Level.INFO);
logger.setLevel(Level.INFO);
logger.addHandler(consoleHandler);

ResCloudlet rcl = new ResCloudlet(cl);
rcl.setCloudletStatus(Cloudlet.INEXEC);

Expand All @@ -132,6 +141,8 @@ public double cloudletSubmit(Cloudlet cl, double fileTransferTime) {

getCloudletExecList().add(rcl);
return getEstimatedFinishTime(rcl, getPreviousTime());

logger.info("Cloud #" + cl.getCloudletId() + " queued. Time loading files: " + fileTransferTime);
}

/**
Expand Down