Changeset 1415 for DCWoRMS/branches
- Timestamp:
- 07/15/14 16:26:31 (11 years ago)
- Location:
- DCWoRMS/branches/coolemall/src
- Files:
-
- 5 added
- 4 deleted
- 67 edited
- 6 moved
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/branches/coolemall/src/dcworms/schedframe/scheduling/Executable.java
r1396 r1415 30 30 import schedframe.scheduling.tasks.AbstractProcessesGroup; 31 31 import schedframe.scheduling.tasks.Task; 32 import schedframe.scheduling.tasks.phases. ResourceConsumption;32 import schedframe.scheduling.tasks.phases.ExecutionPhase; 33 33 import schedframe.scheduling.tasks.phases.ExecutionProfile; 34 34 import schedframe.scheduling.tasks.requirements.ResourceParameterName; … … 48 48 49 49 protected String reservationId; 50 protected double completionPercentage ;50 protected double completionPercentageTotal; 51 51 52 52 protected int estimatedDuration; … … 64 64 protected ExecutionProfile execProfile; 65 65 66 protected LinkedList<ExecutionHistoryItem> execHistory; ;66 protected LinkedList<ExecutionHistoryItem> execHistory; 67 67 protected LinkedList<ResourceItem> allocatedResources; 68 68 … … 187 187 188 188 if (newStatus == DCWormsTags.SUCCESS || newStatus == DCWormsTags.CANCELED) { 189 finishTime = DateTimeUtilsExt.currentTimeMillis() / 1000;189 finishTime = currentTime; 190 190 } 191 191 … … 196 196 if ((prevStatus == DCWormsTags.INEXEC) && (status == DCWormsTags.CANCELED || status == DCWormsTags.PAUSED || 197 197 status == DCWormsTags.SUCCESS)){ 198 199 198 totalCompletionTime += (currentTime - execStartTime); 199 execStartTime = execStartTimeFirst; 200 200 } 201 201 … … 218 218 if(status == DCWormsTags.NEW_EXEC_PHASE && prevStatus == DCWormsTags.INEXEC){ 219 219 status = DCWormsTags.INEXEC; 220 completionPercentage = 0;220 execProfile.setCompletionPercentage(0.0); 221 221 execProfile.setCurrentPhase(execProfile.getCurrentPhase() + 1); 222 222 } … … 255 255 } 256 256 257 public double get CompletionPercentage() {258 return completionPercentage ;259 } 260 261 public void set CompletionPercentage(double completionPercentage) {262 this.completionPercentage = completionPercentage;257 public double getTotalCompletionPercentage() { 258 return completionPercentageTotal; 259 } 260 261 public void setTotalCompletionPercentage(double completionPercentage) { 262 this.completionPercentageTotal = completionPercentage; 263 263 } 264 264 … … 370 370 } 371 371 372 public ResourceConsumption getCurrentResourceConsumption(){373 return execProfile.getCurrentResourceConsumption();374 }375 376 372 public String getApplicationName(){ 377 373 return task.getApplicationName(); … … 379 375 380 376 private void preparePhases(String resourceType) { 381 LinkedList< ResourceConsumption> resourceConsumptionList = new LinkedList<ResourceConsumption>();377 LinkedList<ExecutionPhase> resourceConsumptionList = new LinkedList<ExecutionPhase>(); 382 378 383 379 long usefulWork = -1; … … 385 381 if(task.getDescription().getExecution() == null || task.getDescription().getExecution().getResourceConsumptionProfile() == null 386 382 || task.getDescription().getExecution().getResourceConsumptionProfile().length == 0 ){ 387 ResourceConsumptionresConsumption = null;383 ExecutionPhase resConsumption = null; 388 384 try { 389 resConsumption = new ResourceConsumption(getLength(), task.getComputingResourceRequirements());385 resConsumption = new ExecutionPhase(getLength(), task.getComputingResourceRequirements()); 390 386 } catch (NoSuchFieldException e) { 391 387 // TODO Auto-generated catch block … … 399 395 if(resConsumptioProfile.getType() != null && resConsumptioProfile.getType().equals(resourceType)){ 400 396 for(ResourceConsumptionType resConsumption: resConsumptioProfile.getResourceConsumption()){ 401 ResourceConsumption resourceConsumption = new ResourceConsumption(resConsumption);397 ExecutionPhase resourceConsumption = new ExecutionPhase(resConsumption); 402 398 resourceConsumptionList.add(resourceConsumption); 403 399 } … … 415 411 if(!found){ 416 412 for(ResourceConsumptionType resConsumption: task.getDescription().getExecution().getResourceConsumptionProfile()[0].getResourceConsumption()){ 417 ResourceConsumption resourceConsumption = new ResourceConsumption(resConsumption);413 ExecutionPhase resourceConsumption = new ExecutionPhase(resConsumption); 418 414 resourceConsumptionList.add(resourceConsumption); 419 415 } -
DCWoRMS/branches/coolemall/src/example/energy/BaseEnergyEstimationPlugin.java
r1396 r1415 3 3 import schedframe.Parameters; 4 4 import schedframe.PluginConfiguration; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.plugin.EnergyEstimationPlugin; 7 import schedframe.resources.computing.profiles.energy.power.plugin.EnergyPluginConfiguration; 7 8 import schedframe.resources.devices.PhysicalResource; 8 9 import schedframe.scheduling.manager.tasks.JobRegistry; 10 import schemas.StringValueWithUnit; 9 11 10 12 public abstract class BaseEnergyEstimationPlugin implements EnergyEstimationPlugin { 11 13 14 EnergyPluginConfiguration plugConf; 15 12 16 @Override 13 17 public PluginConfiguration getConfiguration() { 14 // TODO Auto-generated method stub 15 return null; 18 return plugConf; 16 19 } 17 20 18 21 @Override 19 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {22 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 20 23 throw new RuntimeException("Not implemented."); 21 24 } 22 25 23 26 @Override 24 public double estimateTemperature( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {27 public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 25 28 throw new RuntimeException("Not implemented."); 26 29 } 27 30 28 31 public void init(Parameters parameters) { 29 32 plugConf = new EnergyPluginConfiguration(); 33 try{ 34 StringValueWithUnit powerCapLevel = parameters.get("powerCapLevel").get(0); 35 plugConf.setPowerCapLevel(Double.valueOf(powerCapLevel.getContent()).doubleValue()); 36 } catch(Exception e){ 37 plugConf.setPowerCapLevel(-1); 38 } 39 try{ 40 StringValueWithUnit powerFloorLevel = parameters.get("powerFloorLevel").get(0); 41 plugConf.setPowerFloorLevel(Double.valueOf(powerFloorLevel.getContent()).doubleValue()); 42 } catch(Exception e){ 43 plugConf.setPowerFloorLevel(-1); 44 } 30 45 } 31 46 -
DCWoRMS/branches/coolemall/src/example/energy/DataCenterEnergyEstimationPlugin.java
r1258 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.DataCenter; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.PowerUsage; 7 7 import schedframe.resources.devices.PhysicalResource; … … 11 11 12 12 @Override 13 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,13 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 14 14 PhysicalResource resource) { 15 15 double power = 0; -
DCWoRMS/branches/coolemall/src/example/energy/DefaultEnergyEstimationPlugin.java
r1207 r1415 2 2 3 3 import schedframe.resources.computing.ComputingResource; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 13 13 double powerConsumption = 0; 14 14 try { -
DCWoRMS/branches/coolemall/src/example/energy/NodeEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.Device; 7 7 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption = 0; -
DCWoRMS/branches/coolemall/src/example/energy/ProcessorEnergyEstimationPlugin.java
r1207 r1415 3 3 import schedframe.resources.ResourceStatus; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 7 7 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption; … … 42 42 43 43 } 44 if(cpu.getLoadInterface().getRecentUtilization().getValue() != 0.0){ 45 powerConsumption = powerConsumption * cpu.getLoadInterface().getRecentUtilization().getValue()/100; 46 } 44 47 return powerConsumption; 45 48 } -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB1EnergyEstimationPlugin.java
r1396 r1415 10 10 import schedframe.resources.computing.coolemall.ComputeBox1; 11 11 import schedframe.resources.computing.coolemall.NodeGroup; 12 import schedframe.resources.computing.profiles.energy. EnergyEvent;12 import schedframe.resources.computing.profiles.energy.ResourceEvent; 13 13 import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 14 14 import schedframe.resources.computing.profiles.energy.power.PState; … … 26 26 double powerUpgradeLevel = -1; 27 27 28 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,28 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 29 29 PhysicalResource resource) { 30 30 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CB2EnergyEstimationPlugin.java
r1396 r1415 8 8 import schedframe.resources.computing.coolemall.ComputeBox1; 9 9 import schedframe.resources.computing.coolemall.NodeGroup; 10 import schedframe.resources.computing.profiles.energy. EnergyEvent;10 import schedframe.resources.computing.profiles.energy.ResourceEvent; 11 11 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 12 12 import schedframe.resources.devices.Device; … … 19 19 public class CB2EnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 20 20 21 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,21 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 22 22 PhysicalResource resource) { 23 23 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/CoolingDeviceEnergyEstimationPlugin.java
r1396 r1415 7 7 import schedframe.resources.computing.coolemall.ComputeBox1; 8 8 import schedframe.resources.computing.coolemall.NodeGroup; 9 import schedframe.resources.computing.profiles.energy. EnergyEvent;9 import schedframe.resources.computing.profiles.energy.ResourceEvent; 10 10 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 11 11 import schedframe.resources.devices.Device; … … 18 18 public class CoolingDeviceEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 19 19 20 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {20 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 21 21 double airflow = 0; 22 22 return airflow; 23 23 } 24 24 25 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,25 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 26 26 PhysicalResource resource) { 27 27 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FanEnergyEstimationPlugin.java
r1396 r1415 1 1 package example.energy.coolemall; 2 2 3 import schedframe.events. scheduling.EventReason;3 import schedframe.events.EventReason; 4 4 import schedframe.resources.computing.ComputingResource; 5 5 import schedframe.resources.computing.Node; 6 import schedframe.resources.computing.profiles.energy. EnergyEvent;6 import schedframe.resources.computing.profiles.energy.ResourceEvent; 7 7 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 8 8 import schedframe.resources.devices.Device; … … 14 14 public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 15 15 16 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,16 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 17 17 PhysicalResource resource) { 18 18 … … 35 35 } 36 36 37 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {37 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 38 38 39 39 double airflow = 0; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpInletEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.coolemall.ComputeBox1; 6 6 import schedframe.resources.computing.coolemall.NodeGroup; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.devices.Device; 9 9 import schedframe.resources.devices.Fan; … … 15 15 public class FlowPumpInletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 … … 86 86 } 87 87 88 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {88 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 89 89 double airflow = 0; 90 90 double Vair_total; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/FlowPumpOutletEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.coolemall.ComputeBox1; 6 6 import schedframe.resources.computing.coolemall.NodeGroup; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.devices.Device; 9 9 import schedframe.resources.devices.Fan; … … 15 15 public class FlowPumpOutletEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 … … 23 23 } 24 24 25 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {25 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 26 26 double airflow = 0; 27 27 double Vair_total; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/HeatsinkEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.Processor; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.Device; 7 7 import schedframe.resources.devices.PhysicalResource; … … 11 11 public class HeatsinkEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 12 12 13 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,13 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 14 14 PhysicalResource resource) { 15 15 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeEnergyEstimationPlugin.java
r1396 r1415 5 5 import schedframe.resources.computing.Node; 6 6 import schedframe.resources.computing.Processor; 7 import schedframe.resources.computing.profiles.energy. EnergyEvent;7 import schedframe.resources.computing.profiles.energy.ResourceEvent; 8 8 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 9 9 import schedframe.resources.devices.Device; … … 15 15 public class NodeEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 16 16 17 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,17 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 18 18 PhysicalResource resource) { 19 19 double powerConsumption = 0; -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/NodeGroupEnergyEstimationPlugin.java
r1247 r1415 3 3 import schedframe.resources.computing.Node; 4 4 import schedframe.resources.computing.coolemall.NodeGroup; 5 import schedframe.resources.computing.profiles.energy. EnergyEvent;5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 import schedframe.resources.devices.PhysicalResource; 7 7 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 public class NodeGroupEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 -
DCWoRMS/branches/coolemall/src/example/energy/coolemall/ProcessorEnergyEstimationPlugin.java
r1322 r1415 2 2 3 3 import schedframe.resources.computing.Processor; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 6 6 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class ProcessorEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 -
DCWoRMS/branches/coolemall/src/example/energy/device/FanEnergyEstimationPlugin.java
r1396 r1415 1 1 package example.energy.device; 2 2 3 import schedframe.events. scheduling.EventReason;4 import schedframe.resources.computing.profiles.energy. EnergyEvent;3 import schedframe.events.EventReason; 4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 6 6 import schedframe.resources.devices.PhysicalResource; … … 10 10 public class FanEnergyEstimationPlugin extends BaseEnergyEstimationPlugin { 11 11 12 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry,12 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, 13 13 PhysicalResource resource) { 14 14 double powerConsumption = 0; … … 24 24 } 25 25 26 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {26 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 27 27 double airflow= 0; 28 28 try { -
DCWoRMS/branches/coolemall/src/example/load/DefaultLoadEstimationPlugin.java
r1396 r1415 2 2 3 3 import schedframe.resources.computing.ComputingResource; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 10 10 public class DefaultLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 11 11 12 public double estimateUtlization( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {12 public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 13 13 14 14 ComputingResource computingResource = (ComputingResource) resource; -
DCWoRMS/branches/coolemall/src/example/load/ProcessorLoadEstimationPlugin.java
r1396 r1415 2 2 3 3 import schedframe.resources.computing.Processor; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; 7 7 import schedframe.scheduling.manager.tasks.JobRegistryImpl; 8 import schedframe.scheduling.tasks.phases.Phase Behaviour;8 import schedframe.scheduling.tasks.phases.PhaseSystemLoad; 9 9 import dcworms.schedframe.scheduling.ExecTask; 10 10 11 11 public class ProcessorLoadEstimationPlugin extends BaseLoadEstimationPlugin{ 12 12 13 public double estimateUtlization( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource) {13 public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { 14 14 Processor proc = (Processor) resource; 15 15 double sumCoresLoad = 0; … … 26 26 double cpuUsage = 1 / nrOfThreadsOnCpu; 27 27 28 for(Phase Behaviour pb: task.getExecutionProfile().getCurrentResourceConsumption().getBehaviourList()){28 for(PhaseSystemLoad pb: task.getExecutionProfile().getCurrentResourceConsumption().getSystemLoad()){ 29 29 if(pb.getResouceName().equals("PM_CPU_Usage")){ 30 30 cpuUsage = pb.getUtilization(); -
DCWoRMS/branches/coolemall/src/example/localplugin/BaseLocalSchedulingPlugin.java
r1396 r1415 6 6 import schedframe.Parameters; 7 7 import schedframe.PluginConfiguration; 8 import schedframe.events.scheduling.SchedulingEvent;9 8 import schedframe.events.scheduling.SchedulingEventType; 10 import schedframe.events.scheduling.SchedulingResponseType;11 9 import schedframe.resources.units.ResourceUnit; 12 10 import schedframe.resources.units.ResourceUnitName; 13 11 import schedframe.scheduling.TaskList; 14 12 import schedframe.scheduling.manager.resources.ResourceManager; 15 import schedframe.scheduling.manager.tasks.JobRegistry;16 13 import schedframe.scheduling.plan.impl.Allocation; 17 14 import schedframe.scheduling.plan.impl.ScheduledTask; … … 31 28 public PluginConfiguration getConfiguration() { 32 29 return plugConf; 33 }34 35 public SchedulingResponseType handleResourceAllocationViolation(SchedulingEvent event,36 TaskQueueList queues,37 JobRegistry jobRegistry,38 ResourceManager resourceManager, ModuleList modules){39 SchedulingResponseType responeEvent = null;40 switch(event.getType()){41 case TASK_REQUESTED_TIME_EXPIRED:42 responeEvent = SchedulingResponseType.KILL_TASK;43 break;44 }45 return responeEvent;46 30 } 47 31 -
DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationHighPerf_NodePowMan_Plugin.java
r1396 r1415 7 7 import java.util.Comparator; 8 8 import java.util.HashMap; 9 import java.util.HashSet; 9 10 import java.util.List; 10 11 import java.util.Map; 12 import java.util.Set; 11 13 12 14 import schedframe.events.scheduling.SchedulingEvent; 13 import schedframe.exceptions.ResourceException;14 15 import schedframe.resources.ResourceStatus; 15 16 import schedframe.resources.StandardResourceType; … … 17 18 import schedframe.resources.computing.Node; 18 19 import schedframe.resources.computing.Processor; 19 import schedframe.resources.computing.profiles.energy.airthroughput.StandardAirflowStateName; 20 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowState; 21 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowStateName; 22 import schedframe.resources.computing.profiles.energy.airthroughput.CustomAirflowStateName; 20 23 import schedframe.resources.computing.profiles.energy.power.PState; 21 24 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 22 25 import schedframe.resources.devices.Device; 26 import schedframe.resources.devices.Fan; 23 27 import schedframe.resources.units.ProcessingElements; 24 28 import schedframe.resources.units.ResourceUnit; … … 55 59 // check all tasks in queue 56 60 57 List<Node> notSelectedNodes = resourceManager.getNodes();61 Set<Node> selectedNodes = new HashSet<Node>(); 58 62 59 63 for (int i = 0; i < q.size(); i++) { … … 67 71 ProcessingElements pe = (ProcessingElements) choosenResources.get(StandardResourceUnitName.PE); 68 72 Node node = (Node) pe.get(0).getParent(); 69 notSelectedNodes.remove(node);73 selectedNodes.add(node); 70 74 } 71 75 } 72 76 } 73 turnOffIdleNodes(notSelectedNodes); 77 List<Node> nodes = resourceManager.getNodes(); 78 nodes.removeAll(selectedNodes); 79 turnOffIdleNodes(nodes); 80 for(Node node: resourceManager.getNodes()){ 81 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){ 82 if(device.getType().equals(StandardResourceType.Fan)){ 83 Fan fan = (Fan) device; 84 adjustFanSpeed(fan, selectedNodes); 85 break; 86 } 87 } 88 } 74 89 break; 75 90 } … … 84 99 Node node; 85 100 if(availableNodes.size() == 0){ 86 try { 87 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 88 } catch (ResourceException e) { 89 // TODO Auto-generated catch block 90 e.printStackTrace(); 91 } 101 102 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 103 92 104 Collections.sort(nodes, new PerformanceComparator()); 93 105 node = turnOnFirstNode(nodes, task); … … 112 124 } 113 125 } 126 114 127 ProcessingElements result = new ProcessingElements(node.getFullName()); 115 128 result.addAll(choosenResources); … … 167 180 continue; 168 181 else { 169 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){170 if(device.getType().equals(StandardResourceType.Fan)){171 device.getAirflowInterface().setAirflowState(StandardAirflowStateName.ON);172 break;173 }174 }175 182 node.getPowerInterface().setPowerState(StandardPowerStateName.ON); 176 183 startedNode = node; … … 190 197 191 198 if(freeProcessors == node.getProcessors().size()) { 192 for(Device device: node.getParent().getResourceCharacteristic().getDevices()){193 if(device.getType().equals(StandardResourceType.Fan)){194 device.getAirflowInterface().setAirflowState(StandardAirflowStateName.OFF);195 break;196 }197 }198 199 node.getPowerInterface().setPowerState(StandardPowerStateName.OFF); 199 200 } 200 201 201 } 202 202 } … … 249 249 } 250 250 } 251 252 private void adjustFanSpeed(Fan fan, Set<Node> selectedNodes){ 253 AirflowStateName newState; 254 double totalLoad = 0; 255 double loadLevel; 256 ComputingResource compRes = fan.getComputingResource(); 257 for(ComputingResource n: compRes.getChildren()){ 258 if(fan.getChilledResources().contains(n.getFullName())){ 259 if(selectedNodes.contains(n)){ 260 totalLoad = totalLoad + 100; 261 } else { 262 totalLoad = totalLoad + n.getLoadInterface().getRecentUtilization().getValue(); 263 } 264 } 265 } 266 loadLevel = totalLoad / compRes.getChildren().size(); 267 268 double highestLoadLevel = 0; 269 270 if(fan.getAirflowInterface().supportAirflowState(new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()))){ 271 newState = new CustomAirflowStateName("ON_" + new Double(loadLevel).intValue()); 272 } else { 273 for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 274 Double load; 275 try{ 276 load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 277 }catch (Exception e){ 278 continue; 279 } 280 if(highestLoadLevel < load){ 281 highestLoadLevel = load; 282 } 283 } 284 if(loadLevel == 0){ 285 newState = new CustomAirflowStateName("OFF"); 286 } else { 287 288 double higherLoadLevel = highestLoadLevel; 289 290 for(AirflowState airflowState: fan.getAirflowInterface().getSupportedAirflowStates()){ 291 Double load; 292 try{ 293 load = Double.valueOf(airflowState.getName().getLabel().substring(3)); 294 }catch (Exception e){ 295 continue; 296 } 297 if(loadLevel < load){ 298 higherLoadLevel = load; 299 } 300 } 301 newState = new CustomAirflowStateName("ON_" + Double.valueOf(higherLoadLevel).intValue()); 302 } 303 } 304 fan.getAirflowInterface().setAirflowState(newState); 305 } 251 306 252 307 } -
DCWoRMS/branches/coolemall/src/example/localplugin/Cluster_FCFSBF_ConsolidationLowPower_NodePowMan_Plugin.java
r1396 r1415 11 11 12 12 import schedframe.events.scheduling.SchedulingEvent; 13 import schedframe.exceptions.ResourceException;14 13 import schedframe.resources.ResourceStatus; 15 14 import schedframe.resources.StandardResourceType; … … 83 82 Node node; 84 83 if(availableNodes.size() == 0){ 85 try { 86 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 87 } catch (ResourceException e) { 88 // TODO Auto-generated catch block 89 e.printStackTrace(); 90 } 84 85 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 86 91 87 Collections.sort(nodes, new PowerComparator()); 92 88 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationHighPerf_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new FavourableNodeComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox1/CB1_FCFS_ConsolidationLowPower_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new FavourableNodeComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationHighPerf_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 95 94 Node node; 96 95 if(avNodes.size() == 0){ 97 try { 98 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 99 } catch (ResourceException e) { 100 // TODO Auto-generated catch block 101 e.printStackTrace(); 102 } 96 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 103 99 Collections.sort(nodes, new PerformanceComparator()); 104 100 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_ConsolidationLowPower_NodePowMan_SP.java
r1396 r1415 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.exceptions.ResourceException;12 11 import schedframe.resources.ResourceStatus; 13 12 import schedframe.resources.StandardResourceType; … … 94 93 Node node; 95 94 if(avNodes.size() == 0){ 96 try { 97 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 98 } catch (ResourceException e) { 99 // TODO Auto-generated catch block 100 e.printStackTrace(); 101 } 95 96 nodes = (List<Node>) resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Node, ResourceStatus.UNAVAILABLE); 97 102 98 Collections.sort(nodes, new PowerComparator()); 103 99 node = turnOnFirstNode(nodes, task); -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_PowerCapping_SP.java
r1396 r1415 78 78 if (task.getStatus() == DCWormsTags.READY) { 79 79 80 try { 81 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 82 break; 83 } catch (ResourceException e) { 84 // TODO Auto-generated catch block 85 e.printStackTrace(); 86 } 80 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 81 break; 82 87 83 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 88 84 if (choosenResources != null) { -
DCWoRMS/branches/coolemall/src/example/localplugin/coolemall/computebox2/CB2_FCFS_Random_SP.java
r1396 r1415 8 8 9 9 import schedframe.events.scheduling.SchedulingEvent; 10 import schedframe.exceptions.ResourceException;11 10 import schedframe.resources.ResourceStatus; 12 11 import schedframe.resources.StandardResourceType; … … 61 60 if (task.getStatus() == DCWormsTags.READY) { 62 61 63 try { 64 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 65 break; 66 } catch (ResourceException e) { 67 // TODO Auto-generated catch block 68 e.printStackTrace(); 69 } 62 if(resourceManager.getResourcesByTypeWithStatus(StandardResourceType.Core, ResourceStatus.FREE).size() == 0) 63 break; 64 70 65 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 71 66 if (choosenResources != null) { -
DCWoRMS/branches/coolemall/src/example/timeestimation/coolemall/PhaseBasedTimeEstimationPlugin.java
r1396 r1415 5 5 6 6 import schedframe.events.scheduling.SchedulingEvent; 7 import schedframe.resources.computing.ComputingResource; 8 import schedframe.resources.computing.Core; 9 import schedframe.resources.computing.Processor; 10 import schedframe.resources.units.PEUnit; 11 import schedframe.resources.units.ProcessingElements; 7 12 import schedframe.resources.units.ResourceUnit; 8 13 import schedframe.resources.units.ResourceUnitName; 9 import schedframe. scheduling.tasks.phases.ResourceConsumption;14 import schedframe.resources.units.StandardResourceUnitName; 10 15 import dcworms.schedframe.scheduling.ExecTask; 11 import dcworms.schedframe.scheduling.Executable;12 16 import example.timeestimation.BaseTimeEstimationPlugin; 13 17 14 public class Phase TimeEstimationPlugin extends BaseTimeEstimationPlugin{18 public class PhaseBasedTimeEstimationPlugin extends BaseTimeEstimationPlugin{ 15 19 16 20 /* … … 18 22 * Requested calculation should be done based on the resources allocated for the task, 19 23 * task description and task completion percentage. 24 * 25 * Example implementation calculate the estimation based on processing power. 26 * There is also a simple assumption, that processing power is a linear function 27 * of number of allocated units and their speed. 20 28 */ 21 29 public double execTimeEstimation(SchedulingEvent event, ExecTask task, 22 30 Map<ResourceUnitName, ResourceUnit> allocatedResources, 23 31 double completionPercentage) { 32 24 33 25 Executable exec = (Executable) task; 34 //String taskFreqString = task.getExecutionProfile().getCurrentResourceConsumption().getReferenceHardware().get("cpu_maxfreq"); 35 //double taskFreq = Double.valueOf(taskFreqString); 26 36 27 ResourceConsumption resConsumption = exec.getExecutionProfile().getCurrentResourceConsumption(); 37 double speed = 0; 38 PEUnit peUnit = (PEUnit) allocatedResources.get(StandardResourceUnitName.PE); 39 40 try { 41 ProcessingElements pes = (ProcessingElements) peUnit; 42 for (ComputingResource compResource : pes) { 43 if(compResource instanceof Core) { 44 Core core = (Core) compResource; 45 speed = core.getProcessor().getPowerInterface().getPState().getFrequency(); 46 break; 47 } else if (compResource instanceof Processor) { 48 Processor processor = (Processor) compResource; 49 speed = processor.getPowerInterface().getPState().getFrequency(); 50 break; 51 } 52 } 53 } catch (Exception e){ 54 speed = peUnit.getSpeed(); 55 } 28 56 29 double execTime = (1 - completionPercentage/100) * resConsumption.getDuration(); 57 //speed = taskFreq; 58 int cnt = peUnit.getUsedAmount(); 30 59 60 double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getLenght() / (speed * cnt); 61 62 //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration() * (taskFreq / currentFrequency); 63 //double execTime = (1 - completionPercentage/100) * task.getExecutionProfile().getCurrentResourceConsumption().getDuration(); 64 31 65 // if the result is very close to 0, but less then one millisecond then round this result to 0.001 32 66 if (Double.compare(execTime, 0.001) < 0) { … … 40 74 41 75 } 76 77 -
DCWoRMS/branches/coolemall/src/gridsim/dcworms/DCWormsTags.java
r1381 r1415 10 10 protected static final int DCWORMSBASE = 600; 11 11 12 public static final int TO_ COMP_RESOURCES = DCWORMSBASE - 4;12 public static final int TO_RESOURCES = DCWORMSBASE - 4; 13 13 14 14 public static final int TO_SCHEDULERS = DCWORMSBASE - 3; -
DCWoRMS/branches/coolemall/src/schedframe/events/Event.java
r477 r1415 1 1 package schedframe.events; 2 2 3 import schedframe.events.scheduling.EventReason;4 3 5 4 public interface Event { … … 9 8 public String getSource(); 10 9 11 public int getTag();12 13 10 public Object getData(); 14 11 -
DCWoRMS/branches/coolemall/src/schedframe/events/EventCommand.java
r1316 r1415 1 1 package schedframe.events; 2 3 import schedframe.resources.computing.profiles.energy.ResourceEvent; 2 4 3 5 … … 5 7 public interface EventCommand { 6 8 7 public void execute( Event event);9 public void execute(ResourceEvent event); 8 10 } -
DCWoRMS/branches/coolemall/src/schedframe/events/EventHandler.java
r477 r1415 2 2 3 3 import schedframe.events.scheduling.SchedulingEvent; 4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 4 5 5 6 public interface EventHandler { 6 7 7 public void handleResourceEvent( Event event);8 public void handleResourceEvent(ResourceEvent event); 8 9 9 10 public void handleSchedulingEvent(SchedulingEvent event); -
DCWoRMS/branches/coolemall/src/schedframe/events/EventReason.java
r477 r1415 1 package schedframe.events .scheduling;1 package schedframe.events; 2 2 3 3 public enum EventReason { 4 4 5 //Reasons that caused given events 5 6 UNKNOWN, … … 12 13 13 14 //TASK_CANCELED 14 RESERVATION_EXCEEDED,15 15 RESOURCES_EXCEEDED, 16 16 -
DCWoRMS/branches/coolemall/src/schedframe/events/EventType.java
r477 r1415 5 5 public String getName(); 6 6 7 public int getTag();8 9 7 } -
DCWoRMS/branches/coolemall/src/schedframe/events/ResourceEventCommand.java
r1316 r1415 1 1 package schedframe.events; 2 2 3 import schedframe.resources.computing.profiles.energy.ResourceEvent; 3 4 import schedframe.resources.devices.PhysicalResource; 4 5 … … 11 12 } 12 13 13 public void execute( Event event) {14 public void execute(ResourceEvent event) { 14 15 resource.getEventHandler().handleResourceEvent(event); 15 16 } -
DCWoRMS/branches/coolemall/src/schedframe/events/scheduling/ResourceStateChangedEvent.java
r1316 r1415 1 1 package schedframe.events.scheduling; 2 2 3 import schedframe. events.EventType;3 import schedframe.resources.computing.profiles.energy.ResourceEventType; 4 4 5 public class ResourceStateChangedEvent 5 public class ResourceStateChangedEvent extends SchedulingEvent { 6 6 7 protected String resourceName; 8 protected EventType eventType; 7 protected ResourceEventType eventType; 9 8 10 public ResourceStateChangedEvent( String resourceName,EventType eventType) {9 public ResourceStateChangedEvent(ResourceEventType eventType) { 11 10 super(SchedulingEventType.RESOURCE_STATE_CHANGED); 12 this.resourceName = resourceName;13 11 this.eventType = eventType; 14 12 } 15 13 16 public String getResourceName() {17 return resourceName;18 }19 14 20 public EventType getEventType() {15 public ResourceEventType getResourceEventType() { 21 16 return eventType; 22 17 } -
DCWoRMS/branches/coolemall/src/schedframe/events/scheduling/SchedulingEvent.java
r1316 r1415 2 2 3 3 import schedframe.events.Event; 4 import schedframe.events.EventReason; 4 5 import schedframe.events.EventType; 5 6 … … 25 26 schedEventType = (SchedulingEventType)type; 26 27 } catch(Exception e){ 27 schedEventType = SchedulingEventType.RESOURCE_STATE_CHANGED;28 schedEventType = null; 28 29 } 29 30 return schedEventType; … … 42 43 } 43 44 44 public int getTag() {45 return type.getTag();46 }47 48 45 public Object getData() { 49 46 return null; -
DCWoRMS/branches/coolemall/src/schedframe/events/scheduling/SchedulingEventCommand.java
r1316 r1415 1 1 package schedframe.events.scheduling; 2 2 3 import schedframe.events.Event;4 3 import schedframe.events.EventCommand; 5 4 import schedframe.resources.computing.ComputingResource; 5 import schedframe.resources.computing.profiles.energy.ResourceEvent; 6 6 7 7 public class SchedulingEventCommand implements EventCommand { … … 13 13 } 14 14 15 public void execute( Event event) {16 SchedulingEvent ev = new ResourceStateChangedEvent( compResource.getFullName(),event.getType());15 public void execute(ResourceEvent event) { 16 SchedulingEvent ev = new ResourceStateChangedEvent(event.getType()); 17 17 ev.setSource(compResource.getFullName()); 18 18 compResource.getEventHandler().handleSchedulingEvent(ev); -
DCWoRMS/branches/coolemall/src/schedframe/events/scheduling/SchedulingEventType.java
r1360 r1415 6 6 7 7 // task related 8 TASK_FINISHED(1), 9 TASK_FAILED(2), 10 TASK_CANCELED(4), 11 TASK_ARRIVED(8), 12 TASK_PAUSED(16), 13 TASK_RESUMED(32), 14 TASK_MOVED(64), 15 START_TASK_EXECUTION(128), 16 TASK_REQUESTED_TIME_EXPIRED(256), 8 TASK_FINISHED, 9 TASK_FAILED, 10 TASK_CANCELED, 11 TASK_ARRIVED, 12 TASK_PAUSED, 13 TASK_RESUMED, 14 TASK_MOVED, 15 TASK_EXECUTION_CHANGED, 16 START_TASK_EXECUTION, 17 TASK_REQUESTED_TIME_EXPIRED, 17 18 18 19 //job related 19 JOB_ARRIVED (512),20 JOB_FINISHED (1024),21 JOB_FAILED (2048),22 JOB_CANCELED (4096),20 JOB_ARRIVED, 21 JOB_FINISHED, 22 JOB_FAILED, 23 JOB_CANCELED, 23 24 24 25 //time related 25 TIMER(8192), 26 TIMER, 27 28 //resource related 29 RESOURCE_FAILED, 30 //provider related (relevant to grid scheduling) 31 PROVIDER_FAILED, 32 33 RESOURCE_STATE_CHANGED, 26 34 27 //reservation related 28 RESERVATION_ACTIVE(16384), 29 RESERVATION_FINISHED(32768), 30 RESERVATION_FAILED(65536), 31 RESERVATION_EXPIRED(131072), 32 33 //resource related 34 RESOURCE_FAILED(262144), 35 //provider related (relevant to grid scheduling) 36 PROVIDER_FAILED(524288), 35 POWER_LIMIT_EXCEEDED; 37 36 38 RESOURCE_STATE_CHANGED(1048576),39 40 POWER_LIMIT_EXCEEDED(2097152)41 ;42 43 protected int tag;44 45 private SchedulingEventType(int tag){46 this.tag = tag;47 }48 49 public int getTag(){50 return this.tag;51 }52 37 53 38 public String getName(){ -
DCWoRMS/branches/coolemall/src/schedframe/events/scheduling/TaskCanceledEvent.java
r477 r1415 2 2 3 3 import java.util.List; 4 5 import schedframe.events.EventReason; 4 6 5 7 -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/ComputingResource.java
r1396 r1415 9 9 import java.util.Properties; 10 10 11 import schedframe.events.Event;12 11 import schedframe.events.EventHandler; 12 import schedframe.events.EventReason; 13 13 import schedframe.events.ResourceEventCommand; 14 import schedframe.events.scheduling.EventReason;15 14 import schedframe.events.scheduling.ResourceStateChangedEvent; 16 15 import schedframe.events.scheduling.SchedulingEvent; … … 21 20 import schedframe.resources.computing.extensions.Extension; 22 21 import schedframe.resources.computing.extensions.ExtensionListImpl; 23 import schedframe.resources.computing.profiles.energy. EnergyEvent;24 import schedframe.resources.computing.profiles.energy. EnergyEventType;22 import schedframe.resources.computing.profiles.energy.ResourceEvent; 23 import schedframe.resources.computing.profiles.energy.ResourceEventType; 25 24 import schedframe.resources.computing.profiles.energy.EnergyExtension; 26 25 import schedframe.resources.computing.profiles.load.LoadExtension; … … 117 116 } 118 117 119 private void triggerEventUp( Event event) {118 private void triggerEventUp(ResourceEvent event) { 120 119 if(parent != null) 121 120 parent.handleEvent(event); 122 121 } 123 122 124 public void handleEvent( Event event){123 public void handleEvent(ResourceEvent event){ 125 124 ResourceEventCommand rec = new ResourceEventCommand(this); 126 125 rec.execute(event); … … 227 226 class ComputingResourceEventHandler implements EventHandler{ 228 227 229 public void handleResourceEvent( Event event){228 public void handleResourceEvent(ResourceEvent event){ 230 229 if (extensionList != null) { 231 230 for (Extension extension: extensionList) { … … 254 253 //scheduler.sim_cancel(filter, null); 255 254 ResourceStateChangedEvent rscEvent = (ResourceStateChangedEvent) event; 256 EnergyEventType eeType = (EnergyEventType)rscEvent.getEventType();255 ResourceEventType reType = rscEvent.getResourceEventType(); 257 256 //scheduler.sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE_PROCESSING, src); 258 switch( eeType){257 switch(reType){ 259 258 260 case RESOURCE_UTILIZATION_CHANGED: {259 case UTILIZATION_CHANGED: { 261 260 scheduler.sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE_PROCESSING, src); 262 261 break; 263 262 } 264 case FREQUENCY_CHANGED: {263 case CPU_FREQUENCY_CHANGED: { 265 264 scheduler.sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE_PROCESSING, src); 266 265 break; … … 286 285 } 287 286 ResourceEventCommand rec = new ResourceEventCommand(this); 288 EnergyEvent event = new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller");287 ResourceEvent event = new ResourceEvent(ResourceEventType.AIRFLOW_STATE_CHANGED, "Resource controller"); 289 288 event.setReason(EventReason.SIM_INIT); 290 289 rec.execute(event); 291 290 /*ResourceEventCommand*/ rec = new ResourceEventCommand(this); 292 /* EnergyEvent*/ event = new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller");291 /*ResourceEvent*/ event = new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, "Resource controller"); 293 292 event.setReason(EventReason.SIM_INIT); 294 293 rec.execute(event); 295 294 296 295 rec = new ResourceEventCommand(this); 297 event = new EnergyEvent(EnergyEventType.TEMPERATURE_CHANGED, "Resource controller");296 event = new ResourceEvent(ResourceEventType.TEMPERATURE_CHANGED, "Resource controller"); 298 297 event.setReason(EventReason.SIM_INIT); 299 298 rec.execute(event); … … 302 301 if(li != null){ 303 302 ResourceLoadCalendar rlc = li.getLoadCalendar(); 304 LinkedList<TimestampUtilization> l l= rlc.getLoadDistribution();305 for(TimestampUtilization tu: l l){306 DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getStartTime(), new EnergyEvent(EnergyEventType.RESOURCE_UTILIZATION_CHANGED, getFullName()));307 DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getEndTime(), new EnergyEvent(EnergyEventType.RESOURCE_UTILIZATION_CHANGED, getFullName()));303 LinkedList<TimestampUtilization> ld = rlc.getLoadDistribution(); 304 for(TimestampUtilization tu: ld){ 305 DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getStartTime(), new ResourceEvent(ResourceEventType.UTILIZATION_CHANGED, getFullName())); 306 DataCenterWorkloadSimulator.getEventManager().sendToResource(getFullName(), tu.getEndTime(), new ResourceEvent(ResourceEventType.UTILIZATION_CHANGED, getFullName())); 308 307 } 309 308 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/EnergyExtension.java
r1396 r1415 15 15 import schedframe.resources.computing.profiles.energy.power.PowerInterfaceFactory; 16 16 import schedframe.resources.computing.profiles.energy.power.PowerProfile; 17 import schedframe.resources.computing.profiles.energy.power.PowerStateName; 17 18 import schedframe.resources.computing.profiles.energy.power.ui.PowerInterface; 18 19 import schedframe.resources.computing.profiles.energy.thermal.ThermalInterfaceFactory; … … 110 111 if(powerProfile == null || powerProfile.getEnergyEstimationPlugin() == null) 111 112 return false; 112 if(event.getType().getName().equals( EnergyEventType.POWER_STATE_CHANGED.getName()))113 return true; 114 else if(event.getType().getName().equals( EnergyEventType.FREQUENCY_CHANGED.getName()))115 return true; 116 else if(event.getType().getName().equals( EnergyEventType.TASK_STARTED.getName()))117 return true; 118 else if(event.getType().getName().equals( EnergyEventType.TASK_FINISHED.getName()))119 return true; 120 else if(event.getType().getName().equals( EnergyEventType.RESOURCE_UTILIZATION_CHANGED.getName()))121 return true; 122 123 if(event.getType().getName().equals( EnergyEventType.AIRFLOW_STATE_CHANGED.getName()))124 return true; 125 if(event.getType().getName().equals( EnergyEventType.TEMPERATURE_CHANGED.getName()))113 if(event.getType().getName().equals(ResourceEventType.POWER_STATE_CHANGED.getName())) 114 return true; 115 else if(event.getType().getName().equals(ResourceEventType.CPU_FREQUENCY_CHANGED.getName())) 116 return true; 117 else if(event.getType().getName().equals(ResourceEventType.TASK_STARTED.getName())) 118 return true; 119 else if(event.getType().getName().equals(ResourceEventType.TASK_FINISHED.getName())) 120 return true; 121 else if(event.getType().getName().equals(ResourceEventType.UTILIZATION_CHANGED.getName())) 122 return true; 123 124 if(event.getType().getName().equals(ResourceEventType.AIRFLOW_STATE_CHANGED.getName())) 125 return true; 126 if(event.getType().getName().equals(ResourceEventType.TEMPERATURE_CHANGED.getName())) 126 127 return true; 127 128 … … 131 132 public void handleEvent(Event event) { 132 133 133 EnergyEvent enEvent = (EnergyEvent)event;134 ResourceEvent resEvent = (ResourceEvent)event; 134 135 double power = 0; 135 136 boolean status = false; 136 137 try{ 137 switch ( enEvent.getType()) {138 switch (resEvent.getType()) { 138 139 140 case UPDATE_POWER_STATE: 141 PowerStateName newPowerState = (PowerStateName) resEvent.getData(); 142 powerInterface.setPowerState(newPowerState); 143 break; 144 139 145 case POWER_STATE_CHANGED: 140 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption( enEvent, new JobRegistryImpl(resource.getFullName()), resource);141 status = powerProfile.addToPowerUsageHistory(power); 142 break; 143 144 case FREQUENCY_CHANGED:145 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption( enEvent, new JobRegistryImpl(resource.getFullName()), resource);146 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 147 status = powerProfile.addToPowerUsageHistory(power); 148 break; 149 150 case CPU_FREQUENCY_CHANGED: 151 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 146 152 status = powerProfile.addToPowerUsageHistory(power); 147 153 break; 148 154 149 155 case TASK_STARTED: 150 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption( enEvent, new JobRegistryImpl(resource.getFullName()), resource);156 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 151 157 status = powerProfile.addToPowerUsageHistory(power); 152 158 break; 153 159 154 160 case TASK_FINISHED: 155 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption( enEvent, new JobRegistryImpl(resource.getFullName()), resource);156 status = powerProfile.addToPowerUsageHistory(power); 157 break; 158 159 case RESOURCE_UTILIZATION_CHANGED:160 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption( enEvent, new JobRegistryImpl(resource.getFullName()), resource);161 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 162 status = powerProfile.addToPowerUsageHistory(power); 163 break; 164 165 case UTILIZATION_CHANGED: 166 power = powerProfile.getEnergyEstimationPlugin().estimatePowerConsumption(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 161 167 status = powerProfile.addToPowerUsageHistory(power); 162 168 break; 163 169 164 170 case AIRFLOW_STATE_CHANGED: 165 double airflow = powerProfile.getEnergyEstimationPlugin().estimateAirflow( enEvent, new JobRegistryImpl(resource.getFullName()), resource);171 double airflow = powerProfile.getEnergyEstimationPlugin().estimateAirflow(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 166 172 airflowProfile.addToAirFlowHistory(airflow); 167 173 break; 168 174 169 175 case TEMPERATURE_CHANGED: 170 double temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature( enEvent, new JobRegistryImpl(resource.getFullName()), resource);176 double temperature = powerProfile.getEnergyEstimationPlugin().estimateTemperature(resEvent, new JobRegistryImpl(resource.getFullName()), resource); 171 177 thermalProfile.addToTemperatureHistory(temperature); 172 178 break; … … 176 182 } 177 183 if(status){ 178 DataCenterWorkloadSimulator.getEventManager().sendToResources(resource.getType(), 0, new EnergyEvent(EnergyEventType.TEMPERATURE_CHANGED, resource.getFullName()));184 DataCenterWorkloadSimulator.getEventManager().sendToResources(resource.getType(), 0, new ResourceEvent(ResourceEventType.TEMPERATURE_CHANGED, resource.getFullName())); 179 185 } 180 186 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/ResourceEvent.java
r1320 r1415 2 2 3 3 import schedframe.events.Event; 4 import schedframe.events.EventReason; 4 5 import schedframe.events.EventType; 5 import schedframe.events.scheduling.EventReason;6 6 7 7 8 public class EnergyEvent implements Event{8 public class ResourceEvent implements Event{ 9 9 10 10 protected EventType type; 11 11 protected EventReason reason; 12 protected String source; 12 13 protected Object data; 13 protected String source;14 14 15 public EnergyEvent(EventType eventType, String source){15 public ResourceEvent(EventType eventType, String source){ 16 16 this.type = eventType; 17 17 this.source = source; … … 19 19 } 20 20 21 public EnergyEvent(EventType eventType, Object data, String source){21 public ResourceEvent(EventType eventType, Object data, String source){ 22 22 this.type = eventType; 23 23 this.data = data; … … 26 26 } 27 27 28 public EnergyEventType getType() {29 EnergyEventType enEventType = null;28 public ResourceEventType getType() { 29 ResourceEventType resEventType; 30 30 try{ 31 enEventType = (EnergyEventType)type;31 resEventType = (ResourceEventType)type; 32 32 } catch(Exception e){ 33 33 resEventType = null; 34 34 } 35 return enEventType; 36 37 } 38 39 public int getTag() { 40 return type.getTag(); 35 return resEventType; 41 36 } 42 37 -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/ResourceEventType.java
r1320 r1415 3 3 import schedframe.events.EventType; 4 4 5 public enum EnergyEventType implements EventType {5 public enum ResourceEventType implements EventType { 6 6 7 TASK_FINISHED(1), 8 TASK_FAILED(2), 9 TASK_CANCELED(4), 10 TASK_STARTED(8), 7 TASK_STARTED, 8 TASK_FINISHED, 11 9 12 TIMER(16), 10 POWER_STATE_CHANGED, 11 CPU_FREQUENCY_CHANGED, 12 AIRFLOW_STATE_CHANGED, 13 14 UTILIZATION_CHANGED, 15 16 TEMPERATURE_CHANGED, 17 18 UPDATE_POWER_STATE; 13 19 14 POWER_STATE_CHANGED(32),15 FREQUENCY_CHANGED(64),16 17 AIRFLOW_STATE_CHANGED(256),18 19 RESOURCE_FAILED(512),20 21 RESOURCE_UTILIZATION_CHANGED(1024),22 23 TEMPERATURE_CHANGED(2048)24 25 ;26 27 protected int tag;28 29 public int getTag() {30 return tag;31 }32 33 private EnergyEventType(int tag){34 this.tag = tag;35 }36 37 20 public String getName(){ 38 21 return toString(); -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/airthroughput/ui/ComputingResourceAirflowInterface.java
r1396 r1415 8 8 import schedframe.Parameters; 9 9 import schedframe.resources.computing.ComputingResource; 10 import schedframe.resources.computing.profiles.energy. EnergyEvent;11 import schedframe.resources.computing.profiles.energy. EnergyEventType;10 import schedframe.resources.computing.profiles.energy.ResourceEvent; 11 import schedframe.resources.computing.profiles.energy.ResourceEventType; 12 12 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowValue; 13 13 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowProfile; … … 37 37 38 38 //TO DO - notifications should be called for all resources starting form the lowest layer 39 resource.handleEvent(new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, resource.getFullName()));40 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));39 resource.handleEvent(new ResourceEvent(ResourceEventType.AIRFLOW_STATE_CHANGED, resource.getFullName())); 40 resource.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, resource.getFullName())); 41 41 return true; 42 42 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/StandardPowerStateName.java
r1396 r1415 8 8 SLEEP, 9 9 SUSPEND, 10 HIBERNATE; 10 HIBERNATE, 11 BOOT, 12 POWEROFF; 11 13 12 14 public String getLabel() { -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/plugin/EnergyEstimationPlugin.java
r1396 r1415 2 2 3 3 import schedframe.Plugin; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 8 8 public interface EnergyEstimationPlugin extends Plugin { 9 9 10 public double estimatePowerConsumption( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource);10 public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource); 11 11 12 public double estimateAirflow( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource);12 public double estimateAirflow(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource); 13 13 14 public double estimateTemperature( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource);14 public double estimateTemperature(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource); 15 15 16 16 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ComputingResourcePowerInterface.java
r1396 r1415 9 9 import schedframe.resources.ResourceStatus; 10 10 import schedframe.resources.computing.ComputingResource; 11 import schedframe.resources.computing.profiles.energy. EnergyEvent;12 import schedframe.resources.computing.profiles.energy. EnergyEventType;11 import schedframe.resources.computing.profiles.energy.ResourceEvent; 12 import schedframe.resources.computing.profiles.energy.ResourceEventType; 13 13 import schedframe.resources.computing.profiles.energy.power.PowerProfile; 14 14 import schedframe.resources.computing.profiles.energy.power.PowerState; … … 49 49 } 50 50 //notifications from all levels 51 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));51 resource.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, resource.getFullName())); 52 52 53 53 //notification from last level -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/NodePowerInterface.java
r1384 r1415 3 3 4 4 5 import java.util.List; 6 5 7 import schedframe.resources.ResourceStatus; 6 8 import schedframe.resources.computing.ComputingResource; 7 9 import schedframe.resources.computing.Node; 8 import schedframe.resources.computing.profiles.energy. EnergyEvent;9 import schedframe.resources.computing.profiles.energy. EnergyEventType;10 import schedframe.resources.computing.profiles.energy.ResourceEvent; 11 import schedframe.resources.computing.profiles.energy.ResourceEventType; 10 12 import schedframe.resources.computing.profiles.energy.power.PowerProfile; 13 import schedframe.resources.computing.profiles.energy.power.PowerState; 11 14 import schedframe.resources.computing.profiles.energy.power.PowerStateName; 12 15 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 16 import schedframe.resources.computing.profiles.energy.power.Transition; 17 import simulator.DataCenterWorkloadSimulator; 13 18 14 19 public class NodePowerInterface extends ComputingResourcePowerInterface{ … … 26 31 27 32 Node node = (Node) resource; 28 for(ComputingResource child: node.getProcessors()){33 for(ComputingResource child: node.getProcessors()){ 29 34 if(child.getPowerInterface() != null){ 30 35 child.getPowerInterface().setPowerState(state); … … 39 44 } 40 45 41 node.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, node.getFullName()));46 node.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, node.getFullName())); 42 47 43 48 //node.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, computingNode.getName())); … … 48 53 49 54 public void turnOn(){ 55 /*double timePenalty = getTransitionTime(currentPowerState, StandardPowerStateName.ON); 56 setPowerState(StandardPowerStateName.BOOT); 57 DataCenterWorkloadSimulator.getEventManager().sendToResource(resource.getFullName(), timePenalty, new ResourceEvent(ResourceEventType.UPDATE_POWER_STATE, StandardPowerStateName.ON, resource.getFullName()));*/ 50 58 setPowerState(StandardPowerStateName.ON); 51 59 } 52 60 53 61 public void turnOff(){ 62 /*double timePenalty = getTransitionTime(currentPowerState, StandardPowerStateName.OFF); 63 setPowerState(StandardPowerStateName.POWEROFF); 64 DataCenterWorkloadSimulator.getEventManager().sendToResource(resource.getFullName(), timePenalty, new ResourceEvent(ResourceEventType.UPDATE_POWER_STATE, StandardPowerStateName.OFF, resource.getFullName()));*/ 54 65 setPowerState(StandardPowerStateName.OFF); 55 66 } 56 67 68 private double getTransitionTime(PowerStateName from, PowerStateName to){ 69 List<PowerState> availablePowerStates = getSupportedPowerStates(); 70 double timePenalty = 0; 71 for(PowerState ps : availablePowerStates){ 72 if(ps.getName().getLabel().equals(from.getLabel())){ 73 List<Transition> transitions = ps.getTransitions(); 74 for(Transition t: transitions){ 75 if(t.getTo().getLabel().equals(to)){ 76 timePenalty = t.getTime(); 77 } 78 } 79 } 80 } 81 return timePenalty; 82 } 57 83 58 84 -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java
r1299 r1415 6 6 import schedframe.resources.ResourceStatus; 7 7 import schedframe.resources.computing.ComputingResource; 8 import schedframe.resources.computing.profiles.energy. EnergyEvent;9 import schedframe.resources.computing.profiles.energy. EnergyEventType;8 import schedframe.resources.computing.profiles.energy.ResourceEvent; 9 import schedframe.resources.computing.profiles.energy.ResourceEventType; 10 10 import schedframe.resources.computing.profiles.energy.power.PState; 11 11 import schedframe.resources.computing.profiles.energy.power.PowerProfile; … … 33 33 resource.setStatus(ResourceStatus.FREE); 34 34 } 35 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));35 resource.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, resource.getFullName())); 36 36 } 37 37 … … 67 67 //speed.setAmount(Double.valueOf(currentPState.getFrequency()).intValue()); 68 68 //new ResourceEventCommand(resource).execute(EnergyEventType.FREQUENCY_CHANGED); 69 resource.handleEvent(new EnergyEvent(EnergyEventType.FREQUENCY_CHANGED, resource.getFullName()));69 resource.handleEvent(new ResourceEvent(ResourceEventType.CPU_FREQUENCY_CHANGED, resource.getFullName())); 70 70 //resource.getScheduler().sendInternal(GridSimTags.SCHEDULE_NOW, DCWormsTags.UPDATE, resource.getName()); 71 71 -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/load/LoadExtension.java
r1285 r1415 7 7 import schedframe.resources.computing.extensions.ExtensionException; 8 8 import schedframe.resources.computing.extensions.ExtensionType; 9 import schedframe.resources.computing.profiles.energy. EnergyEvent;10 import schedframe.resources.computing.profiles.energy. EnergyEventType;9 import schedframe.resources.computing.profiles.energy.ResourceEvent; 10 import schedframe.resources.computing.profiles.energy.ResourceEventType; 11 11 import schedframe.resources.computing.profiles.load.ui.LoadInterface; 12 12 import schedframe.resources.devices.PhysicalResource; … … 29 29 if(loadProfile == null || loadProfile.getLoadEstimationPlugin() == null) 30 30 return false; 31 if(event.getType().getName().equals( EnergyEventType.POWER_STATE_CHANGED.getName()))31 if(event.getType().getName().equals(ResourceEventType.POWER_STATE_CHANGED.getName())) 32 32 return true; 33 else if(event.getType().getName().equals( EnergyEventType.FREQUENCY_CHANGED.getName()))33 else if(event.getType().getName().equals(ResourceEventType.CPU_FREQUENCY_CHANGED.getName())) 34 34 return true; 35 else if(event.getType().getName().equals( EnergyEventType.TASK_STARTED.getName()))35 else if(event.getType().getName().equals(ResourceEventType.TASK_STARTED.getName())) 36 36 return true; 37 else if(event.getType().getName().equals( EnergyEventType.TASK_FINISHED.getName()))37 else if(event.getType().getName().equals(ResourceEventType.TASK_FINISHED.getName())) 38 38 return true; 39 else if(event.getType().getName().equals( EnergyEventType.RESOURCE_UTILIZATION_CHANGED.getName()))39 else if(event.getType().getName().equals(ResourceEventType.UTILIZATION_CHANGED.getName())) 40 40 return true; 41 41 else return false; … … 44 44 public void handleEvent(Event event) { 45 45 46 EnergyEvent enEvent = (EnergyEvent)event;46 ResourceEvent enEvent = (ResourceEvent)event; 47 47 double load = 0; 48 48 try{ … … 54 54 break; 55 55 56 case FREQUENCY_CHANGED:56 case CPU_FREQUENCY_CHANGED: 57 57 load = loadProfile.getLoadEstimationPlugin().estimateUtlization(enEvent, new JobRegistryImpl(resource.getFullName()), resource); 58 58 loadProfile.addToLoadHistory(load); … … 69 69 break; 70 70 71 case RESOURCE_UTILIZATION_CHANGED:71 case UTILIZATION_CHANGED: 72 72 load = loadProfile.getLoadEstimationPlugin().estimateUtlization(enEvent, new JobRegistryImpl(resource.getFullName()), resource); 73 73 loadProfile.addToLoadHistory(load); -
DCWoRMS/branches/coolemall/src/schedframe/resources/computing/profiles/load/plugin/LoadEstimationPlugin.java
r1285 r1415 2 2 3 3 import schedframe.Plugin; 4 import schedframe.resources.computing.profiles.energy. EnergyEvent;4 import schedframe.resources.computing.profiles.energy.ResourceEvent; 5 5 import schedframe.resources.devices.PhysicalResource; 6 6 import schedframe.scheduling.manager.tasks.JobRegistry; … … 8 8 public interface LoadEstimationPlugin extends Plugin { 9 9 10 public double estimateUtlization( EnergyEvent event, JobRegistry jobRegistry, PhysicalResource resource);10 public double estimateUtlization(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource); 11 11 12 12 -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/Device.java
r1396 r1415 1 1 package schedframe.resources.devices; 2 2 3 import schedframe.events.Event;4 3 import schedframe.events.EventHandler; 4 import schedframe.events.EventReason; 5 5 import schedframe.events.ResourceEventCommand; 6 import schedframe.events.scheduling.EventReason;7 6 import schedframe.events.scheduling.SchedulingEvent; 8 7 import schedframe.resources.ResourceStatus; … … 11 10 import schedframe.resources.computing.extensions.Extension; 12 11 import schedframe.resources.computing.extensions.ExtensionListImpl; 13 import schedframe.resources.computing.profiles.energy. EnergyEvent;14 import schedframe.resources.computing.profiles.energy. EnergyEventType;12 import schedframe.resources.computing.profiles.energy.ResourceEvent; 13 import schedframe.resources.computing.profiles.energy.ResourceEventType; 15 14 import schedframe.resources.computing.profiles.energy.EnergyExtension; 16 15 import schedframe.resources.devices.description.DeviceDescription; … … 44 43 } 45 44 46 public void handleEvent( Event event) {45 public void handleEvent(ResourceEvent event) { 47 46 ResourceEventCommand rec = new ResourceEventCommand(this); 48 47 rec.execute(event); … … 51 50 class DeviceEventHandler implements EventHandler{ 52 51 53 public void handleResourceEvent( Event event){52 public void handleResourceEvent(ResourceEvent event){ 54 53 if (extensionList != null) { 55 54 for (Extension extension : extensionList) { … … 75 74 76 75 ResourceEventCommand rec = new ResourceEventCommand(this); 77 EnergyEvent event = new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller");76 ResourceEvent event = new ResourceEvent(ResourceEventType.AIRFLOW_STATE_CHANGED, "Resource controller"); 78 77 event.setReason(EventReason.SIM_INIT); 79 78 rec.execute(event); 80 79 81 80 rec = new ResourceEventCommand(this); 82 event = new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller");81 event = new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, "Resource controller"); 83 82 event.setReason(EventReason.SIM_INIT); 84 83 rec.execute(event); 85 84 86 85 rec = new ResourceEventCommand(this); 87 event = new EnergyEvent(EnergyEventType.TEMPERATURE_CHANGED, "Resource controller");86 event = new ResourceEvent(ResourceEventType.TEMPERATURE_CHANGED, "Resource controller"); 88 87 event.setReason(EventReason.SIM_INIT); 89 88 rec.execute(event); -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/DeviceAirflowInterface.java
r1396 r1415 7 7 8 8 import schedframe.Parameters; 9 import schedframe.resources.computing.profiles.energy. EnergyEvent;10 import schedframe.resources.computing.profiles.energy. EnergyEventType;9 import schedframe.resources.computing.profiles.energy.ResourceEvent; 10 import schedframe.resources.computing.profiles.energy.ResourceEventType; 11 11 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowValue; 12 12 import schedframe.resources.computing.profiles.energy.airthroughput.AirflowProfile; … … 37 37 38 38 //TO DO - notifications should be called for all resources starting form the lowest layer 39 resource.handleEvent(new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, resource.getFullName()));40 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));39 resource.handleEvent(new ResourceEvent(ResourceEventType.AIRFLOW_STATE_CHANGED, resource.getFullName())); 40 resource.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, resource.getFullName())); 41 41 return true; 42 42 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/DevicePowerInterface.java
r1380 r1415 7 7 8 8 import schedframe.Parameters; 9 import schedframe.resources.computing.profiles.energy. EnergyEvent;10 import schedframe.resources.computing.profiles.energy. EnergyEventType;9 import schedframe.resources.computing.profiles.energy.ResourceEvent; 10 import schedframe.resources.computing.profiles.energy.ResourceEventType; 11 11 import schedframe.resources.computing.profiles.energy.power.PowerProfile; 12 12 import schedframe.resources.computing.profiles.energy.power.PowerState; … … 32 32 currentPowerState = state; 33 33 34 resource.handleEvent(new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, resource.getFullName()));34 resource.handleEvent(new ResourceEvent(ResourceEventType.POWER_STATE_CHANGED, resource.getFullName())); 35 35 36 36 return true; -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/Fan.java
r1274 r1415 4 4 import java.util.List; 5 5 6 import schedframe.resources.computing.ComputingResource; 6 7 import schedframe.resources.devices.description.DeviceDescription; 7 8 … … 12 13 public Fan(DeviceDescription devDesc) { 13 14 super(devDesc); 14 this.chilledResources = new ArrayList<String>();15 15 } 16 16 17 17 public List<String> getChilledResources(){ 18 if(chilledResources == null){ 19 List<String> resNames = new ArrayList<String>(); 20 for(ComputingResource compRes: this.getComputingResource().getChildren()){ 21 resNames.add(compRes.getFullName()); 22 } 23 return resNames; 24 } 18 25 return chilledResources; 19 26 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/PhysicalResource.java
r1396 r1415 12 12 import schedframe.resources.computing.extensions.ExtensionType; 13 13 import schedframe.resources.computing.profiles.energy.EnergyExtension; 14 import schedframe.resources.computing.profiles.energy.ResourceEvent; 14 15 import schedframe.resources.computing.profiles.energy.airthroughput.ui.AirflowInterface; 15 16 import schedframe.resources.computing.profiles.energy.power.ui.PowerInterface; … … 28 29 29 30 30 public abstract void handleEvent( Event event);31 public abstract void handleEvent(ResourceEvent event); 31 32 32 33 public abstract EventHandler getEventHandler(); -
DCWoRMS/branches/coolemall/src/schedframe/resources/devices/description/PhysicalResourceDescription.java
r1396 r1415 30 30 import schemas.PowerUsage; 31 31 import schemas.Profile; 32 import schemas.StringValueWithUnit; 32 33 import simulator.utils.InstanceFactory; 33 34 import example.energy.DefaultEnergyEstimationPlugin; … … 82 83 } 83 84 Parameters params = extractParameters(powerProfileCharacteristic.getEnergyEstimationPlugin().getParameter()); 85 if(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerCapLevel() != null) { 86 Parameter param = new Parameter("powerCapLevel"); 87 StringValueWithUnit sv = new StringValueWithUnit(); 88 sv.setContent(String.valueOf(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerCapLevel().getContent())); 89 sv.setUnit(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerCapLevel().getUnit()); 90 param.add(sv); 91 92 if(params == null) 93 params = new Parameters(); 94 params.put("powerCapLevel", param); 95 } 96 if(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerFloorLevel() != null) { 97 Parameter param = new Parameter("powerFloorLevel"); 98 StringValueWithUnit sv = new StringValueWithUnit(); 99 sv.setContent(String.valueOf(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerFloorLevel().getContent())); 100 sv.setUnit(powerProfileCharacteristic.getEnergyEstimationPlugin().getPowerFloorLevel().getUnit()); 101 param.add(sv); 102 103 if(params == null) 104 params = new Parameters(); 105 params.put("powerFloorLevel", param); 106 } 84 107 energyEstimationPlugin.init(params); 85 108 } -
DCWoRMS/branches/coolemall/src/schedframe/resources/units/StandardResourceUnitName.java
r1396 r1415 37 37 COST("cost"), 38 38 39 PE("processing Element");39 PE("processingelement"); 40 40 41 41 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/ResourceItem.java
r1396 r1415 1 1 package schedframe.scheduling; 2 2 3 import java.util.HashSet;4 3 import java.util.LinkedList; 5 4 import java.util.List; 6 5 import java.util.Map; 7 6 import java.util.Set; 7 import java.util.TreeSet; 8 8 9 9 import schedframe.resources.computing.ComputingResource; … … 16 16 17 17 protected Map<ResourceUnitName, ResourceUnit> usedResources; 18 protected Set<String> visitedResources;18 protected Set<String> resourceNames; 19 19 20 20 public ResourceItem(Map<ResourceUnitName, ResourceUnit> usedResources){ 21 21 this.usedResources = usedResources; 22 this. visitedResources = new HashSet<String>();22 this.resourceNames = new TreeSet<String>(); 23 23 saveResourceNames(); 24 24 } … … 29 29 30 30 public Set<String> getResourceNames(){ 31 return visitedResources;31 return resourceNames; 32 32 } 33 33 … … 43 43 List<ComputingResource> resources = compResource.getChildren(); 44 44 if(resources.isEmpty()){ 45 if(! visitedResources.contains(compResource.getFullName())){46 visitedResources.add(compResource.getFullName());45 if(!resourceNames.contains(compResource.getFullName())){ 46 resourceNames.add(compResource.getFullName()); 47 47 } 48 48 } else { -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/Scheduler.java
r1362 r1415 63 63 List<Integer> schedRes = GridSim.getGridResourceList(); 64 64 schedRes.add(schedulerIdObj); 65 66 /*if (supportsAR) {67 res = GridSim.getAdvancedReservationList();68 res.add(resIdObj);69 } */70 71 65 } 72 66 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/resources/ClusterResourceManager.java
r1247 r1415 1 1 package schedframe.scheduling.manager.resources; 2 2 3 import java.util.ArrayList;4 3 import java.util.List; 5 4 import java.util.Properties; 6 5 7 import schedframe.exceptions.ResourceException;8 6 import schedframe.resources.StandardResourceType; 7 import schedframe.resources.computing.ComputingResource; 9 8 import schedframe.resources.computing.Node; 10 import schedframe.resources.computing.ComputingResource;11 9 import schedframe.resources.computing.Processor; 12 10 import schedframe.scheduling.Scheduler; … … 22 20 @SuppressWarnings("unchecked") 23 21 public List<Node> getNodes(){ 24 try { 25 return (List<Node>) getResourcesOfType(StandardResourceType.Node); 26 } catch (ResourceException e) { 27 return new ArrayList<Node>(); 28 } 22 return (List<Node>) getResourcesOfType(StandardResourceType.Node); 29 23 } 30 24 31 25 @SuppressWarnings("unchecked") 32 26 public List<Processor> getProcessors(){ 33 try { 34 return (List<Processor>) getResourcesOfType(StandardResourceType.Processor); 35 } catch (Exception e) { 36 return new ArrayList<Processor>(); 37 } 27 return (List<Processor>) getResourcesOfType(StandardResourceType.Processor); 38 28 } 39 29 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/resources/LocalResourceManager.java
r1396 r1415 107 107 } 108 108 109 public List<? extends ComputingResource> getResourcesOfType(ResourceType type) throws ResourceException{109 public List<? extends ComputingResource> getResourcesOfType(ResourceType type) { 110 110 List<ComputingResource> resourcesOfType = new ArrayList<ComputingResource>(); 111 111 for (ComputingResource resource : computingResources) { … … 118 118 } 119 119 120 public List<? extends ComputingResource> getResourcesByTypeWithStatus(ResourceType type, ResourceStatus status) 121 throws ResourceException { 120 public List<? extends ComputingResource> getResourcesByTypeWithStatus(ResourceType type, ResourceStatus status){ 122 121 123 122 List<ComputingResource> resourcesOfType = new ArrayList<ComputingResource>(); … … 225 224 List<ComputingResource> computingResources = null; 226 225 if(areResourcesAchievable(StandardResourceType.Core)){ 227 try { 228 computingResources = (List<ComputingResource>) getResourcesOfType(StandardResourceType.Core); 229 } catch (ResourceException e) { 230 throw new RuntimeException("DCWorms internal error"); 231 } 226 227 computingResources = (List<ComputingResource>) getResourcesOfType(StandardResourceType.Core); 228 232 229 PEUnit peUnit = new ProcessingElements(computingResources); 233 230 peUnits = new ArrayList<ResourceUnit>(); … … 236 233 237 234 else if(areResourcesAchievable(StandardResourceType.Processor)){ 238 try { 239 computingResources = (List<ComputingResource>) getResourcesOfType(StandardResourceType.Processor); 240 } catch (ResourceException e) { 241 throw new RuntimeException("DCWorms internal error"); 242 } 235 236 computingResources = (List<ComputingResource>) getResourcesOfType(StandardResourceType.Processor); 237 243 238 PEUnit peUnit = new ProcessingElements(computingResources); 244 239 peUnits = new ArrayList<ResourceUnit>(); -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/manager/tasks/JobRegistryImpl.java
r1396 r1415 55 55 Set<String> visitedResource = task.getAllocatedResources().getLast().getResourceNames(); 56 56 for(String res: visitedResource){ 57 if(res. contains(context)){57 if(res.equals(context) || res.substring(0, res.lastIndexOf("/")).contains(context)){ 58 58 taskList.add(task); 59 59 break; 60 60 } 61 61 } 62 if(task.getSchedulerName(). contains(context)) {62 if(task.getSchedulerName().equals(context)) { 63 63 taskList.add(task); 64 64 } -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/plugin/local/LocalSchedulingPlugin.java
r1396 r1415 1 1 package schedframe.scheduling.plugin.local; 2 2 3 import schedframe.events.scheduling.SchedulingEvent;4 import schedframe.events.scheduling.SchedulingResponseType;5 import schedframe.scheduling.manager.resources.ResourceManager;6 import schedframe.scheduling.manager.tasks.JobRegistry;7 import schedframe.scheduling.plugin.ModuleList;8 3 import schedframe.scheduling.plugin.SchedulingPlugin; 9 import schedframe.scheduling.queue.TaskQueueList;10 4 11 5 12 6 public interface LocalSchedulingPlugin extends SchedulingPlugin { 13 7 14 public SchedulingResponseType handleResourceAllocationViolation(SchedulingEvent event,15 TaskQueueList queues,16 JobRegistry jobRegistry,17 ResourceManager resourceManager, ModuleList modules);18 8 19 9 } -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/policy/global/GlobalManagementSystem.java
r1385 r1415 78 78 return; 79 79 } 80 81 80 registerWorkloadUnit(wu); 82 81 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/policy/local/LocalManagementSystem.java
r1396 r1415 19 19 import schedframe.events.scheduling.StartTaskExecutionEvent; 20 20 import schedframe.events.scheduling.TaskFinishedEvent; 21 import schedframe.events.scheduling.TaskPausedEvent; 21 22 import schedframe.events.scheduling.TaskRequestedTimeExpiredEvent; 23 import schedframe.events.scheduling.TaskResumedEvent; 22 24 import schedframe.exceptions.ResourceException; 23 25 import schedframe.resources.StandardResourceType; 24 26 import schedframe.resources.computing.ComputingResource; 25 import schedframe.resources.computing.profiles.energy. EnergyEvent;26 import schedframe.resources.computing.profiles.energy. EnergyEventType;27 import schedframe.resources.computing.profiles.energy.ResourceEvent; 28 import schedframe.resources.computing.profiles.energy.ResourceEventType; 27 29 import schedframe.resources.units.PEUnit; 28 30 import schedframe.resources.units.ProcessingElements; … … 163 165 String[] ids = (String[]) ev.get_data(); 164 166 execTask = jobRegistry.getTask(ids[0], ids[1]); 165 taskPause(execTask);167 pauseTask(execTask); 166 168 if (pluginSupportsEvent(tag)) { 167 SchedulingEvent event = new SchedulingEvent(SchedulingEventType.TASK_PAUSED);169 SchedulingEvent event = new TaskPausedEvent(ids[0], ids[1]); 168 170 SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 169 171 queues, jobRegistry, getResourceManager(), moduleList); … … 176 178 String[] ids = (String[]) ev.get_data(); 177 179 execTask = jobRegistry.getTask(ids[0], ids[1]); 178 taskResume(execTask, execTask.getAllocatedResources().getLast().getResourceUnits(), true);180 resumeTask(execTask, execTask.getAllocatedResources().getLast().getResourceUnits(), true); 179 181 if (pluginSupportsEvent(tag)) { 180 SchedulingEvent event = new StartTaskExecutionEvent(ids[0], ids[1]);182 SchedulingEvent event = new TaskResumedEvent(ids[0], ids[1]); 181 183 SchedulingPlanInterface<?> decision = schedulingPlugin.schedule(event, 182 184 queues, jobRegistry, getResourceManager(), moduleList); … … 189 191 Object[] data = (Object[]) ev.get_data(); 190 192 execTask = jobRegistry.getTask((String)data[0], (String)data[1]); 191 double migrationTime = execTimeEstimationPlugin.estimateMigrationTime(new StartTaskExecutionEvent((String)data[0], (String)data[1]), execTask, execTask.getAllocatedResources().getLast().getResourceUnits(), (Map<ResourceUnitName, ResourceUnit>)data[2]); 193 double migrationTime = execTimeEstimationPlugin.estimateMigrationTime(new StartTaskExecutionEvent((String)data[0], 194 (String)data[1]), execTask, execTask.getAllocatedResources().getLast().getResourceUnits(), (Map<ResourceUnitName, ResourceUnit>)data[2]); 192 195 scheduler.sendInternal(migrationTime, DCWormsTags.TASK_MOVE, data); 193 196 } … … 197 200 Object[] data = (Object[]) ev.get_data(); 198 201 execTask = jobRegistry.getTask((String)data[0], (String)data[1]); 199 taskMove(execTask, (Map<ResourceUnitName, ResourceUnit>)data[2]);202 moveTask(execTask, (Map<ResourceUnitName, ResourceUnit>)data[2]); 200 203 if (pluginSupportsEvent(tag)) { 201 204 SchedulingEvent event = new StartTaskExecutionEvent((String)data[0], (String)data[1]); … … 209 212 case DCWormsTags.TASK_EXECUTION_CHANGED: 210 213 execTask = (ExecTask) ev.get_data(); 211 updateTaskExecutionPhase(execTask , SchedulingEventType.RESOURCE_STATE_CHANGED);214 updateTaskExecutionPhase(execTask); 212 215 break; 213 216 … … 231 234 } 232 235 break; 233 } 234 } 235 236 237 public void taskPause(ExecTask execTask) { 236 default: 237 238 break; 239 } 240 } 241 242 243 protected void pauseTask(ExecTask execTask) { 238 244 if (execTask == null) { 239 245 return; … … 246 252 getAllocationManager().freeResources(lastUsed, true); 247 253 248 saveExecutionHistory(exec, exec.get CompletionPercentage(), exec.getEstimatedDuration());254 saveExecutionHistory(exec, exec.getExecutionProfile().getCompletionPercentage(), exec.getEstimatedDuration()); 249 255 250 256 ExecTaskFilter filter = new ExecTaskFilter(exec.getUniqueId(), -1); … … 252 258 253 259 PEUnit peUnit = (PEUnit)lastUsed.get(StandardResourceUnitName.PE); 254 updateComputingResources(peUnit, EnergyEventType.TASK_FINISHED, exec);260 updateComputingResources(peUnit, ResourceEventType.TASK_FINISHED, exec); 255 261 } catch (Exception e) { 256 262 // TODO Auto-generated catch block … … 260 266 } 261 267 262 p ublic void taskResume(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> resources, boolean exclusive) {268 protected void resumeTask(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> resources, boolean exclusive) { 263 269 if (execTask == null) { 264 270 return; … … 278 284 279 285 PEUnit peUnit = (PEUnit)resources.get(StandardResourceUnitName.PE); 280 updateComputingResources(peUnit, EnergyEventType.TASK_STARTED, exec);286 updateComputingResources(peUnit, ResourceEventType.TASK_STARTED, exec); 281 287 } 282 288 … … 288 294 } 289 295 290 p ublic void taskMove(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> map) {291 taskPause(execTask);292 taskResume(execTask, map, false);296 protected void moveTask(ExecTask execTask, Map<ResourceUnitName, ResourceUnit> map) { 297 pauseTask(execTask); 298 resumeTask(execTask, map, false); 293 299 } 294 300 … … 351 357 352 358 PEUnit peUnit = (PEUnit)choosenResources.get(StandardResourceUnitName.PE); 353 updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec);359 updateComputingResources(peUnit, ResourceEventType.UTILIZATION_CHANGED, exec); 354 360 355 361 … … 377 383 378 384 int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(SchedulingEventType.START_TASK_EXECUTION), 379 execTask, resources, exec.get CompletionPercentage())).intValue();380 381 saveExecutionHistory(exec, exec.get CompletionPercentage(), phaseDuration);385 execTask, resources, exec.getExecutionProfile().getCompletionPercentage())).intValue(); 386 387 saveExecutionHistory(exec, exec.getExecutionProfile().getCompletionPercentage(), phaseDuration); 382 388 if(exec.getExecutionProfile().isLast()){ 383 389 scheduler.sendInternal(phaseDuration, DCWormsTags.TASK_EXECUTION_FINISHED, execTask);; … … 387 393 388 394 PEUnit peUnit = (PEUnit)resources.get(StandardResourceUnitName.PE); 389 updateComputingResources(peUnit, EnergyEventType.TASK_STARTED, exec);395 updateComputingResources(peUnit, ResourceEventType.TASK_STARTED, exec); 390 396 391 397 } … … 429 435 430 436 PEUnit peUnit = (PEUnit)lastUsed.get(StandardResourceUnitName.PE); 431 updateComputingResources(peUnit, EnergyEventType.TASK_FINISHED, exec);437 updateComputingResources(peUnit, ResourceEventType.TASK_FINISHED, exec); 432 438 433 439 log.debug(execTask.getJobId() + "_" + execTask.getId() + " finished execution on " + new DateTime()); 434 440 log.info(DCWormsConstants.USAGE_MEASURE_NAME + ": " + calculateTotalLoad()); 435 441 436 updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec);442 updateComputingResources(peUnit, ResourceEventType.UTILIZATION_CHANGED, exec); 437 443 } 438 444 … … 452 458 //System.out.println("--- upadteProgressX: " + Sim_system.sim_clock() ); 453 459 //System.out.println("taskId: " + exec.getId() + "; completion percentage: " + exec.getCompletionPercentage() + "; timespan: " + timeSpan + "; estimatedDuration: " + execHistItem.getCompletionPercentage()); 454 exec.setCompletionPercentage(exec.getCompletionPercentage() + 100 * (timeSpan / (execHistItem.getEstimatedDuration()) * (1.0 - execHistItem.getCompletionPercentage()/100.0))); 460 exec.getExecutionProfile().setCompletionPercentage(exec.getExecutionProfile().getCompletionPercentage() + 100 * (timeSpan / (execHistItem.getEstimatedDuration()) * (1.0 - execHistItem.getCompletionPercentage()/100.0))); 461 exec.setTotalCompletionPercentage(exec.getTotalCompletionPercentage() + 100 * (timeSpan / execHistItem.getEstimatedDuration()) * exec.getExecutionProfile().getCurrentResourceConsumption().getLenght() / exec.getExecutionProfile().getLength()); 455 462 //System.out.println("newProgress: " + exec.getCompletionPercentage() ); 456 463 … … 458 465 } 459 466 460 private void updateComputingResources(PEUnit peUnit, EnergyEventType eventType, Object obj){467 private void updateComputingResources(PEUnit peUnit, ResourceEventType eventType, Object obj){ 461 468 if(peUnit instanceof ProcessingElements){ 462 469 ProcessingElements pes = (ProcessingElements) peUnit; 463 470 for (ComputingResource resource : pes) { 464 resource.handleEvent(new EnergyEvent(eventType, obj, scheduler.getFullName()));471 resource.handleEvent(new ResourceEvent(eventType, obj, scheduler.getFullName())); 465 472 //DataCenterWorkloadSimulator.getEventManager().sendToResources(resource.getType(), 0, new EnergyEvent(eventType, obj)); 466 473 } … … 480 487 return; 481 488 } 482 resource.handleEvent(new EnergyEvent(eventType, obj, scheduler.getFullName()));489 resource.handleEvent(new ResourceEvent(eventType, obj, scheduler.getFullName())); 483 490 } 484 491 } … … 492 499 493 500 int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(SchedulingEventType.RESOURCE_STATE_CHANGED), 494 execTask, choosenResources, exec.get CompletionPercentage())).intValue();501 execTask, choosenResources, exec.getExecutionProfile().getCompletionPercentage())).intValue(); 495 502 496 503 ExecutionHistoryItem execHistItem = exec.getExecutionHistory().getLast(); 497 double lastTimeStamp = execHistItem.getTimeStamp().getMillis() /1000;498 if(DoubleMath.subtract((lastTimeStamp + execHistItem.getEstimatedDuration()), (new DateTime().getMillis() /1000 + phaseDuration)) == 0.0){504 double lastTimeStamp = execHistItem.getTimeStamp().getMillis() / 1000; 505 if(DoubleMath.subtract((lastTimeStamp + execHistItem.getEstimatedDuration()), (new DateTime().getMillis() / 1000 + phaseDuration)) == 0.0){ 499 506 continue; 500 507 } … … 504 511 //System.out.println("completionPercantage: " + exec.getCompletionPercentage() + "; basic duration: " +exec.getResourceConsumptionProfile().getCurrentResourceConsumption().getDuration() + "; phaseDuration: " + phaseDuration); 505 512 506 saveExecutionHistory(exec, exec.get CompletionPercentage(), phaseDuration);513 saveExecutionHistory(exec, exec.getExecutionProfile().getCompletionPercentage(), phaseDuration); 507 514 508 515 if(exec.getExecutionProfile().isLast()){ … … 522 529 } 523 530 524 protected void updateTaskExecutionPhase(ExecTask execTask , SchedulingEventType schedEvType) {531 protected void updateTaskExecutionPhase(ExecTask execTask) { 525 532 526 533 if (execTask.getStatus() == DCWormsTags.INEXEC) { … … 535 542 Map<ResourceUnitName, ResourceUnit> choosenResources = exec.getAllocatedResources().getLast().getResourceUnits(); 536 543 537 int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent( schedEvType),538 execTask, choosenResources, exec.get CompletionPercentage())).intValue();539 540 saveExecutionHistory(exec, exec.get CompletionPercentage(), phaseDuration);544 int phaseDuration = Double.valueOf(execTimeEstimationPlugin.execTimeEstimation(new SchedulingEvent(SchedulingEventType.TASK_EXECUTION_CHANGED), 545 execTask, choosenResources, exec.getExecutionProfile().getCompletionPercentage())).intValue(); 546 547 saveExecutionHistory(exec, exec.getExecutionProfile().getCompletionPercentage(), phaseDuration); 541 548 542 549 if(exec.getExecutionProfile().isLast()){ … … 547 554 548 555 PEUnit peUnit = (PEUnit)exec.getAllocatedResources().getLast().getResourceUnits().get(StandardResourceUnitName.PE); 549 updateComputingResources(peUnit, EnergyEventType.RESOURCE_UTILIZATION_CHANGED, exec);556 updateComputingResources(peUnit, ResourceEventType.UTILIZATION_CHANGED, exec); 550 557 } 551 558 } 552 559 553 p ublicdouble calculateTotalLoad() {560 protected double calculateTotalLoad() { 554 561 555 562 DCwormsAccumulator loadAcc = new DCwormsAccumulator(); 556 try { 557 for(ComputingResource compRes: getResourceManager().getResourcesOfType(StandardResourceType.Node)){ 558 loadAcc.add(compRes.getLoadInterface().getRecentUtilization().getValue()); 559 } 560 } catch (ResourceException e) { 561 // TODO Auto-generated catch block 562 e.printStackTrace(); 563 } 564 563 564 for(ComputingResource compRes: getResourceManager().getResourcesOfType(StandardResourceType.Node)){ 565 loadAcc.add(compRes.getLoadInterface().getRecentUtilization().getValue()); 566 } 567 565 568 return loadAcc.getMean(); 566 569 } … … 703 706 704 707 private void saveExecutionHistory(Executable exec, double completionPercentage, double estimatedDuration){ 705 706 708 ExecutionHistoryItem execHistoryItem = new ExecutionHistoryItem(new DateTime()); 707 709 execHistoryItem.setCompletionPercentage(completionPercentage); … … 710 712 execHistoryItem.setStatus(exec.getStatus()); 711 713 exec.addExecHistory(execHistoryItem); 712 713 714 } 714 715 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/tasks/phases/ExecutionPhase.java
r1207 r1415 13 13 import org.qcg.broker.schemas.resreqs.ResourceConsumptionType; 14 14 15 public class ResourceConsumption{15 public class ExecutionPhase { 16 16 17 17 protected String id; 18 18 protected Map<String, String> referenceHardware; 19 protected long duration; 20 protected List<PhaseBehaviour> phaseBehaviourList; 19 protected long originDuration; 20 protected long lenght; 21 protected List<PhaseSystemLoad> systemLoad; 21 22 22 public ResourceConsumption(long duration, ComputingResourceBaseTypeItem item[]){23 public ExecutionPhase(long duration, ComputingResourceBaseTypeItem item[]){ 23 24 this.id = null; 24 25 this.referenceHardware = null; 25 this. duration = duration;26 this. phaseBehaviourList = new ArrayList<PhaseBehaviour>();26 this.originDuration = duration; 27 this.systemLoad = new ArrayList<PhaseSystemLoad>(); 27 28 for(ComputingResourceBaseTypeItem compResItem: item){ 28 29 ComputingResourceParameterType hostParameter = compResItem.getHostParameter(); 29 Phase Behaviour pb = new PhaseBehaviour(hostParameter.getName().toString());30 phaseBehaviourList.add(pb);30 PhaseSystemLoad pb = new PhaseSystemLoad(hostParameter.getName().toString()); 31 systemLoad.add(pb); 31 32 } 33 this.lenght = duration; 32 34 } 33 35 34 public ResourceConsumption(ResourceConsumptionType resConsumptionType){36 public ExecutionPhase(ResourceConsumptionType resConsumptionType){ 35 37 this.id = resConsumptionType.getId(); 36 38 this.referenceHardware = new HashMap<String, String>(); 39 this.originDuration = resConsumptionType.getDuration().toLong() / 1000; 40 41 double speed = 1; 37 42 if(resConsumptionType.getReferenceHardware() != null){ 38 43 for (int i = 0; i < resConsumptionType.getReferenceHardware().getReference().length; i++){ 39 44 StringParameterType spt = resConsumptionType.getReferenceHardware().getReference(i); 40 referenceHardware.put(spt.getName(), spt.getContent()); 45 this.referenceHardware.put(spt.getName(), spt.getContent()); 46 if(spt.getName().equals("cpu_maxfreq")){ 47 speed = new Double(spt.getContent()); 48 } 41 49 } 42 50 } 43 this. duration = resConsumptionType.getDuration().toLong()/1000;44 this.phaseBehaviourList = new ArrayList<PhaseBehaviour>();51 this.systemLoad = new ArrayList<PhaseSystemLoad>(); 52 int nrOfThreads = 1; 45 53 for(PhaseBehaviourType pbt: resConsumptionType.getBehaviour()){ 46 PhaseBehaviour pb = new PhaseBehaviour(pbt); 47 phaseBehaviourList.add(pb); 54 PhaseSystemLoad pb = new PhaseSystemLoad(pbt); 55 this.systemLoad.add(pb); 56 if(pbt.getName().equals("PM_Threads")){ 57 nrOfThreads = new Double(pbt.getParameterTypeChoice().getParameterTypeChoiceItem(0).getParameterValue().getContent()).intValue(); 58 } 48 59 } 60 this.lenght = (long) (originDuration * nrOfThreads * speed); 49 61 } 50 62 … … 62 74 63 75 public long getDuration() { 64 return duration;76 return originDuration; 65 77 } 66 78 67 public List<PhaseBehaviour> getBehaviourList() { 68 return phaseBehaviourList; 79 public List<PhaseSystemLoad> getSystemLoad() { 80 return systemLoad; 81 } 82 83 public long getLenght() { 84 return lenght; 69 85 } 70 86 -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/tasks/phases/ExecutionProfile.java
r1362 r1415 5 5 public class ExecutionProfile { 6 6 7 protected LinkedList< ResourceConsumption> resourceConsumptionList;7 protected LinkedList<ExecutionPhase> resourceConsumptionList; 8 8 protected long usefulWork; 9 protected double completionPercentage; 9 10 private int currentPhase; 11 10 12 11 public ExecutionProfile(LinkedList< ResourceConsumption> resourceConsumptionList) {13 public ExecutionProfile(LinkedList<ExecutionPhase> resourceConsumptionList) { 12 14 this.resourceConsumptionList = resourceConsumptionList; 15 this.completionPercentage = 0; 13 16 this.currentPhase = 0; 14 17 } 15 18 16 public LinkedList< ResourceConsumption> getResourceConsumptionList(){19 public LinkedList<ExecutionPhase> getResourceConsumptionList(){ 17 20 return resourceConsumptionList; 18 21 } 19 22 20 public ResourceConsumptiongetCurrentResourceConsumption(){23 public ExecutionPhase getCurrentResourceConsumption(){ 21 24 return resourceConsumptionList.get(currentPhase); 22 25 } … … 44 47 return false; 45 48 } 49 50 public double getCompletionPercentage() { 51 return completionPercentage; 52 } 53 54 public void setCompletionPercentage(double completionPercentage) { 55 this.completionPercentage = completionPercentage; 56 } 57 58 public long getLength() { 59 long length = 0; 60 for(ExecutionPhase execPhase: resourceConsumptionList){ 61 length = length + execPhase.getLenght(); 62 } 63 return length; 64 } 46 65 } -
DCWoRMS/branches/coolemall/src/schedframe/scheduling/tasks/phases/PhaseSystemLoad.java
r883 r1415 3 3 import org.qcg.broker.schemas.resreqs.PhaseBehaviourType; 4 4 5 public class Phase Behaviour{5 public class PhaseSystemLoad { 6 6 7 7 protected String resName; 8 8 protected double utilization; 9 9 10 Phase Behaviour(String resName, double utilization) {10 PhaseSystemLoad(String resName, double utilization) { 11 11 this.resName = resName; 12 12 this.utilization = utilization; 13 13 } 14 14 15 Phase Behaviour(String resName) {15 PhaseSystemLoad(String resName) { 16 16 this.resName = resName; 17 17 this.utilization = 100; 18 18 } 19 19 20 Phase Behaviour(PhaseBehaviourType pbt) {20 PhaseSystemLoad(PhaseBehaviourType pbt) { 21 21 this.resName = pbt.getName(); 22 22 this.utilization = pbt.getParameterTypeChoice().getParameterTypeChoiceItem(0).getParameterValue().getContent(); -
DCWoRMS/branches/coolemall/src/simulator/DataCenterWorkloadSimulator.java
r1346 r1415 271 271 272 272 273 boolean traceFlag = true; // means: trace GridSim events/activities 274 String[] excludeFromFile = { "" }, excludeFromProcessing = { "" }; 275 276 GridSimWrapper.init(numUser, calendar, traceFlag, excludeFromFile, 277 excludeFromProcessing, null); 273 boolean traceFlag = false; // means: trace GridSim events/activities 274 275 GridSimWrapper.init(numUser, calendar, traceFlag); 278 276 DateTimeUtilsExt.initVirtualTimeAccess(calendar); 279 277 -
DCWoRMS/branches/coolemall/src/simulator/stats/DCwormsMetricsCalculator.java
r1396 r1415 14 14 public List<MetricsStats> calulateMetrics(){ 15 15 List<MetricsStats> metrics = new ArrayList<MetricsStats>(); 16 /*for(String resourceTypeName: metricsData.keySet()){ 17 MetricsStats metric = new MetricsStats(resourceTypeName, "energyUsage", metricsData.get(resourceTypeName).getMax()); 18 metrics.add(metric);} 19 }*/ 16 17 /* 20 18 metrics.add(calculateITComputingEnergyConsumption()); 21 19 metrics.add(calculateITEnergyConsumption()); … … 34 32 metrics.add(calculateUsefulWork()); 35 33 metrics.add(calculateProductivity()); 36 34 */ 35 37 36 return metrics; 38 37 }
Note: See TracChangeset
for help on using the changeset viewer.