source: DCWoRMS/branches/coolemall/src/test/fips/models/i7/TangDataCenterEnergyEstimationPlugin.java @ 1600

Revision 1600, 2.9 KB checked in by wojtekp, 8 years ago (diff)
  • Property svn:mime-type set to text/plain
Line 
1package test.fips.models.i7;
2
3
4import schedframe.resources.StandardResourceType;
5import schedframe.resources.computing.ComputingResource;
6import schedframe.resources.computing.Node;
7import schedframe.resources.computing.Processor;
8import schedframe.resources.computing.Rack;
9import schedframe.resources.computing.profiles.energy.ResourceEvent;
10import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName;
11import schedframe.resources.devices.Device;
12import schedframe.resources.devices.Fan;
13import schedframe.resources.devices.PhysicalResource;
14import schedframe.scheduling.manager.tasks.JobRegistry;
15import simulator.ConfigurationOptions;
16import example.energy.BaseEnergyEstimationPlugin;
17import example.energy.coolemall.CoolEmAllTestbedMeasurements;
18import test.fips.EnvironmentConditions;
19
20public class TangDataCenterEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{
21
22        public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry,
23                        PhysicalResource resource) {
24               
25                double Pdc;
26               
27                double Pload_dc = 0;
28                double Pothers = 0;
29                double Pfans_dc = 0;
30                double Pcooling_device = 0;
31
32                ComputingResource room = (ComputingResource) resource;
33               
34                /**************** IT PART ****************/
35               
36                /*********** Pload_dc ***********/
37                Pload_dc = calculatePit(room);
38
39               
40               
41                /**************** NON- IT PART ****************/
42               
43                /*********** Pothers ***********/               
44                Pothers = calculatePothers(Pload_dc);
45               
46               
47               
48                /************* COOLING PART *************/
49
50               
51                /*********** Pfans_dc ***********/
52                Pfans_dc = calculatePfans(room);
53               
54                /************ Pcooling_device ************/
55                double airTemp = EnvironmentConditions.ROOM_TEMPERATURE;
56                double CoP = 0.0068 * Math.pow(airTemp, 2) + 0.0008 * airTemp + 0.458;
57                //
58                Pcooling_device = (Pload_dc + Pothers + Pfans_dc)/CoP;
59                Pdc = Pload_dc + Pothers + Pfans_dc + Pcooling_device;
60                //System.out.println("---");
61                //System.out.println("Pdc: " + Pdc + " Pload_dc: "+ Pload_dc + " Pothers: " + Pothers + " Pfans_dc: " + Pfans_dc + " Pcooling_device: " + Pcooling_device);
62
63                return Pdc;
64        }
65       
66        private double calculatePit(ComputingResource room){
67                double Pload_dc = 0;
68                for(ComputingResource cr: room.getChildren()){
69                        Rack rack = (Rack)cr;
70                        Pload_dc = Pload_dc + rack.getPowerInterface().getRecentPowerUsage().getValue();
71                }
72                return Pload_dc;
73        }
74       
75        private double calculatePothers(double Pload_dc){
76               
77                double Pothers = 0;
78               
79                double a;//experiment
80                try{
81                        a = ConfigurationOptions.coolingData.getAlpha();
82                } catch (Exception e){
83                        a = 0.02;
84                }
85
86                Pothers = a * Pload_dc;
87                return Pothers;
88        }
89       
90        private double calculatePfans(ComputingResource room){
91               
92                double Pfans_dc = 0;
93                for(Device d: room.getResourceCharacteristic().getDevices()){
94                        if(d.getType().getName().equals("Outlet") || d.getType().getName().equals("Inlet") )
95                                Pfans_dc = Pfans_dc + d.getPowerInterface().getRecentPowerUsage().getValue();
96                }
97
98                return Pfans_dc;
99        }
100
101}
Note: See TracBrowser for help on using the repository browser.