GreenCloud Simulator
Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ExpCloudUser Class Reference
Inheritance diagram for ExpCloudUser:
Inheritance graph
[legend]
Collaboration diagram for ExpCloudUser:
Collaboration graph
[legend]

Public Member Functions

 ExpCloudUser ()
 
virtual double next_interval (int &)
 
virtual void timeout ()
 
int command (int argc, const char *const *argv)
 
void addDataCenterPointer (DataCenter *joindc_)
 
- Public Member Functions inherited from CloudUser
 CloudUser ()
 
virtual ~CloudUser ()
 
CloudTaskcreateTask ()
 
void setRandomized (int i)
 
int process_command (int argc, const char *const *argv)
 

Protected Member Functions

void init ()
 
- Protected Member Functions inherited from CloudUser
void printTasksStatus ()
 
void postSimulationTestTasks ()
 
void calculateStatistics ()
 

Protected Attributes

double ontime_
 
double offtime_
 
double rate_
 
double interval_
 
unsigned int rem_
 
ExponentialRandomVariable burstlen_
 
ExponentialRandomVariable Offtime_
 
- Protected Attributes inherited from CloudUser
DataCenterdc_
 
int taskcounter_
 
ExponentialRandomVariable random_tskmips_
 
std::vector< TaskInfo * > tasks_info_
 

Additional Inherited Members

- Public Attributes inherited from CloudUser
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_
 

Detailed Description

Definition at line 20 of file expclouduser.cc.

Constructor & Destructor Documentation

ExpCloudUser::ExpCloudUser ( )

Definition at line 84 of file expclouduser.cc.

84  : burstlen_(0.0), Offtime_(0.0)
85 {
86 
87  bind_time("random_tskmips_",random_tskmips_.avgp());
88  bind_time("burst_time_", &ontime_);
89  bind_time("idle_time_", Offtime_.avgp());
90  bind_bw("rate_", &rate_);
91  bind("packetSize_", &size_);
92 
93  // Bind CloudUser variables
94  bind("id_", &id_);
95  bind("tskmips_", &tskmips_);
96  bind("memory_", &memory_);
97  bind("storage_", &storage_);
98  bind("tsksize_", &tsksize_);
99  bind("tskmaxduration_", &tskmaxduration_);
100  bind("toutputsize_", &toutputsize_);
101  bind("tintercom_", &tintercom_);
102  bind("mean_response_time_", &mean_response_time_);
103  bind("sd_response_time_", &sd_response_time_);
104  bind("unfinished_tasks_", &unfinished_tasks_);
105 }
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
ExponentialRandomVariable burstlen_
Definition: expclouduser.cc:39
double tskmips_
Definition: clouduser.h:29
double tskmaxduration_
Definition: clouduser.h:33
double ontime_
Definition: expclouduser.cc:32
ExponentialRandomVariable Offtime_
Definition: expclouduser.cc:40
double storage_
Definition: clouduser.h:31
int unfinished_tasks_
Definition: clouduser.h:42
double memory_
Definition: clouduser.h:30
unsigned int tsksize_
Definition: clouduser.h:32

Member Function Documentation

void ExpCloudUser::addDataCenterPointer ( DataCenter joindc_)
int ExpCloudUser::command ( int  argc,
const char *const *  argv 
)

Definition at line 57 of file expclouduser.cc.

57  {
58  int result = CloudUser::process_command(argc,argv);
59  if(result==-1){
60  if(argc==3){
61  if (strcmp(argv[1], "use-rng") == 0) {
62  burstlen_.seed((char *)argv[2]);
63  Offtime_.seed((char *)argv[2]);
64  return (TCL_OK);
65  }
66  //ADDED CODE
67  else if (strcmp(argv[1], "set-rate") == 0) {
68  int new_rate = atoi(argv[2]);
69  if(1){
70  rate_=new_rate;
71  interval_ = (double)(size_ << 3)/(double)rate_;
72  return (TCL_OK);
73  }
74  return (TCL_ERROR);
75  }
76  //ADDED CODE
77  }
78  return Application::command(argc,argv);
79  } else {
80  return result;
81  }
82 }
double interval_
Definition: expclouduser.cc:35
int process_command(int argc, const char *const *argv)
Definition: clouduser.cc:73
ExponentialRandomVariable burstlen_
Definition: expclouduser.cc:39
ExponentialRandomVariable Offtime_
Definition: expclouduser.cc:40
void ExpCloudUser::init ( )
protected

Definition at line 107 of file expclouduser.cc.

108 {
109  /* compute inter-packet interval during bursts based on
110  * packet size and burst rate. then compute average number
111  * of packets in a burst.
112  */
113  interval_ = (double)(size_ << 3)/(double)rate_;
114  burstlen_.setavg(ontime_/interval_);
115  rem_ = 0;
116 }
double interval_
Definition: expclouduser.cc:35
unsigned int rem_
Definition: expclouduser.cc:36
ExponentialRandomVariable burstlen_
Definition: expclouduser.cc:39
double ontime_
Definition: expclouduser.cc:32
double ExpCloudUser::next_interval ( int &  size)
virtual

Definition at line 118 of file expclouduser.cc.

119 {
120  double t = interval_;
121 
122  if (rem_ == 0) {
123  /* compute number of packets in next burst */
124  rem_ = int(burstlen_.value() + .5);
125  /* make sure we got at least 1 */
126  if (rem_ == 0)
127  rem_ = 1;
128  /* start of an idle period, compute idle time */
129  t += Offtime_.value();
130  }
131  rem_--;
132 
133  size = size_;
134  //TODO: add change factor (for decay the change should be >1):interval_ = interval_ * change_ ;
135  // OR: use change by constant term as below:
136  // interval_ = interval_ + 0.000005;
137  // if(interval_<=0) interval_ = 0.000005;
138  return(t);
139 }
double interval_
Definition: expclouduser.cc:35
unsigned int rem_
Definition: expclouduser.cc:36
ExponentialRandomVariable burstlen_
Definition: expclouduser.cc:39
ExponentialRandomVariable Offtime_
Definition: expclouduser.cc:40
void ExpCloudUser::timeout ( )
virtual

Definition at line 141 of file expclouduser.cc.

142 {
143  if (! running_)
144  return;
145 
146  if (nextPkttime_ != interval_ || nextPkttime_ == -1){
147  dc_->receivedTsk(size_, createTask(), "NEW_BURST");
148  }
149  else {
150  dc_->receivedTsk(size_, createTask());
151  }
152 
153 
154  /* figure out when to send the next one */
155  nextPkttime_ = next_interval(size_);
156  /* schedule it */
157  if (nextPkttime_ > 0)
158  timer_.resched(nextPkttime_);
159 }
CloudTask * createTask()
Definition: clouduser.cc:19
double interval_
Definition: expclouduser.cc:35
virtual double next_interval(int &)
virtual void receivedTsk(int tsksize, CloudTask *pTask, const char *flags=0)
Definition: datacenter.cc:161
DataCenter * dc_
Definition: clouduser.h:45

Member Data Documentation

ExponentialRandomVariable ExpCloudUser::burstlen_
protected

Definition at line 39 of file expclouduser.cc.

double ExpCloudUser::interval_
protected

packet inter-arrival time during burst (sec)

Definition at line 35 of file expclouduser.cc.

double ExpCloudUser::offtime_
protected

average length of idle time (sec)

Definition at line 33 of file expclouduser.cc.

ExponentialRandomVariable ExpCloudUser::Offtime_
protected

Definition at line 40 of file expclouduser.cc.

double ExpCloudUser::ontime_
protected

average length of burst (sec)

Definition at line 32 of file expclouduser.cc.

double ExpCloudUser::rate_
protected

send rate during on time (bps)

Definition at line 34 of file expclouduser.cc.

unsigned int ExpCloudUser::rem_
protected

number of packets left in current burst

Definition at line 36 of file expclouduser.cc.


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