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

#include <clouduser.h>

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

Public Member Functions

 CloudUser ()
 
virtual ~CloudUser ()
 
CloudTaskcreateTask ()
 
void setRandomized (int i)
 
int process_command (int argc, const char *const *argv)
 

Public Attributes

int id_
 
double tskmips_
 
double memory_
 
double storage_
 
unsigned int tsksize_
 
double tskmaxduration_
 
int toutputsize_
 
int tintercom_
 
int randomized_
 
double mean_response_time_
 
double sd_response_time_
 
int unfinished_tasks_
 

Protected Member Functions

void printTasksStatus ()
 
void postSimulationTestTasks ()
 
void calculateStatistics ()
 

Protected Attributes

DataCenterdc_
 
int taskcounter_
 
ExponentialRandomVariable random_tskmips_
 
std::vector< TaskInfo * > tasks_info_
 

Detailed Description

Definition at line 19 of file clouduser.h.

Constructor & Destructor Documentation

CloudUser::CloudUser ( )

Definition at line 9 of file clouduser.cc.

9  : id_(0), tskmips_(0) , memory_(0.0), storage_(0.0), tsksize_(0), tskmaxduration_(0.0),
12 {
13 }
int taskcounter_
Definition: clouduser.h:46
ExponentialRandomVariable random_tskmips_
Definition: clouduser.h:47
double sd_response_time_
Definition: clouduser.h:41
int tintercom_
Definition: clouduser.h:36
int id_
Definition: clouduser.h:26
double mean_response_time_
Definition: clouduser.h:40
int toutputsize_
Definition: clouduser.h:35
double tskmips_
Definition: clouduser.h:29
double tskmaxduration_
Definition: clouduser.h:33
double storage_
Definition: clouduser.h:31
int unfinished_tasks_
Definition: clouduser.h:42
int randomized_
Definition: clouduser.h:38
double memory_
Definition: clouduser.h:30
unsigned int tsksize_
Definition: clouduser.h:32
DataCenter * dc_
Definition: clouduser.h:45
CloudUser::~CloudUser ( )
virtual

Definition at line 15 of file clouduser.cc.

16 {
17 }

Member Function Documentation

void CloudUser::calculateStatistics ( )
protected

Definition at line 141 of file clouduser.cc.

141  {
142  std::vector<TaskInfo*>::iterator i;
143  double sum = 0;
144  int counter = 0;
145  unfinished_tasks_ = 0;
146 
147  //mean calculation
148  if(!tasks_info_.empty()){
149  for(i = tasks_info_.begin(); i < tasks_info_.end(); i++){
150  if((*i)->getDcExitTime() != -1){
151  sum+= (*i)->getDcExitTime() - (*i)->getReleaseTime();
152  counter++;
153  } else {
155  }
156  }
157 
158  mean_response_time_ = sum / counter;
159 
160  // sd calculation
161  sum = 0;
162  double tmp;
163  for(i = tasks_info_.begin(); i < tasks_info_.end(); i++){
164  if((*i)->getDcExitTime() != -1){
165  tmp = pow( ((*i)->getDcExitTime() - (*i)->getReleaseTime() ) - mean_response_time_, 2.0f);
166 
167  sum += tmp;
168  }
169  }
170  sd_response_time_ = sqrt(sum/counter);
171  } else {
172  std::cerr << "WARNING: No tasks generated by the cloud user: " << id_ << " (normally it should not happen).\n";
173  }
174 }
std::vector< TaskInfo * > tasks_info_
Definition: clouduser.h:48
double sd_response_time_
Definition: clouduser.h:41
int id_
Definition: clouduser.h:26
double mean_response_time_
Definition: clouduser.h:40
int unfinished_tasks_
Definition: clouduser.h:42
CloudTask * CloudUser::createTask ( )

Definition at line 19 of file clouduser.cc.

20 {
21  std::vector<Resource*> task_demand;
22 
23  std::vector<Capacity> task_proc_cap;
24  double mips;
25  int processes_number = 1;
26  for(int i = 0 ; i < processes_number; i++){
27  if(!randomized_){
28  mips = tskmips_/processes_number;
29  } else {
30  do{
31  mips = random_tskmips_.value()/processes_number;
32  }while(mips > (tskmips_/processes_number)*tskmaxduration_*0.98);
33  }
34  task_proc_cap.push_back(mips);
35  }
36  task_demand.push_back(new Resource(Computing,1.0,task_proc_cap));
37 
38  if(memory_!=0){
39  std::vector<Capacity> task_memory_cap;
40  task_memory_cap.push_back(memory_);
41  task_demand.push_back(new Resource(Memory,1.0,task_memory_cap));
42  }
43 
44  if(storage_!=0){
45  std::vector<Capacity> task_storage_cap;
46  task_storage_cap.push_back(storage_);
47  task_demand.push_back(new Resource(Storage,1.0,task_storage_cap));
48  }
49 
50  // std::cerr << "MIPS:" << tskmips_ << "\tMEM:" << memory_<< "\tSTO:" <<storage_ << "\n";
51  // TODO: LEAK OCCURS: the created tasks are never released... However, they exist only until the end of a simulation.
52 
53  CloudTask *pTskObj = new CloudTask(tsksize_, tskmaxduration_,task_demand, this);
54  pTskObj->setID(taskcounter_);
55 // std::cout <<"Task generated, id: "<< pTskObj->id_ << "\n";
56  pTskObj->setOutput(toutputsize_);
57  pTskObj->setIntercom(tintercom_);
58  TaskInfo* tmp_info_ = new TaskInfo(pTskObj,Scheduler::instance().clock(),Scheduler::instance().clock() + tskmaxduration_);
59  tasks_info_.push_back(tmp_info_);
60  pTskObj->info_= tmp_info_;
61  taskcounter_++;
62 
63  return pTskObj;
64 }
std::vector< TaskInfo * > tasks_info_
Definition: clouduser.h:48
int taskcounter_
Definition: clouduser.h:46
ExponentialRandomVariable random_tskmips_
Definition: clouduser.h:47
int tintercom_
Definition: clouduser.h:36
TaskInfo * info_
Definition: cloudtask.h:61
int toutputsize_
Definition: clouduser.h:35
double tskmips_
Definition: clouduser.h:29
double tskmaxduration_
Definition: clouduser.h:33
void setID(int id)
Definition: cloudtask.h:27
double storage_
Definition: clouduser.h:31
void setOutput(int output)
Definition: cloudtask.h:29
void setIntercom(int intercom)
Definition: cloudtask.h:30
int randomized_
Definition: clouduser.h:38
double memory_
Definition: clouduser.h:30
unsigned int tsksize_
Definition: clouduser.h:32
void CloudUser::postSimulationTestTasks ( )
protected

Definition at line 116 of file clouduser.cc.

116  {
117  bool ok = true;
118  std::vector<TaskInfo*>::iterator i;
119  unfinished_tasks_ = 0;
120  for(i = tasks_info_.begin(); i < tasks_info_.end(); i++){
121  if(false){
122 // if((*i)->getDcExitTime() == -1){
123  ok = false;
125  std::cout << "Cloud User:\t" << id_ << "\t";
126  std::cout << fixed << setprecision(2) << "Task unfinished, id: " << (*i)->getTaskId() <<
127  " Rel: "<< (*i)->getReleaseTime() <<
128  " Ser: "<< (*i)->getServerFinishTime() <<
129  " Ext: "<< (*i)->getDcExitTime() <<
130  " Due: " << (*i)->getDueTime() <<
131  "\n";
132  }
133  }
134  if(ok){
135  std::cout << "Cloud User:\t" << id_ << "\t: all tasks finished sucesfully.\n";
136  } else {
137  std::cout << "Cloud User:\t" << id_ << "\t:\t"<< unfinished_tasks_ << "\ttasks did NOT exit datacenter.\n";
138  }
139 }
std::vector< TaskInfo * > tasks_info_
Definition: clouduser.h:48
int id_
Definition: clouduser.h:26
int unfinished_tasks_
Definition: clouduser.h:42
void CloudUser::printTasksStatus ( )
protected

Definition at line 103 of file clouduser.cc.

103  {
104  std::vector<TaskInfo*>::iterator i;
105  std::cout << "Cloud User:\t" << id_ << "\n";
106  for(i = tasks_info_.begin(); i < tasks_info_.end(); i++){
107  std::cout << fixed << setprecision(2) << "T: " << (*i)->getTaskId() <<
108  " Rel: "<< (*i)->getReleaseTime() <<
109  " Ser: "<< (*i)->getServerFinishTime() <<
110  " Ext: "<< (*i)->getDcExitTime() <<
111  " Due: " << (*i)->getDueTime() <<
112  "\n";
113  }
114 }
std::vector< TaskInfo * > tasks_info_
Definition: clouduser.h:48
int id_
Definition: clouduser.h:26
int CloudUser::process_command ( int  argc,
const char *const *  argv 
)

Definition at line 73 of file clouduser.cc.

73  {
74  if(argc==2){
75  if (strcmp(argv[1], "print-tasks-status") == 0) {
77  return (TCL_OK);
78  } else if(strcmp(argv[1], "post-simulation-test-tasks") == 0){
80  return (TCL_OK);
81  } else if(strcmp(argv[1], "calculate-statistics") == 0){
83  return (TCL_OK);
84  }
85 
86 
87  } else if(argc==3){
88  if (strcmp(argv[1], "join-datacenter") == 0) {
89  DataCenter *dc = dynamic_cast<DataCenter*> (TclObject::lookup(argv[2]));
90  if(dc){
91  dc_ = dc;
92  return (TCL_OK);
93  }
94  return (TCL_ERROR);
95  } else if (strcmp(argv[1], "set-randomized") == 0) {
96  setRandomized(atoi(argv[2]));
97  return (TCL_OK);
98  }
99  }
100  return -1;
101 }
void calculateStatistics()
Definition: clouduser.cc:141
void setRandomized(int i)
Definition: clouduser.cc:66
void postSimulationTestTasks()
Definition: clouduser.cc:116
void printTasksStatus()
Definition: clouduser.cc:103
DataCenter * dc_
Definition: clouduser.h:45
void CloudUser::setRandomized ( int  i)

Definition at line 66 of file clouduser.cc.

66  {
67  randomized_ =i;
68  if(i!=0){
69  random_tskmips_.setavg(tskmips_);
70  }
71 }
ExponentialRandomVariable random_tskmips_
Definition: clouduser.h:47
double tskmips_
Definition: clouduser.h:29
int randomized_
Definition: clouduser.h:38

Member Data Documentation

DataCenter* CloudUser::dc_
protected

Definition at line 45 of file clouduser.h.

int CloudUser::id_

Task ID

Definition at line 26 of file clouduser.h.

double CloudUser::mean_response_time_

Definition at line 40 of file clouduser.h.

double CloudUser::memory_

Task memory_ demand

Definition at line 30 of file clouduser.h.

ExponentialRandomVariable CloudUser::random_tskmips_
protected

Definition at line 47 of file clouduser.h.

int CloudUser::randomized_

Definition at line 38 of file clouduser.h.

double CloudUser::sd_response_time_

Definition at line 41 of file clouduser.h.

double CloudUser::storage_

Generated task computing demand

Definition at line 31 of file clouduser.h.

int CloudUser::taskcounter_
protected

Definition at line 46 of file clouduser.h.

std::vector<TaskInfo*> CloudUser::tasks_info_
protected

Definition at line 48 of file clouduser.h.

int CloudUser::tintercom_

Size of inter-task communication

Definition at line 36 of file clouduser.h.

int CloudUser::toutputsize_

Task output size in bytes (sent out of the data center)

Definition at line 35 of file clouduser.h.

double CloudUser::tskmaxduration_

Task execution deadline

Definition at line 33 of file clouduser.h.

double CloudUser::tskmips_

Generated task computing demand

Definition at line 29 of file clouduser.h.

unsigned int CloudUser::tsksize_

Size of task description sent to a server for execution in bytes

Definition at line 32 of file clouduser.h.

int CloudUser::unfinished_tasks_

Definition at line 42 of file clouduser.h.


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