Changeset 512
- Timestamp:
- 10/12/12 13:04:31 (13 years ago)
- Location:
- DCWoRMS/trunk/src
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
DCWoRMS/trunk/src/example/localplugin/FCFSCPUFreqScalingClusterLocalPlugin.java
r497 r512 9 9 10 10 import schedframe.events.scheduling.SchedulingEvent; 11 import schedframe.events.scheduling.TaskFinishedEvent;12 import schedframe.events.scheduling.TaskRequestedTimeExpiredEvent;13 11 import schedframe.resources.ResourceStatus; 14 12 import schedframe.resources.computing.ComputingResource; … … 18 16 import schedframe.resources.units.ResourceUnitName; 19 17 import schedframe.resources.units.StandardResourceUnitName; 20 import schedframe.scheduling.UsedResourcesList;21 18 import schedframe.scheduling.manager.resources.ClusterResourceManager; 22 19 import schedframe.scheduling.manager.resources.ResourceManager; … … 29 26 import schedframe.scheduling.tasks.TaskInterface; 30 27 import schedframe.scheduling.tasks.WorkloadUnit; 31 import dcworms.schedframe.scheduling.Executable;32 28 33 29 public class FCFSCPUFreqScalingClusterLocalPlugin extends BaseLocalSchedulingPlugin { … … 51 47 52 48 case START_TASK_EXECUTION: 53 49 case TASK_FINISHED: 54 50 // check all tasks in queue 55 51 for (int i = 0; i < q.size(); i++) { … … 62 58 if (choosenResources != null) { 63 59 addToSchedulingPlan(plan, task, choosenResources); 64 ProcessingElements pes = (ProcessingElements)choosenResources.get(StandardResourceUnitName.PE);65 List<Processor> processors = new ArrayList<Processor>();66 for(ComputingResource res : pes){67 processors.add((Processor) res);68 }69 adjustFrequency(ResourceStatus.BUSY,processors);70 60 } 71 61 } 72 62 } 73 break; 74 75 case TASK_FINISHED: 76 TaskFinishedEvent finEvent = (TaskFinishedEvent) event; 77 Executable exec = (Executable) jobRegistry.getExecutable(finEvent.getJobId(), finEvent.getTaskId()); 78 UsedResourcesList usedResourcesList = exec.getUsedResources(); 79 ProcessingElements pes = (ProcessingElements)usedResourcesList.getLast().getResourceUnits().get(StandardResourceUnitName.PE); 80 List<Processor> processors = new ArrayList<Processor>(); 81 for(ComputingResource res : pes){ 82 processors.add((Processor) res); 83 allocatedCPUs.add((Processor) res); 84 } 85 adjustFrequency(ResourceStatus.FREE, processors); 86 break; 87 88 case TASK_REQUESTED_TIME_EXPIRED: 89 TaskRequestedTimeExpiredEvent timExpEvent = (TaskRequestedTimeExpiredEvent) event; 90 exec = (Executable) jobRegistry.getExecutable(timExpEvent.getJobId(), timExpEvent.getTaskId()); 91 usedResourcesList = exec.getUsedResources(); 92 pes = (ProcessingElements)usedResourcesList.getLast().getResourceUnits().get(StandardResourceUnitName.PE); 93 processors = new ArrayList<Processor>(); 94 for(ComputingResource res : pes){ 95 allocatedCPUs.remove((Processor) res); 96 } 97 // check all tasks in queue 98 for (int i = 0; i < q.size(); i++) { 99 WorkloadUnit job = q.get(i); 100 TaskInterface<?> task = (TaskInterface<?>) job; 101 // if status of the tasks in READY 102 if (task.getStatus() == DCWormsTags.READY) { 103 104 Map<ResourceUnitName, ResourceUnit> choosenResources = chooseResourcesForExecution(resourceManager, task); 105 if (choosenResources != null) { 106 addToSchedulingPlan(plan, task, choosenResources); 107 pes = (ProcessingElements)choosenResources.get(StandardResourceUnitName.PE); 108 processors = new ArrayList<Processor>(); 109 for(ComputingResource res : pes){ 110 processors.add((Processor) res); 111 } 112 adjustFrequency(ResourceStatus.BUSY, processors); 113 } 114 } 115 } 116 break; 63 adjustFrequency(resourceManager.getProcessors()); 117 64 } 118 65 return plan; … … 160 107 return map; 161 108 } 109 110 private void adjustFrequency(List<Processor> processors){ 162 111 163 private void adjustFrequency(ResourceStatus status, List<Processor> processors){ 164 switch(status){ 165 case BUSY: 166 for(Processor cpu: processors){ 167 try { 168 if(cpu.getPowerInterface().getSupportedPStates().containsKey("P0")) 169 cpu.getPowerInterface().setPState("P0"); 170 } catch (NoSuchFieldException e) { 171 // TODO Auto-generated catch block 172 e.printStackTrace(); 173 } 112 for(Processor cpu: processors){ 113 if(cpu.getStatus() == ResourceStatus.FREE) { 114 if(cpu.getPowerInterface().getSupportedPStates().containsKey("P3")) 115 cpu.getPowerInterface().setPState("P3"); 174 116 } 175 break; 176 case FREE: 177 for(Processor cpu: processors){ 178 try { 179 if(cpu.getPowerInterface().getSupportedPStates().containsKey("P3")) 180 cpu.getPowerInterface().setPState("P3"); 181 } catch (NoSuchFieldException e) { 182 // TODO Auto-generated catch block 183 e.printStackTrace(); 184 } 117 else{ 118 if(cpu.getPowerInterface().getSupportedPStates().containsKey("P0")) 119 cpu.getPowerInterface().setPState("P0"); 185 120 } 186 break; 121 187 122 } 123 188 124 } 189 125 126 190 127 } -
DCWoRMS/trunk/src/schedframe/ResourceController.java
r490 r512 18 18 protected static Scheduler scheduler; 19 19 protected static List<ComputingResource> computingResources; 20 protected Deque<Initializable> toInit;20 protected List<Initializable> toInit; 21 21 protected Set<String> compResLayers; 22 22 … … 137 137 } 138 138 139 public void setInitList( Deque<Initializable> toI) {139 public void setInitList(List<Initializable> toI) { 140 140 toInit = toI; 141 141 } 142 142 143 public Deque<Initializable> getToInit() {143 public List<Initializable> getToInit() { 144 144 return toInit; 145 145 } -
DCWoRMS/trunk/src/schedframe/resources/computing/ComputingResource.java
r495 r512 46 46 protected String name; 47 47 protected ResourceType type; 48 protected String category; 48 49 protected ResourceStatus status; 49 50 … … 63 64 this.type = resDesc.getType(); 64 65 this.name = resDesc.getId(); 66 this.category = resDesc.getCategory(); 65 67 this.status = ResourceStatus.FREE; 66 68 this.extensionList = new ExtensionListImpl(1); … … 230 232 } 231 233 234 public String getCategory(){ 235 return category; 236 } 237 232 238 public PowerInterface getPowerInterface(){ 233 239 if (extensionList != null) { … … 297 303 public void initiate(){ 298 304 299 ResourceEventCommand rec = new ResourceEventCommand(this);305 /*ResourceEventCommand rec = new ResourceEventCommand(this); 300 306 EnergyEvent event = new EnergyEvent(EnergyEventType.AIRFLOW_STATE_CHANGED, "Resource controller"); 301 307 event.setReason(EventReason.SIM_INIT); 302 rec.execute(event); 303 304 rec = new ResourceEventCommand(this); 305 event = new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller"); 308 rec.execute(event);*/ 309 ResourceEventCommand rec = new ResourceEventCommand(this); 310 EnergyEvent event = new EnergyEvent(EnergyEventType.POWER_STATE_CHANGED, "Resource controller"); 306 311 event.setReason(EventReason.SIM_INIT); 307 312 rec.execute(event); -
DCWoRMS/trunk/src/schedframe/resources/computing/description/ComputingResourceDescription.java
r477 r512 33 33 protected AirThroughputProfile airThroughputProfile; 34 34 protected Location location; 35 protected String category; 35 36 //protected Parameters parameters; 36 37 … … 40 41 41 42 initId(computingResource); 43 this.category = computingResource.getType(); 42 44 43 45 if (computingResource.getComputingResourceTypeChoiceSequence() != null) { … … 263 265 } 264 266 265 267 public String getCategory() { 268 return category; 269 } 266 270 267 271 } -
DCWoRMS/trunk/src/schedframe/resources/computing/profiles/energy/power/PowerProfile.java
r495 r512 66 66 } 67 67 68 public Map<String, PState> getSupportedPStates() throws NoSuchFieldException{68 public Map<String, PState> getSupportedPStates() { 69 69 if(supportedPStates == null) 70 throw new NoSuchFieldException("Supported p-states are not defined.");70 return new HashMap<String, PState>(); 71 71 return supportedPStates; 72 72 } -
DCWoRMS/trunk/src/schedframe/resources/computing/profiles/energy/power/ui/ProcessorPowerInterface.java
r506 r512 1 1 package schedframe.resources.computing.profiles.energy.power.ui; 2 2 3 4 import gridsim.GridSimTags;5 import gridsim.dcworms.DCWormsTags;6 3 7 4 import java.util.Map; … … 15 12 import schedframe.resources.computing.profiles.energy.power.PowerStateName; 16 13 import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; 17 import schedframe.resources.units.CpuSpeed;18 import schedframe.resources.units.StandardResourceUnitName;19 14 20 15 public class ProcessorPowerInterface extends ComputingResourcePowerInterface { … … 26 21 super(resource, pp); 27 22 currentPowerState = StandardPowerStateName.ON; 28 try { 29 currentPState = getSupportedPStates().get("P0"); 30 } catch (NoSuchFieldException e) { 31 currentPState = null; 32 } 23 currentPState = getSupportedPStates().get("P0"); 33 24 } 34 25 … … 53 44 } 54 45 55 public Map<String, PState> getSupportedPStates() throws NoSuchFieldException{46 public Map<String, PState> getSupportedPStates() { 56 47 return powerProfile.getSupportedPStates(); 57 48 } 58 49 59 50 public boolean supportPState(PState pState) { 60 try { 61 for(String pStateName: getSupportedPStates().keySet()){ 62 if(pState.getName().equals(pStateName)){ 63 return true; 64 } 51 52 for(String pStateName: getSupportedPStates().keySet()){ 53 if(pState.getName().equals(pStateName)){ 54 return true; 65 55 } 66 } catch (NoSuchFieldException e) {67 return false;68 56 } 69 57 return false; … … 71 59 72 60 public boolean setPState(String pStateName){ 73 PState newPState; 74 try { 75 newPState = getSupportedPStates().get(pStateName); 76 } catch (NoSuchFieldException e) { 77 return false; 78 } 61 PState newPState = getSupportedPStates().get(pStateName); 79 62 80 if(newPState != currentPState){ 63 64 if(newPState != null && newPState != currentPState){ 81 65 //double factor = newPState.getFrequency()/currentPState.getFrequency(); 82 66 currentPState = newPState; … … 97 81 98 82 public boolean setFrequency(double freq) { 99 try { 100 for(String pStateName: getSupportedPStates().keySet()){ 101 if(getSupportedPStates().get(pStateName).getFrequency() == freq){ 102 setPState(pStateName); 103 return true; 104 } 83 84 for(String pStateName: getSupportedPStates().keySet()){ 85 if(getSupportedPStates().get(pStateName).getFrequency() == freq){ 86 setPState(pStateName); 87 return true; 105 88 } 106 } catch (NoSuchFieldException e) {107 return false;108 89 } 109 90 return false; -
DCWoRMS/trunk/src/simulator/DataCenterWorkloadSimulator.java
r494 r512 262 262 ResourceController rc = resourceReader.read(); 263 263 264 while(!rc.getToInit().isEmpty()){ 265 Initializable initObj = rc.getToInit().pop(); 264 for(Initializable initObj: rc.getToInit()){ 266 265 initObj.initiate(); 267 266 } -
DCWoRMS/trunk/src/simulator/reader/ResourceReader.java
r509 r512 9 9 import java.util.ArrayDeque; 10 10 import java.util.ArrayList; 11 import java.util.Collections; 12 import java.util.Comparator; 11 13 import java.util.Deque; 12 14 import java.util.HashMap; … … 27 29 import schedframe.ResourceController; 28 30 import schedframe.exceptions.ResourceException; 31 import schedframe.resources.Resource; 29 32 import schedframe.resources.StandardResourceType; 30 33 import schedframe.resources.computing.ComputingResource; … … 51 54 52 55 protected ResourceCalendar resourceCalendar; 53 protected Deque<Initializable> toInit = new ArrayDeque<Initializable>();56 protected List<Initializable> toInit = new ArrayList<Initializable>(); 54 57 55 58 private ExecutionTimeEstimationPlugin execTimeEstimationPlugin; … … 85 88 86 89 ResourceController rc = new ResourceController(mainScheduler, computingResources); 90 Collections.sort(toInit, new ResourceTypeComparator(new ArrayList<String>(compResLayers))); 87 91 rc.setInitList(toInit); 88 92 rc.setCompResLayers(compResLayers); … … 430 434 } 431 435 436 class ResourceTypeComparator implements Comparator<Initializable>{ 437 438 List<String> order; 439 ResourceTypeComparator(List<String> order) { 440 this.order = order; 441 } 442 public int compare(Initializable init1, Initializable init2) { 443 String type1 = ((Resource)init1).getType().getName(); 444 String type2 = ((Resource)init2).getType().getName(); 445 if(order.indexOf(type1) > order.indexOf(type2)) 446 return -1; 447 else if (order.indexOf(type1) < order.indexOf(type2)) 448 return 1; 449 else return 0; 450 451 } 452 } 453 432 454 } -
DCWoRMS/trunk/src/simulator/stats/implementation/DCWormsStatistics.java
r501 r512 331 331 energyUsage.setSumValue(energyUsage.getMeanValue() * (endSimulationTime - startSimulationTime) / (3600 * MILLI_SEC)); 332 332 333 EnergyExtension een = (EnergyExtension 333 EnergyExtension een = (EnergyExtension)(resource.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION)); 334 334 if(resourceController.getComputingResources().contains(resource)) { 335 335 if( een != null /*&& een.getPp() != null*/ ){ … … 339 339 } else if( een != null && een.getPowerProfile() != null ){ 340 340 ComputingResource parent = resource.getParent(); 341 een = (EnergyExtension 341 een = (EnergyExtension)(parent.getExtensionList().getExtension(ExtensionType.ENERGY_EXTENSION)); 342 342 boolean top = true; 343 343 while(parent != null){
Note: See TracChangeset
for help on using the changeset viewer.