Scheduler
domainModel.cpp
Go to the documentation of this file.
1 
10 #include "domainModel.h"
11 
12 #include <cassert>
13 #include <iostream>
14 #include <limits>
15 
16 #include <scheduler/system.h>
17 #include <scheduler/processor.h>
18 #include <scheduler/time.h>
19 
21 #include "configuration.h"
22 
23 
25 
26 using namespace RlScheduler;
27 
28 DomainModel::DomainModel(std::shared_ptr<Configuration> c) :
29  conf(c),
30  tempRecord(c, "tempRecord"),
31  maxTempRecord(c, "maxTempRecord")
32 {
33  assert(conf != nullptr);
34  deadlineMissRewardCoeff = conf->getDoubleValue("rlDiscipline", "deadlineMissRewardCoeff");
35  temperatureRewardCoeff = conf->getDoubleValue("rlDiscipline", "tempRewardCoeff");
36  agingRewardCoeff = conf->getDoubleValue("rlDiscipline", "agingRewardCoeff");
37  maxTempEstimator = conf->getMaxTempEstimatorFromFile();
38 
39  usingThreshold = conf->getBoolValue("rlDiscipline", "usingThreshold", true);
40 }
41 
43 {
44 }
46 {
47  /*
48  tempRecord.printToFile(".");
49  maxTempRecord.printToFile(".");
50  */
51  if (maxTempEstimator != nullptr)
52  delete maxTempEstimator;
53 }
54 
56 {
57  /*Deadline misses is updated in the rlDiscipline directly,
58  Let's add the temperature to it.*/
59  double ret = deadlineMissRewardCoeff*reward - temperatureRewardCoeff*getTemperatureCost() - agingRewardCoeff*getAging();
60  //if (getTemperatureCost() > 0.0 && reward > -1000000000)
61  {
62  //if (reward < -0.00000001 || reward > 0.0000001)
63  {
64  /*
65  std::cerr << "reward is a+c*b = " << deadlineMissRewardCoeff*reward;
66  std::cerr << "+" << temperatureRewardCoeff << "x" << getTemperatureCost() << "\n";
67  */
68  }
69  }
70  return ret;
71 }
72 
74 {
75 #if 0
76  return getInstantaneousTemp();
77 #endif
78 #if 0
79 #endif
80  if (usingThreshold)
81  {
82  static const double tempLimit = conf->getTempLimit();
83  double temp = getInstantaneousTemp();
84  if (temp > tempLimit)
85  return 1.0;
86  return 0.0;
87  }
88  assert(maxTempEstimator != nullptr);
89  return maxTempEstimator->getMaximumTemperature();
90 }
91 
93 {
95 }
96 
98 {
99  static double previousValue = 0.0;
100  static double increment = 0.0;
101 
103  double cumul = model->getConsumedLifetime();
104  increment = cumul - previousValue;
105  previousValue = cumul;
106 
107  return increment;
108 }
109 
110 
111 
112 
113 
114 
115 
116 
117 
118 
119 
120 
list temp
Definition: bigtemp.py:9
static System * getInstance()
Definition: system.cpp:28
TemperatureModel * getTemperatureModel()
Definition: processor.cpp:116
virtual double getMaximumTemperature()=0
double measureReward() override
Definition: domainModel.cpp:55
double getTemperature() const
Definition: processor.cpp:185
list cumul
Definition: aging.py:13
Processor * getProc()
return the processor
Definition: system.cpp:76
Definition: reward.py:1
DomainModel(std::shared_ptr< Configuration > conf)
Definition: domainModel.cpp:28