GreenCloud Simulator
Public Member Functions | Public Attributes | Private Member Functions | Private Attributes | List of all members
CPU Class Reference

#include <cpu.h>

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

Public Member Functions

 CPU ()
 
virtual ~CPU ()
 
double getCurrentMIPS ()
 
double getNominalMIPS ()
 
virtual int setSpecification (ResourceSpec *resspec)
 
void setProvider (ResourceProvider *provider)
 
void setDVFS (int eDVFS_enabled_)
 
virtual double getUtilization ()
 
virtual void print ()
 
virtual int command (int argc, const char *const *argv)
 
- Public Member Functions inherited from DcResource
 DcResource ()
 
virtual ~DcResource ()
 
virtual double getPower ()
 
virtual double getMaxPower ()
 
- Public Member Functions inherited from Resource
 Resource (res_type t, double a, std::vector< Capacity > cap)
 
void print ()
 
virtual ~Resource ()
 
res_type getType ()
 
double getArch ()
 

Public Attributes

std::vector< CoreScheduler * > cores_schedulers_
 
- Public Attributes inherited from DcResource
ResourceSpecspecification
 
- Public Attributes inherited from Resource
std::vector< Capacitycapacity
 

Private Member Functions

void getMIPS ()
 

Private Attributes

double nominal_mips_
 

Additional Inherited Members

- Static Public Member Functions inherited from Resource
static res_type translateType (const char *t)
 
- Protected Member Functions inherited from Resource
 Resource ()
 
Resourceoperator= (const Resource &r)
 
int setType (const char *t)
 
int setCapacity (std::vector< Capacity > cap)
 
void sortCapacity ()
 
- Protected Attributes inherited from Resource
res_type type
 
double arch
 

Detailed Description

Definition at line 18 of file cpu.h.

Constructor & Destructor Documentation

CPU::CPU ( )

Definition at line 18 of file cpu.cc.

18  {
19 
20 }
CPU::~CPU ( )
virtual

Definition at line 22 of file cpu.cc.

22  {
23 
24 }

Member Function Documentation

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

Reimplemented from DcResource.

Definition at line 45 of file cpu.cc.

45  {
46 
47  if (argc == 2) {
48  if (strcmp(argv[1], "print") == 0) {
49  this->print();
50  return (TCL_OK);
51  } else if (strcmp(argv[1], "getMIPS") == 0) {
52  this->getMIPS();
53  return (TCL_OK);
54  }
55  }
56  return (CPU::command(argc, argv));
57 }
void getMIPS()
Definition: cpu.cc:31
virtual void print()
Definition: cpu.cc:26
virtual int command(int argc, const char *const *argv)
Definition: cpu.cc:45
double CPU::getCurrentMIPS ( )

Definition at line 110 of file cpu.cc.

110  {
111  std::vector<CoreScheduler*>::iterator iter;
112  double result = 0;
113  for(iter= cores_schedulers_.begin();
114  iter != cores_schedulers_.end();
115  iter++){
116 
117  result += (*iter)->getCurrentMIPSRecursive();
118  }
119  return result;
120 }
std::vector< CoreScheduler * > cores_schedulers_
Definition: cpu.h:37
void CPU::getMIPS ( )
private

Definition at line 31 of file cpu.cc.

31  {
32  double result = 0;
33  std::vector <Capacity>::iterator iter;
34  for (iter = this->specification->capacity.begin(); iter!=this->specification->capacity.end(); iter++)
35  {
36  result += (*iter);
37  }
38  char out[100];
39  sprintf(out,"set tmp_cpu_mips %.0f",result);
40  Tcl& tcl = Tcl::instance();
41  tcl.eval(out);
42 
43 }
ResourceSpec * specification
Definition: dcresource.h:34
std::vector< Capacity > capacity
Definition: resource.h:87
double CPU::getNominalMIPS ( )

Definition at line 121 of file cpu.cc.

121  {
122  return nominal_mips_;
123 }
double nominal_mips_
Definition: cpu.h:41
double CPU::getUtilization ( )
virtual

Reimplemented from DcResource.

Definition at line 125 of file cpu.cc.

125  {
126  return getCurrentMIPS()/getNominalMIPS();
127 }
double getNominalMIPS()
Definition: cpu.cc:121
double getCurrentMIPS()
Definition: cpu.cc:110
void CPU::print ( )
virtual

Reimplemented from DcResource.

Definition at line 26 of file cpu.cc.

26  {
27  std::cerr << "CPU: ";
29 }
virtual void print()
Definition: dcresource.cc:81
void CPU::setDVFS ( int  eDVFS_enabled_)

Definition at line 98 of file cpu.cc.

98  {
99  if(cores_schedulers_.empty()){
100  std::cerr << "No core schedulers!\n";
101  }
102  std::vector<CoreScheduler*>::iterator iter;
103  for(iter= cores_schedulers_.begin();
104  iter != cores_schedulers_.end();
105  iter++){
106  (*iter)->setDVFS(eDVFS_enabled_);
107  }
108 }
std::vector< CoreScheduler * > cores_schedulers_
Definition: cpu.h:37
void CPU::setProvider ( ResourceProvider provider)

Sets the resource provider of the resource.

Definition at line 85 of file cpu.cc.

85  {
86  if(cores_schedulers_.empty()){
87  std::cerr << "No core schedulers!\n";
88  }
89  std::vector<CoreScheduler*>::iterator iter;
90  for(iter= cores_schedulers_.begin();
91  iter != cores_schedulers_.end();
92  iter++){
93  (*iter)->setProvider(provider);
94  }
95 
96 }
std::vector< CoreScheduler * > cores_schedulers_
Definition: cpu.h:37
int CPU::setSpecification ( ResourceSpec resspec)
virtual

Sets the resource specification of the resource.

Reimplemented from DcResource.

Definition at line 61 of file cpu.cc.

61  {
62  if(resspec==NULL){
63  std::cerr << "ERROR: Null pointer passed as ResourceSpec.";
64  return 1;
65  }
66  this->DcResource::setSpecification(resspec);
67  std::vector<Capacity>::iterator iter_nominal;
68  std::vector<Capacity>::iterator iter_reserved;
69  for(iter_nominal= resspec->capacity.begin(),iter_reserved=this->capacity.begin();
70  iter_nominal != resspec->capacity.end();
71  iter_nominal++,iter_reserved++){
72  cores_schedulers_.push_back(new CoreScheduler(&(*iter_nominal),&(*iter_reserved)));
73  }
74  std::vector<CoreScheduler*>::iterator iter;
75  nominal_mips_ = 0;
76  for(iter= cores_schedulers_.begin();
77  iter != cores_schedulers_.end();
78  iter++){
79  nominal_mips_ += (*iter)->getNominalMIPS();
80  }
81 
82  return 0;
83 }
double nominal_mips_
Definition: cpu.h:41
std::vector< Capacity > capacity
Definition: resource.h:87
std::vector< CoreScheduler * > cores_schedulers_
Definition: cpu.h:37
virtual int setSpecification(ResourceSpec *resspec)
Definition: dcresource.cc:28

Member Data Documentation

std::vector<CoreScheduler *> CPU::cores_schedulers_

List of cores schedulers of the CPU

Definition at line 37 of file cpu.h.

double CPU::nominal_mips_
private

Definition at line 41 of file cpu.h.


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