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

#include <vm.h>

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

Public Member Functions

 VM ()
 
virtual ~VM ()
 
virtual void print ()
 
virtual void printTasklist ()
 
virtual int command (int argc, const char *const *argv)
 
virtual void updateMIPS ()
 
virtual void addResource (DcResource *res)
 
vm_state getVmState ()
 
void setHost (ResourceProvider *newHost)
 
- Public Member Functions inherited from ResourceProvider
 ResourceProvider ()
 
virtual ~ResourceProvider ()
 
void setTskComSink (TskComSink *tcs)
 
int tryToAllocate (ResourceConsumer *rc)
 
bool releaseAllocation (ResourceConsumer *rc)
 
bool addVM (VM *newVm)
 
bool removeVM (VM *vm)
 
ResourceProvidergetHost ()
 
DcHostgetRootHost ()
 
void recv (ResourceConsumer *rcobj)
 
double getResTypeUtil (res_type type)
 
double getTotalCap (res_type type)
 
int testSchedulingPossibility (CloudTask *tskobj)
 
int trySchedulingTsk (CloudTask *tskobj)
 
void sendTaskOutput (CloudTask *task)
 
void scheduleNextExent (double nextDeadline)
 
TskComAgentgetTskComAgent ()
 
- Public Member Functions inherited from ResourceConsumer
 ResourceConsumer ()
 
 ResourceConsumer (unsigned int size, std::vector< Resource * > dem, bool isTask, bool isVM)
 
virtual ~ResourceConsumer ()
 
unsigned int getSize ()
 
void setSize (unsigned int size)
 
void setCurrentPerformance (std::vector< double > newPerf)
 
void addUsedCapacity (double *cap)
 

Protected Member Functions

virtual void updateEnergyAndConsumption ()
 
- Protected Member Functions inherited from ResourceProvider
virtual void handle (Event *event)
 
void updateEvent ()
 
void nextEvent (double delay)
 
double getCurrentLoad ()
 
double updateResTypeUtil (res_type type)
 
double getFreeCap (res_type type)
 
double getFreeCapRecursive (res_type type)
 
double getUsedNet (bool in, bool out)
 
double getUsedNetRecursive (bool in, bool out)
 
void setTskComAgent (TskComAgent *agnt)
 
void setAgent (ProviderOutAgent *agent)
 
TcpAgent * getAgent ()
 
void attachSink (VmMigrationSink *vm_mig_sink)
 
void attachSource (ProviderOutAgent *tcp_agent)
 
void detachSink (VmMigrationSink *vm_mig_sink)
 
void detachSource (ProviderOutAgent *tcp_agent)
 

Protected Attributes

vm_state state
 
- Protected Attributes inherited from ResourceProvider
double resource_utilization [LastResType+1]
 
std::vector< ResourceConsumer * > hosted_vms_
 
std::vector< VmMigrationSink * > vm_migration_sinks_
 
std::vector< ProviderOutAgent * > vm_migration_sources_
 
TskComSinktskComSink_
 
ProviderOutAgentpoagent_
 
ResourceProviderhost
 
bool started_
 
int status_
 
Event event_
 

Additional Inherited Members

- Public Types inherited from ResourceProvider
enum  EventStatus
 
- Public Attributes inherited from ResourceProvider
std::vector< std::vector< DcResource * > > resource_list
 
int id_
 
int ntasks_
 
double currentLoad_
 
double currentLoadMem_
 
double currentLoadStor_
 
double currentLoadNet_
 
int eDVFS_enabled_
 
int tskFailed_
 
TskComAgenttskComAgent
 
- Public Attributes inherited from ResourceConsumer
bool isTask
 
bool isVM
 
double size_
 
double currProcRate_
 
std::vector< ResDemand * > res_demands
 
- Static Public Attributes inherited from ResourceProvider
static double uplink_overhead =ResourceProvider::MTU/ResourceProvider::useful_bytes
 
static double MTU =1500.0
 
static double useful_bytes =1460.0
 

Detailed Description

Definition at line 29 of file vm.h.

Constructor & Destructor Documentation

VM::VM ( )

Definition at line 18 of file vm.cc.

18  {
19 
20  /* It should be always false for VMs */
21  isTask = false;
22  /* It should be always true for VMs */
23  isVM = true;
24 
25  bind("id_", &id_);
26  bind("ntasks_", &ntasks_);
27  bind("currentLoad_", &currentLoad_);
28  bind("currentLoadMem_", &currentLoadMem_);
29  bind("currentLoadStor_", &currentLoadStor_);
30  bind("tskFailed_", &tskFailed_);
31  bind("eDVFS_enabled_", &eDVFS_enabled_); /* ON when DVFS is enabled */
32  state = Ready;
33 
34 }
vm_state state
Definition: vm.h:48
Definition: vm.h:20
VM::~VM ( )
virtual

Definition at line 36 of file vm.cc.

36  {
37 
38 }

Member Function Documentation

void VM::addResource ( DcResource res)
virtual

Reimplemented from ResourceProvider.

Definition at line 49 of file vm.cc.

49  {
50 
52  res_demands.push_back(new ResDemand(*res,res));
53 
54 }
virtual void addResource(DcResource *res)
std::vector< ResDemand * > res_demands
int VM::command ( int  argc,
const char *const *  argv 
)
virtual

Reimplemented from ResourceProvider.

Definition at line 56 of file vm.cc.

57 {
58 
59  if (argc == 2) {
60  if (strcmp(argv[1], "start") == 0) {
61 
62  state = Running;
63  return (TCL_OK);
64  } else if (strcmp(argv[1], "stop") == 0) {
65 
66  state = Stopped;
67  return (TCL_OK);
68  } else if (strcmp(argv[1], "print") == 0) {
69  /* print general info */
70  print();
71  return (TCL_OK);
72  }
73  }
74  return (ResourceProvider::command(argc, argv));
75 }
vm_state state
Definition: vm.h:48
Definition: vm.h:21
Definition: vm.h:23
virtual void print()
Definition: vm.cc:90
virtual int command(int argc, const char *const *argv)
vm_state VM::getVmState ( )

Definition at line 41 of file vm.cc.

41 {return state;};
vm_state state
Definition: vm.h:48
void VM::print ( )
virtual

Implements ResourceProvider.

Definition at line 90 of file vm.cc.

90  {
91  std::cout << "VM:\t";
92  std::cout << id_;
93  std::cout << "\n";
94  if(host!=NULL){
95  std::cout << "Hosted on" << host->id_;
96  } else {
97  std::cout << "Not hosted";
98  }
99  std::cout << "\n";
100  std::cout << "Resources provisions:\n";
101  std::vector <std::vector<DcResource*> >::iterator iter_out;
102  for(iter_out = resource_list.begin(); iter_out!=resource_list.end() ;iter_out++){
103  std::vector <DcResource*>::iterator iter;
104  for (iter = iter_out->begin(); iter!=iter_out->end(); iter++)
105  {
106  (*iter)->print();
107  }
108  }
109  std::cout << "Resources demands:\n";
110  std::vector<ResDemand*>::iterator iter_dem;
111  for(iter_dem = res_demands.begin(); iter_dem!=res_demands.end() ;iter_dem++){
112  (*iter_dem)->print();
113  }
114  std::cout << "\n";
115 
116 }
std::vector< std::vector< DcResource * > > resource_list
std::vector< ResDemand * > res_demands
ResourceProvider * host
void VM::printTasklist ( )
virtual

Reimplemented from ResourceProvider.

Definition at line 118 of file vm.cc.

118  {
119  std::vector<CloudTask *>::iterator iter;
120  std::cout <<"VM " <<this->id_ << "\n";
121 
123 }
virtual void printTasklist()
void VM::setHost ( ResourceProvider newHost)

Definition at line 43 of file vm.cc.

43 {host = newHost;};
ResourceProvider * host
void VM::updateEnergyAndConsumption ( )
protectedvirtual

Implements ResourceProvider.

Definition at line 81 of file vm.cc.

81  {
82  if(host!= NULL){
84  } else {
85  std::cerr << "ERROR: Task is allocated on an unallocated VM!\n";
86  }
87  return;
88 }
ResourceProvider * host
virtual void updateEnergyAndConsumption()=0
void VM::updateMIPS ( )
virtual

Definition at line 77 of file vm.cc.

77  {
78  return;
79 }

Member Data Documentation

vm_state VM::state
protected

Definition at line 48 of file vm.h.


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