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

#include <cloudtask.h>

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

Public Member Functions

 CloudTask ()
 
 CloudTask (unsigned int size, double duration, std::vector< Resource * > demand, CloudUser *clouduser)
 
virtual ~CloudTask ()
 
int getID ()
 
double getMIPS (int rd, int cap)
 
double getDeadline ()
 
int getOutput ()
 
void setMIPS (int rd, int cap, double mips)
 
void setID (int id)
 
void setDeadline (double deadline)
 
void setOutput (int output)
 
void setIntercom (int intercom)
 
bool isFinished ()
 
void printCompCapacites ()
 
void removeTaskAlloc (TaskAlloc *ta)
 
void fail (ResourceProvider *provider)
 
void releaseAllTaskAllocs ()
 
- 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)
 

Public Attributes

int id_
 
bool scheduled_
 
bool started_
 
double deadline_
 
bool failed_
 
std::vector< TaskAlloc * > task_allocations_
 
TaskInfoinfo_
 
- Public Attributes inherited from ResourceConsumer
bool isTask
 
bool isVM
 
double size_
 
double currProcRate_
 
std::vector< ResDemand * > res_demands
 

Protected Member Functions

void handler (Event *)
 

Protected Attributes

CloudUseruser_
 
int output_
 
int intercom_
 

Detailed Description

Definition at line 15 of file cloudtask.h.

Constructor & Destructor Documentation

CloudTask::CloudTask ( )

Definition at line 16 of file cloudtask.cc.

16  : id_(0), scheduled_(false), started_(false), failed_(false), output_(0), intercom_(0)
17 {
18  isTask = true;
19 }
bool scheduled_
Definition: cloudtask.h:52
bool failed_
Definition: cloudtask.h:55
int id_
Definition: cloudtask.h:51
int output_
Definition: cloudtask.h:67
int intercom_
Definition: cloudtask.h:68
bool started_
Definition: cloudtask.h:53
CloudTask::CloudTask ( unsigned int  size,
double  duration,
std::vector< Resource * >  demand,
CloudUser clouduser 
)

Definition at line 22 of file cloudtask.cc.

22  :
23 ResourceConsumer(size, demand, true, false),id_(0), scheduled_(false), started_(false), failed_(false), user_(clouduser), output_(0), intercom_(0)
24 {
25 
26  currProcRate_=0.0;
27  deadline_ = Scheduler::instance().clock() + duration;
28  isTask = true;
29  for(unsigned int rd = 0; rd < res_demands.size();rd++){
30  if(res_demands.at(rd)->getType()==Computing){
31  for(unsigned int cap = 0; cap < res_demands.at(rd)->capacity.size();cap++){
32  task_allocations_.push_back(new TaskAlloc(this,rd,cap));
33  }
34  }
35  }
36 
37 }
bool scheduled_
Definition: cloudtask.h:52
bool failed_
Definition: cloudtask.h:55
std::vector< ResDemand * > res_demands
int id_
Definition: cloudtask.h:51
std::vector< TaskAlloc * > task_allocations_
Definition: cloudtask.h:60
double deadline_
Definition: cloudtask.h:54
int output_
Definition: cloudtask.h:67
int intercom_
Definition: cloudtask.h:68
CloudUser * user_
Definition: cloudtask.h:65
bool started_
Definition: cloudtask.h:53
CloudTask::~CloudTask ( )
virtual

Definition at line 39 of file cloudtask.cc.

40 {
41  std::vector <ResDemand*>::iterator iter;
42  for (iter = res_demands.begin() ; iter!=res_demands.end(); iter++)
43  {
44  delete (*iter);
45  }
46 }
std::vector< ResDemand * > res_demands

Member Function Documentation

void CloudTask::fail ( ResourceProvider provider)

Perform failure - related actions. Typically used after failure of one of the task allocations is detected.

Definition at line 59 of file cloudtask.cc.

59  {
60 // std::cerr << "Task\t" << id_ <<"\tfailed on provider:\t" << provider->id_ <<"\n";
61  failed_ = true;
62  if(this->started_==true){
63  provider->releaseAllocation(this);
64  }
65  provider->tskFailed_++;
67  task_allocations_.clear();
68 }
bool failed_
Definition: cloudtask.h:55
std::vector< TaskAlloc * > task_allocations_
Definition: cloudtask.h:60
void releaseAllTaskAllocs()
Definition: cloudtask.cc:70
bool releaseAllocation(ResourceConsumer *rc)
bool started_
Definition: cloudtask.h:53
double CloudTask::getDeadline ( )
inline

Definition at line 23 of file cloudtask.h.

23 {return deadline_;};
double deadline_
Definition: cloudtask.h:54
int CloudTask::getID ( )
inline

Definition at line 21 of file cloudtask.h.

21 {return id_;};
int id_
Definition: cloudtask.h:51
double CloudTask::getMIPS ( int  rd,
int  cap 
)

Definition at line 52 of file cloudtask.cc.

52  {
53  if(res_demands.at(rd)->getType() != Computing){
54  std::cerr << "MIPS requested for non-Computing resource";
55  abort();
56  }
57  return res_demands.at(rd)->capacity.at(cap);}
std::vector< ResDemand * > res_demands
int CloudTask::getOutput ( )
inline

Definition at line 24 of file cloudtask.h.

24 {return output_;};
int output_
Definition: cloudtask.h:67
void CloudTask::handler ( Event *  )
protected
bool CloudTask::isFinished ( )

Definition at line 83 of file cloudtask.cc.

83  {
84  std::vector <ResDemand*>::iterator u_res;
85 
86  /* //Check if all computational load is finished */
87  if(task_allocations_.size()>0){
88  return false;
89  } else {
90  return true;
91  }
92 }
std::vector< TaskAlloc * > task_allocations_
Definition: cloudtask.h:60
void CloudTask::printCompCapacites ( )

Definition at line 95 of file cloudtask.cc.

95  {
96  std::vector <ResDemand*>::iterator u_res;
97  std::cerr << "Capacities: ";
98  for (u_res = res_demands.begin() ; u_res!=res_demands.end(); u_res++)
99  {
100  if((*u_res)->getType()==Computing){
101  std::vector <Capacity>::iterator cap;
102  for(cap=(*u_res)->capacity.begin();cap!=(*u_res)->capacity.end();cap++){
103  std::cerr << (*cap) << " ";
104  }
105  }
106  }
107  std::cerr << "\n";
108 }
std::vector< ResDemand * > res_demands
void CloudTask::releaseAllTaskAllocs ( )

Remove all task allocations from the schedulers.

Definition at line 70 of file cloudtask.cc.

70  {
71  std::vector<TaskAlloc*>::iterator iter;
72  for(iter = task_allocations_.begin(); iter!=task_allocations_.end(); iter++){
73  if((*iter)->getCoreScheduler()!=NULL){
74  (*iter)->getCoreScheduler()->removeTaskAlloc((*iter));
75  }
76  }
77 }
std::vector< TaskAlloc * > task_allocations_
Definition: cloudtask.h:60
void CloudTask::removeTaskAlloc ( TaskAlloc ta)

Removes task allocation.

Definition at line 78 of file cloudtask.cc.

78  {
79  task_allocations_.erase(remove(task_allocations_.begin(),task_allocations_.end(),ta),
80  task_allocations_.end()); /*erase-remove idiom*/
81 }
std::vector< TaskAlloc * > task_allocations_
Definition: cloudtask.h:60
void CloudTask::setDeadline ( double  deadline)
inline

Definition at line 28 of file cloudtask.h.

28 {deadline_ = deadline;};
double deadline_
Definition: cloudtask.h:54
void CloudTask::setID ( int  id)
inline

Definition at line 27 of file cloudtask.h.

27 {id_ = id;};
int id_
Definition: cloudtask.h:51
void CloudTask::setIntercom ( int  intercom)
inline

Definition at line 30 of file cloudtask.h.

30 {intercom_ = intercom;};
int intercom_
Definition: cloudtask.h:68
void CloudTask::setMIPS ( int  rd,
int  cap,
double  mips 
)

Definition at line 48 of file cloudtask.cc.

48  {
49  res_demands.at(rd)->capacity.at(cap) = mips;
50 }
std::vector< ResDemand * > res_demands
void CloudTask::setOutput ( int  output)
inline

Definition at line 29 of file cloudtask.h.

29 {output_ = output;};
int output_
Definition: cloudtask.h:67

Member Data Documentation

double CloudTask::deadline_

task deadline

Definition at line 54 of file cloudtask.h.

bool CloudTask::failed_

Definition at line 55 of file cloudtask.h.

int CloudTask::id_

Definition at line 51 of file cloudtask.h.

TaskInfo* CloudTask::info_

Definition at line 61 of file cloudtask.h.

int CloudTask::intercom_
protected

amount of data in bytes to be transferred to another data center application.

Definition at line 68 of file cloudtask.h.

int CloudTask::output_
protected

amount of data in bytes sent out of the data center upon task completion.

Definition at line 67 of file cloudtask.h.

bool CloudTask::scheduled_

true if task has been scheduled

Definition at line 52 of file cloudtask.h.

bool CloudTask::started_

true if task has started its execution

Definition at line 53 of file cloudtask.h.

std::vector<TaskAlloc*> CloudTask::task_allocations_

Task allocations are objects that create many-to-many relationship between computational capacities of a task and core schedulers.

Definition at line 60 of file cloudtask.h.

CloudUser* CloudTask::user_
protected

The cloud user that created the task.

Definition at line 65 of file cloudtask.h.


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