Ignore:
Timestamp:
04/11/12 16:30:38 (13 years ago)
Author:
piontek
Message:
 
Location:
xssim/branches/tpiontek/src/example
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • xssim/branches/tpiontek/src/example/energy/CPUEnergyEstimationPlugin.java

    r206 r241  
    11package example.energy; 
    22 
     3import gssim.schedframe.scheduling.ExecTaskInterface; 
     4 
     5import java.util.List; 
    36import java.util.Properties; 
    47 
     
    1619                        ComputingResource resource) { 
    1720                Processor cpu = (Processor)resource; 
     21                 
    1822                if(resource.getPowerInterface().getPowerState() == PowerState.OFF) 
    1923                        return 0; 
     24                 
     25                double factor = 1.3; 
     26                 
    2027                if(resource.getStatus() == ResourceStatus.BUSY) 
    21                         return cpu.getPowerInterface().getPState().getPower(); 
     28                { 
     29                        List<ExecTaskInterface> tasks = jobRegistry.getRunningTasks(); 
     30                        int type = Integer.parseInt( tasks.get(0).getJobId()); 
     31                         
     32                        switch( type % 4) 
     33                        { 
     34                                default: factor = 1.3;  
     35                        } 
     36                         
     37                        return cpu.getPowerInterface().getPState().getPower() * factor; 
     38                }        
    2239                else  
    23                         return 1;  
     40                        return cpu.getPowerInterface().getPState().getPower();  
    2441        } 
    2542 
  • xssim/branches/tpiontek/src/example/energy/ComputingNodeEnergyEstimationPlugin.java

    r206 r241  
    55import test.rewolucja.energy.EnergyEvent; 
    66import test.rewolucja.resources.physical.base.ComputingResource; 
     7import test.rewolucja.resources.physical.implementation.ComputingNode; 
    78import test.rewolucja.resources.physical.implementation.Processor; 
    8 import test.rewolucja.resources.physical.implementation.ComputingNode; 
    99import test.rewolucja.scheduling.JobRegistryInterface; 
    1010 
     
    1616                double power = 0; 
    1717                ComputingNode node = (ComputingNode) resource; 
     18                 
     19                if( node.getCategory().getName().equals("A")) 
     20                        power = 240; 
     21                else if( node.getCategory().getName().equals("B")) 
     22                        power = 95; 
     23                else 
     24                { 
     25                        System.err.println("Unknown Model: "  +node.getCategory().getName()); 
     26                        System.exit(1); 
     27                }        
     28                 
     29                 
     30                 
    1831                for(Processor cpu: node.getProcessors()){ 
    1932                        //try{ 
     
    2336                        //} 
    2437                } 
    25                 power += node.getPowerInterface().getPowerConsumption(node.getPowerInterface().getPowerState()); 
     38                //power += node.getPowerInterface().getPowerConsumption(node.getPowerInterface().getPowerState()); 
    2639                return power; 
    2740        } 
  • xssim/branches/tpiontek/src/example/localplugin/FCFSRandomClusterLocalPlugin.java

    r192 r241  
    33import gridsim.Gridlet; 
    44 
     5import java.util.ArrayList; 
    56import java.util.List; 
    67import java.util.Properties; 
     
    1112import schedframe.scheduling.plugin.grid.ModuleList; 
    1213import test.rewolucja.GSSIMJobInterface; 
     14import test.rewolucja.energy.profile.PStateType; 
    1315import test.rewolucja.resources.manager.implementation.ClusterResourceManager; 
    1416import test.rewolucja.resources.manager.interfaces.ResourceManagerInterface; 
    1517import test.rewolucja.resources.physical.implementation.ComputingNode; 
     18import test.rewolucja.resources.physical.implementation.Processor; 
    1619import test.rewolucja.scheduling.JobRegistryInterface; 
    1720import test.rewolucja.scheduling.plan.SchedulingPlanInterfaceNew; 
     
    2326 
    2427        private Random rand; 
     28        private boolean init = true; 
    2529         
    2630        public FCFSRandomClusterLocalPlugin() { 
     
    3034        public SchedulingPlanInterfaceNew schedule(SchedulingEvent event, QueueList queues, JobRegistryInterface jobRegistry, 
    3135                         ResourceManagerInterface resManager, ModuleList modules) { 
     36                 
     37                ClusterResourceManager resourceManager = (ClusterResourceManager) resManager; 
     38                 
     39                if( init) 
     40                { 
     41                        List<Processor> cpus = resourceManager.getProcessors(); 
     42                         
     43                        for( Processor cpu : cpus) 
     44                                cpu.getPowerInterface().setPState( PStateType.P3); 
     45                         
     46                        init = false; 
     47                } 
     48                 
    3249 
    33                 ClusterResourceManager resourceManager = (ClusterResourceManager) resManager; 
     50                 
    3451                SchedulingPlanNew plan = new SchedulingPlanNew(); 
    3552                // chose the events types to serve. 
     
    4865                                // if status of the tasks in READY 
    4966                                if (task.getStatus() == Gridlet.READY) { 
    50                                         String nodeName = chooseRandomProvider(resourceManager); 
     67                                        String nodeName = chooseRandomProvider(resourceManager, task); 
    5168                                        if (nodeName != null) { 
    5269                                                addToSchedulingPlan(plan, task, nodeName); 
     
    5976        } 
    6077 
    61         private String chooseRandomProvider(ClusterResourceManager resourceManager) { 
     78        private List<ComputingNode> findSuitableNodes(int cpuRequest, List<ComputingNode> nodes){ 
     79                List<ComputingNode> avNodes = new ArrayList<ComputingNode>(); 
     80                for(ComputingNode node: nodes){ 
     81                        if(node.getFreeProcessorsNumber() >= cpuRequest){ 
     82                                avNodes.add(node); 
     83                        } 
     84                } 
     85                return avNodes; 
     86        } 
     87         
     88        private String chooseRandomProvider(ClusterResourceManager resourceManager, TaskInterface<?> task) { 
     89                 
     90                int cpuRequest; 
     91                try { 
     92                        cpuRequest = Double.valueOf(task.getCpuCntRequest()).intValue(); 
     93                } catch (NoSuchFieldException e) { 
     94                        cpuRequest = 1; 
     95                } 
     96                 
    6297                List<ComputingNode> nodes = resourceManager.getComputingNodes(); 
     98                 
     99                nodes = findSuitableNodes(cpuRequest, nodes); 
     100                 
    63101                int nodeIdx = rand.nextInt(nodes.size()); 
    64102                return nodes.get(nodeIdx).getName(); 
  • xssim/branches/tpiontek/src/example/timeestimation/ExecTimeEstimationPlugin.java

    r184 r241  
    1010import schedframe.scheduling.plugin.SchedulingPluginConfiguration; 
    1111import schedframe.scheduling.utils.ResourceParameterName; 
     12import test.rewolucja.energy.profile.PState; 
     13import test.rewolucja.energy.profile.PStateType; 
    1214import test.rewolucja.resources.ProcessingElements; 
     15import test.rewolucja.resources.physical.implementation.Processor; 
    1316 
    1417 
     
    3841                // obtain single pe speed 
    3942                int speed = pes.getSpeed(); 
    40  
     43                 
    4144                // number of used pe   
    4245                int cnt = pes.getUsedAmount(); 
     
    4447                double remainingLength =  task.getLength() * (1- completionPercentage); 
    4548                // do the calculation 
    46                 double execTime = (remainingLength / (cnt * speed)); 
     49                double execTime = (remainingLength / (cnt * speed/1000)); 
    4750 
    4851                // if the result is very close to 0, but less then one millisecond then round this result to 0.001 
Note: See TracChangeset for help on using the changeset viewer.