Ignore:
Timestamp:
11/26/13 11:56:07 (11 years ago)
Author:
wojtekp
Message:
 
Location:
DCWoRMS/branches/coolemall/src/dcworms/schedframe/scheduling
Files:
1 added
2 edited

Legend:

Unmodified
Added
Removed
  • DCWoRMS/branches/coolemall/src/dcworms/schedframe/scheduling/ExecTask.java

    r1191 r1207  
    55import schedframe.scheduling.tasks.TaskInterface; 
    66import schedframe.scheduling.tasks.phases.ResourceConsumption; 
     7import schedframe.scheduling.tasks.phases.ResourceConsumptionProfile; 
    78import schedframe.scheduling.tasks.requirements.ResourceParameterName; 
    89 
     
    1516        public List<String> getVisitedResources(); 
    1617         
     18        public ResourceConsumptionProfile getResourceConsumptionProfile(); 
    1719        public ResourceConsumption getCurrentResourceConsumption(); 
    1820} 
  • DCWoRMS/branches/coolemall/src/dcworms/schedframe/scheduling/Executable.java

    r1157 r1207  
    22 
    33 
     4import example.energy.coolemall.CoolEmAllTestbedMeasurements; 
    45import gridsim.GridSim; 
    56import gridsim.dcworms.DCWormsTags; 
     
    78import java.util.ArrayList; 
    89import java.util.HashMap; 
     10import java.util.LinkedList; 
    911import java.util.List; 
    1012import java.util.Map; 
     
    1416import org.joda.time.DateTimeUtilsExt; 
    1517import org.joda.time.ReadableDuration; 
     18import org.qcg.broker.schemas.resreqs.ResourceConsumptionProfileType; 
     19import org.qcg.broker.schemas.resreqs.ResourceConsumptionType; 
     20import org.qcg.broker.schemas.resreqs.StringParameterType; 
    1621 
    1722import qcg.shared.constants.BrokerConstants; 
    1823 
    1924import schedframe.resources.computing.ComputingResource; 
     25import schedframe.resources.units.PEUnit; 
    2026import schedframe.resources.units.ProcessingElements; 
    2127import schedframe.resources.units.StandardResourceUnitName; 
     
    3036import schedframe.scheduling.tasks.phases.ResourceConsumptionProfile; 
    3137import schedframe.scheduling.tasks.requirements.ResourceParameterName; 
     38import simulator.stats.implementation.ResourceUsefulWorkStats; 
    3239 
    3340/** 
     
    6067        protected double finishTime;  
    6168         
     69        private ResourceConsumptionProfile resourceConsumptionProfile; 
     70         
    6271        public Executable(Task t){ 
    6372                this.task = t; 
     
    8392                this.submissionTime =  currentTime; 
    8493        this.totalCompletionTime = 0.0; 
     94        preparePhases(null); 
    8595         } 
    8696         
     
    168178         
    169179        if(status == DCWormsTags.INEXEC){ 
     180                loadResourceConsumptionProfile(); 
    170181                task.setStatus((int) BrokerConstants.TASK_STATUS_RUNNING); 
    171182        } else if(status == DCWormsTags.QUEUED){ 
     
    202213                for (ComputingResource resource : pes) { 
    203214 
    204                         trackResource(resource.getName()); 
     215                        trackResource(resource.getFullName()); 
    205216                         
    206217                        ComputingResource parent = resource.getParent(); 
    207218                                List<String> visitedResource = getVisitedResources(); 
    208219                                String [] visitedResourcesArray = visitedResource.toArray(new String[visitedResource.size()]); 
    209                         while (parent != null && !ArrayUtils.contains(visitedResourcesArray, parent.getName())) { 
    210                                 trackResource(parent.getName()); 
     220                        while (parent != null && !ArrayUtils.contains(visitedResourcesArray, parent.getFullName())) { 
     221                                trackResource(parent.getFullName()); 
    211222                                parent = parent.getParent(); 
    212223                        } 
     
    218229                        status = DCWormsTags.INEXEC; 
    219230                        setCompletionPercentage(0); 
    220                         task.getResourceConsumptionProfile().setCurrentPhase(task.getResourceConsumptionProfile().getCurrentPhase() + 1); 
     231                        resourceConsumptionProfile.setCurrentPhase(resourceConsumptionProfile.getCurrentPhase() + 1); 
    221232                         
    222233                        DateTime currentDateTime = new DateTime(); 
     
    386397         
    387398        public ResourceConsumptionProfile getResourceConsumptionProfile(){ 
    388                 return task.getResourceConsumptionProfile(); 
     399                return resourceConsumptionProfile; 
    389400        } 
    390401 
    391402        public ResourceConsumption getCurrentResourceConsumption(){ 
    392                 return task.getResourceConsumptionProfile().getCurrentResourceConsumption(); 
     403                return resourceConsumptionProfile.getCurrentResourceConsumption(); 
    393404        } 
    394405         
     
    396407                return task.getApplicationName(); 
    397408        } 
    398  
     409         
     410        private void preparePhases(String resourceType) { 
     411                LinkedList<ResourceConsumption> resourceConsumptionList = new LinkedList<ResourceConsumption>(); 
     412                 
     413                long usefulWork = -1; 
     414                 
     415                if(task.getDescription().getExecution() == null || task.getDescription().getExecution().getResourceConsumptionProfile() == null 
     416                                || task.getDescription().getExecution().getResourceConsumptionProfile().length == 0 ){ 
     417                        ResourceConsumption resConsumption = null; 
     418                        try { 
     419                                resConsumption = new ResourceConsumption(getLength(), task.getComputingResourceRequirements()); 
     420                        } catch (NoSuchFieldException e) { 
     421                                // TODO Auto-generated catch block 
     422                                e.printStackTrace(); 
     423                        } 
     424                        resourceConsumptionList.add(resConsumption); 
     425                }else{ 
     426                        boolean found = false; 
     427                        if(resourceType != null){ 
     428                                for(ResourceConsumptionProfileType resConsumptioProfile: task.getDescription().getExecution().getResourceConsumptionProfile()){ 
     429                                        if(resConsumptioProfile.getType() != null && resConsumptioProfile.getType().equals(resourceType)){ 
     430                                                for(ResourceConsumptionType resConsumption: resConsumptioProfile.getResourceConsumption()){ 
     431                                                        ResourceConsumption resourceConsumption = new ResourceConsumption(resConsumption); 
     432                                                        resourceConsumptionList.add(resourceConsumption); 
     433                                                } 
     434                                                for(StringParameterType prop: resConsumptioProfile.getProperties()){ 
     435                                                        if(prop.getName().equals("usefulWork")){ 
     436                                                                usefulWork = Double.valueOf(prop.getContent()).longValue(); 
     437                                                                break; 
     438                                                        } 
     439                                                } 
     440                                                found = true; 
     441                                                break; 
     442                                        } 
     443                                }        
     444                        }                        
     445                        if(!found){ 
     446                                for(ResourceConsumptionType resConsumption: task.getDescription().getExecution().getResourceConsumptionProfile()[0].getResourceConsumption()){ 
     447                                        ResourceConsumption resourceConsumption = new ResourceConsumption(resConsumption); 
     448                                        resourceConsumptionList.add(resourceConsumption); 
     449                                } 
     450                                 
     451                                for(StringParameterType prop: task.getDescription().getExecution().getResourceConsumptionProfile()[0].getProperties()){ 
     452                                        if(prop.getName().equals("usefulWork")){ 
     453                                                usefulWork = Double.valueOf(prop.getContent()).longValue(); 
     454                                                break; 
     455                                        } 
     456                                } 
     457                        } 
     458                } 
     459                 
     460                usefulWork = (usefulWork != -1) ? usefulWork : this.getLength(); 
     461                this.resourceConsumptionProfile = new ResourceConsumptionProfile(resourceConsumptionList); 
     462                this.resourceConsumptionProfile.setUsefulWork(usefulWork); 
     463 
     464        } 
     465 
     466        private boolean loadResourceConsumptionProfile(){ 
     467 
     468                PEUnit peUnit = (PEUnit)getUsedResources().getLast().getResourceUnits() 
     469                                .get(StandardResourceUnitName.PE); 
     470                if(peUnit instanceof ProcessingElements){ 
     471                        ProcessingElements pes = (ProcessingElements) peUnit; 
     472                        for (ComputingResource resource : pes) { 
     473                                while(resource != null && resource.getResourceCharacteristic().getParameters().get("product") == null){ 
     474                                        resource = resource.getParent(); 
     475                                } 
     476                                if(resource != null) { 
     477                                        String productName = resource.getResourceCharacteristic().getParameters().get("product").get(0).getContent(); 
     478                                        if(productName.equals("Fusion G - T40N")) 
     479                                                preparePhases("amdf"); 
     480                                        else if(productName.equals("Atom - D510")) 
     481                                                preparePhases("atom64"); 
     482                                        else if(productName.equals("Atom - N2600")) 
     483                                                preparePhases("atom64"); 
     484                                        else if(productName.equals("Core i7 - 2715QE")) 
     485                                                preparePhases("i7-2715QE"); 
     486                                        else if(productName.equals("Core i7 - 3615QE")) 
     487                                                preparePhases("i7-3615QE"); 
     488                                } 
     489                                return true; 
     490                        } 
     491                } 
     492                return false; 
     493                 
     494        } 
    399495} 
Note: See TracChangeset for help on using the changeset viewer.