double sampling_rate;
explicit Governor(simgrid::s4u::Host* ptr) : host(ptr) { init(); }
+ virtual ~Governor() = default;
void init()
{
{
double load = sg_host_get_current_load(host);
- if (load > freq_up_threshold) {
+ // FIXME I don't like that we multiply with the getCoreCount() just here...
+ if (load*host->getCoreCount() > freq_up_threshold) {
host->setPstate(0); /* Run at max. performance! */
XBT_INFO("Changed to pstate %f", 0.0);
} else {
* lowest_pstate - load*pstatesCount()
*/
int max_pstate = host->getPstatesCount() - 1;
+ int new_pstate = max_pstate - load * max_pstate;
+ host->setPstate(new_pstate);
host->setPstate(max_pstate - load * max_pstate);
XBT_INFO("Changed to pstate %f -- check: %i", max_pstate - load * max_pstate, host->getPstate());
void update()
{
- double load = sg_host_get_current_load(host);
+ double load = sg_host_get_current_load(host)*host->getCoreCount();
int pstate = host->getPstate();
if (load > freq_up_threshold) {