GreenCloud Simulator
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | List of all members
SwitchEnergyModel Class Reference

#include <switchenergymodel.h>

Inheritance diagram for SwitchEnergyModel:
Inheritance graph
[legend]
Collaboration diagram for SwitchEnergyModel:
Collaboration graph
[legend]

Public Member Functions

 SwitchEnergyModel ()
 
virtual ~SwitchEnergyModel ()
 
virtual int command (int argc, const char *const *argv)
 
virtual void timeout ()
 
void setClassifier (Classifier *classifier)
 
void updateEnergy (int curSlot, int nports)
 
void start ()
 
void stop ()
 

Public Attributes

double eConsumed_
 
double eChassis_
 
double eLineCard_
 
double ePort_
 
double eSimEnd_
 
int eDVFS_enabled_
 
int eDNS_enabled_
 
double eDNS_delay_
 

Protected Member Functions

double computeCurrentRate ()
 

Protected Attributes

int eEnabled_
 
double eCurrentRate_
 
double eLastSample_
 
int eActivePorts_
 
double eSimDuration_
 
Classifier * classifier_
 
SwitchEnergyTimer energytimer_
 

Detailed Description

Definition at line 25 of file switchenergymodel.h.

Constructor & Destructor Documentation

SwitchEnergyModel::SwitchEnergyModel ( )

Definition at line 16 of file switchenergymodel.cc.

17 {
18  bind("eConsumed_", &eConsumed_);
19  bind("eChassis_", &eChassis_);
20  bind("eLineCard_", &eLineCard_);
21  bind("ePort_", &ePort_);
22  bind("eSimEnd_", &eSimEnd_);
23  bind("eDVFS_enabled_", &eDVFS_enabled_); /* ON when DVFS is enabled */
24  bind("eDNS_enabled_", &eDNS_enabled_); /* ON when DNS is enabled */
25  bind("eDNS_delay_", &eDNS_delay_);
26 }
SwitchEnergyTimer energytimer_
Classifier * classifier_
SwitchEnergyModel::~SwitchEnergyModel ( )
virtual

Definition at line 28 of file switchenergymodel.cc.

29 {
30 }

Member Function Documentation

int SwitchEnergyModel::command ( int  argc,
const char *const *  argv 
)
virtual

Definition at line 72 of file switchenergymodel.cc.

73 {
74  if (argc == 2) {
75  if (strcmp(argv[1], "start") == 0) {
76  start();
77  return (TCL_OK);
78  }
79  if (strcmp(argv[1], "stop") == 0) {
80  stop();
81  return (TCL_OK);
82  }
83  }
84  return (SwitchEnergyModel::command(argc, argv));
85 }
virtual int command(int argc, const char *const *argv)
double SwitchEnergyModel::computeCurrentRate ( )
protected
void SwitchEnergyModel::setClassifier ( Classifier *  classifier)
inline

Definition at line 32 of file switchenergymodel.h.

32 {classifier_ = classifier;};
Classifier * classifier_
void SwitchEnergyModel::start ( )

Definition at line 32 of file switchenergymodel.cc.

33 {
34  eEnabled_ = 1;
35  eLastSample_ = Scheduler::instance().clock();
37 
38  if (classifier_) eActivePorts_ = classifier_->maxslot();
39 
40  if (eDNS_enabled_) eCurrentRate_ = 0.0;
41  else computeCurrentRate();
42 }
Classifier * classifier_
void SwitchEnergyModel::stop ( )

Definition at line 44 of file switchenergymodel.cc.

45 {
46  updateEnergy(0, 0);
47 }
void updateEnergy(int curSlot, int nports)
void SwitchEnergyModel::timeout ( )
virtual

Definition at line 87 of file switchenergymodel.cc.

87  {
88 
89  eConsumed_ += eCurrentRate_*(Scheduler::instance().clock() - eLastSample_)/3600; // update energy
90  eCurrentRate_ = 0.0;
91  eLastSample_ = Scheduler::instance().clock();
92 }
void SwitchEnergyModel::updateEnergy ( int  curSlot,
int  nports 
)

Definition at line 56 of file switchenergymodel.cc.

57 {
58  if (eEnabled_ == 0) return;
59 
60  /* Compute energy spent since last call */
61  if (nports != eActivePorts_) {
62  eConsumed_ += eCurrentRate_*(Scheduler::instance().clock() - eLastSample_)/3600; // update energy
63  eActivePorts_ = nports; // update number of active ports
65  eLastSample_ = Scheduler::instance().clock();
66 
67  /* if DNS is enabled start sleep-mode timer */
69  }
70 }
SwitchEnergyTimer energytimer_

Member Data Documentation

Classifier* SwitchEnergyModel::classifier_
protected

Definition at line 61 of file switchenergymodel.h.

int SwitchEnergyModel::eActivePorts_
protected

Definition at line 57 of file switchenergymodel.h.

double SwitchEnergyModel::eChassis_

Definition at line 40 of file switchenergymodel.h.

double SwitchEnergyModel::eConsumed_

Definition at line 38 of file switchenergymodel.h.

double SwitchEnergyModel::eCurrentRate_
protected

Definition at line 55 of file switchenergymodel.h.

double SwitchEnergyModel::eDNS_delay_

Definition at line 48 of file switchenergymodel.h.

int SwitchEnergyModel::eDNS_enabled_

Definition at line 47 of file switchenergymodel.h.

int SwitchEnergyModel::eDVFS_enabled_

Definition at line 46 of file switchenergymodel.h.

int SwitchEnergyModel::eEnabled_
protected

Definition at line 53 of file switchenergymodel.h.

double SwitchEnergyModel::eLastSample_
protected

Definition at line 56 of file switchenergymodel.h.

double SwitchEnergyModel::eLineCard_

Definition at line 41 of file switchenergymodel.h.

SwitchEnergyTimer SwitchEnergyModel::energytimer_
protected

Definition at line 62 of file switchenergymodel.h.

double SwitchEnergyModel::ePort_

Definition at line 42 of file switchenergymodel.h.

double SwitchEnergyModel::eSimDuration_
protected

Definition at line 59 of file switchenergymodel.h.

double SwitchEnergyModel::eSimEnd_

Definition at line 44 of file switchenergymodel.h.


The documentation for this class was generated from the following files: