31 delete temperatureModel;
51 long long int deltaIdle = totalIdleTicks - previousIdleTicks;
52 long long int deltaBusy = totalBusyTicks - previousBusyTicks;
53 previousIdleTicks = totalIdleTicks;
54 previousBusyTicks = totalBusyTicks;
55 long long int sumDelta = deltaIdle + deltaBusy;
62 usage = (double)deltaBusy/(
double)sumDelta;
69 totalBusyTicks = totalIdleTicks = 0;
74 return (runningTask !=
nullptr);
80 return (runningTask == p);
103 double powerCoeff = (runningTask==
nullptr) ? 0.0: runningTask->powerCoeff;
105 temperatureModel->
updateTemperature(timeInterval, &powerParams, powerCoeff, freq);
113 temperatureModel = model;
118 return temperatureModel;
123 double epsilon = 0.0000001;
124 if (f < (freq - epsilon) || (f > freq + epsilon))
171 busy ? (totalBusyTicks++) : (totalIdleTicks++);
double getMinFreq() const
get the minimum frequency at which this processor can operate
double getFreq() const
get the current frequency of the processor
void printToFile(std::string folder) const
virtual void printTemperatureHistory(std::string filename)=0
void printEnergyReport(std::string folder) const
TemperatureModel * getTemperatureModel()
void updateUsage()
updates the value of the usage percentage.
void setRunning(std::shared_ptr< Process > p)
void printTemperatureReport(std::string folder) const
void add(double time, double element)
bool isBusy() const
return true if the processor is running any task
Processor(std::shared_ptr< Utils::Configuration >)
virtual double getTemperature()=0
double getTemperature() const
double getUsage() const
get the current usage of the processor
void printFreqReport(std::string folder) const
void printUsageReport(std::string folder) const
void power(bool p)
power the processor on or off
void setFreq(double)
set the current frequency of the processor
virtual void printEnergyHistory(std::string filename)=0
void updateTemperature(double timeInterval)
bool powered() const
return true if the processor is powered on
double getMaxFreq() const
get the maximum frequency at which this processor can operate
virtual double updateTemperature(double timeInterval, struct PowerParams *params, double taskPowerCoeff, double freq)=0
std::shared_ptr< Process > getRunningTask()
void printReports(std::string folder) const
void setTemperatureModel(TemperatureModel *)
bool isRunning(std::shared_ptr< Process > p) const
returns true if the processor is running the task provided as argument