From 5364c88858771d0921e76d264fdad0322fdffe82 Mon Sep 17 00:00:00 2001 From: Piramind Date: Mon, 22 Jan 2024 22:15:39 +0300 Subject: [PATCH 1/2] Add: Add few logs. --- .../main/java/org/cloudbus/cloudsim/Log.java | 32 ++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/Log.java b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/Log.java index ed7a2d6da..1fccf5e9e 100644 --- a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/Log.java +++ b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/Log.java @@ -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. * From 874b5df0a4df6264ad067f15c2025eac20350fd9 Mon Sep 17 00:00:00 2001 From: Piramind Date: Wed, 31 Jan 2024 18:46:16 +0300 Subject: [PATCH 2/2] Add: Add normal logs --- .../cloudsim/CloudletSchedulerSpaceShared.java | 14 ++++++++++++++ .../org/cloudbus/cloudsim/DatacenterBroker.java | 5 +++++ .../cloudsim/VmAllocationPolicySimple.java | 14 +++++++++++++- .../ContainerCloudletSchedulerDynamicWorkload.java | 13 ++++++++++++- 4 files changed, 44 insertions(+), 2 deletions(-) diff --git a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/CloudletSchedulerSpaceShared.java b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/CloudletSchedulerSpaceShared.java index 8a00bf2dd..11ab2984b 100644 --- a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/CloudletSchedulerSpaceShared.java +++ b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/CloudletSchedulerSpaceShared.java @@ -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}. @@ -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 @@ -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); @@ -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 diff --git a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/DatacenterBroker.java b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/DatacenterBroker.java index 9ada54dfa..4fa4395ad 100644 --- a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/DatacenterBroker.java +++ b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/DatacenterBroker.java @@ -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. @@ -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 vmList; diff --git a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/VmAllocationPolicySimple.java b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/VmAllocationPolicySimple.java index 5a2b00414..7bc07cb67 100644 --- a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/VmAllocationPolicySimple.java +++ b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/VmAllocationPolicySimple.java @@ -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 @@ -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. */ @@ -102,7 +108,7 @@ public boolean allocateHostForVm(Vm vm) { } tries++; } while (!result && tries < getFreePes().size()); - + logger.info("VM #" + vm.getId() + " queied for work"); } return result; @@ -110,6 +116,11 @@ public boolean allocateHostForVm(Vm vm) { @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()); @@ -117,6 +128,7 @@ public void deallocateHostForVm(Vm vm) { host.vmDestroy(vm); getFreePes().set(idx, getFreePes().get(idx) + pes); } + logger.info("VM #" + vm.getId() + " destroyed"); } @Override diff --git a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/container/schedulers/ContainerCloudletSchedulerDynamicWorkload.java b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/container/schedulers/ContainerCloudletSchedulerDynamicWorkload.java index a9c33e018..4677ad7e5 100644 --- a/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/container/schedulers/ContainerCloudletSchedulerDynamicWorkload.java +++ b/modules/cloudsim/src/main/java/org/cloudbus/cloudsim/container/schedulers/ContainerCloudletSchedulerDynamicWorkload.java @@ -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; @@ -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); @@ -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); } /**