package test.fips.models.i7; import schedframe.resources.StandardResourceType; import schedframe.resources.computing.ComputingResource; import schedframe.resources.computing.Node; import schedframe.resources.computing.Processor; import schedframe.resources.computing.Rack; import schedframe.resources.computing.profiles.energy.ResourceEvent; import schedframe.resources.computing.profiles.energy.power.StandardPowerStateName; import schedframe.resources.devices.Device; import schedframe.resources.devices.Fan; import schedframe.resources.devices.PhysicalResource; import schedframe.scheduling.manager.tasks.JobRegistry; import simulator.ConfigurationOptions; import example.energy.BaseEnergyEstimationPlugin; import example.energy.coolemall.CoolEmAllTestbedMeasurements; import test.fips.EnvironmentConditions; public class TangDataCenterEnergyEstimationPlugin extends BaseEnergyEstimationPlugin{ public double estimatePowerConsumption(ResourceEvent event, JobRegistry jobRegistry, PhysicalResource resource) { double Pdc; double Pload_dc = 0; double Pothers = 0; double Pfans_dc = 0; double Pcooling_device = 0; ComputingResource room = (ComputingResource) resource; /**************** IT PART ****************/ /*********** Pload_dc ***********/ Pload_dc = calculatePit(room); /**************** NON- IT PART ****************/ /*********** Pothers ***********/ Pothers = calculatePothers(Pload_dc); /************* COOLING PART *************/ /*********** Pfans_dc ***********/ Pfans_dc = calculatePfans(room); /************ Pcooling_device ************/ double airTemp = EnvironmentConditions.ROOM_TEMPERATURE; double CoP = 0.0068 * Math.pow(airTemp, 2) + 0.0008 * airTemp + 0.458; // Pcooling_device = (Pload_dc + Pothers + Pfans_dc)/CoP; Pdc = Pload_dc + Pothers + Pfans_dc + Pcooling_device; //System.out.println("---"); //System.out.println("Pdc: " + Pdc + " Pload_dc: "+ Pload_dc + " Pothers: " + Pothers + " Pfans_dc: " + Pfans_dc + " Pcooling_device: " + Pcooling_device); return Pdc; } private double calculatePit(ComputingResource room){ double Pload_dc = 0; for(ComputingResource cr: room.getChildren()){ Rack rack = (Rack)cr; Pload_dc = Pload_dc + rack.getPowerInterface().getRecentPowerUsage().getValue(); } return Pload_dc; } private double calculatePothers(double Pload_dc){ double Pothers = 0; double a;//experiment try{ a = ConfigurationOptions.coolingData.getAlpha(); } catch (Exception e){ a = 0.02; } Pothers = a * Pload_dc; return Pothers; } private double calculatePfans(ComputingResource room){ double Pfans_dc = 0; for(Device d: room.getResourceCharacteristic().getDevices()){ if(d.getType().getName().equals("Outlet") || d.getType().getName().equals("Inlet") ) Pfans_dc = Pfans_dc + d.getPowerInterface().getRecentPowerUsage().getValue(); } return Pfans_dc; } }