Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DVFS] Use local variable for pstate computation
[simgrid.git] / src / surf / plugins / host_dvfs.cpp
index 985d0d8..d7cd83f 100644 (file)
@@ -81,7 +81,8 @@ public:
   {
     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 {
@@ -93,6 +94,8 @@ public:
        * 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());
@@ -109,7 +112,7 @@ public:
 
   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) {