X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/ea4eb2d3ae5dd567ff62f88b7e61605a94ebff0e..6644bdbf745687e07f95eea5f16c0bf7fef4ab83:/src/surf/plugins/host_load.cpp diff --git a/src/surf/plugins/host_load.cpp b/src/surf/plugins/host_load.cpp index 82668bd172..e22ceb62c2 100644 --- a/src/surf/plugins/host_load.cpp +++ b/src/surf/plugins/host_load.cpp @@ -90,8 +90,20 @@ void HostLoad::update() } } +/** + * WARNING: This function does not guarantee that you have the real load at any time; + * imagine all actions on your CPU terminate at time t. Your load is then 0. Then + * you query the load (still 0) and then another action starts (still at time t!). + * This means that the load was never really 0 (because the time didn't advance) but + * it will still be reported as 0. + * + * So, use at your own risk. + */ double HostLoad::getCurrentLoad() { + // We don't need to call update() here because it is called everytime an + // action terminates or starts + // FIXME: Can this happen at the same time? stop -> call to getCurrentLoad, load = 0 -> next action starts? return current_flops / static_cast(host->getSpeed() * host->getCoreCount()); } @@ -119,9 +131,13 @@ double HostLoad::getComputedFlops() */ void HostLoad::reset() { - last_updated = surf_get_clock(); - last_reset = surf_get_clock(); - computed_flops = 0; + last_updated = surf_get_clock(); + last_reset = surf_get_clock(); + idle_time = 0; + computed_flops = 0; + theor_max_flops = 0; + current_flops = host->pimpl_cpu->constraint()->get_usage(); + was_prev_idle = (current_flops == 0); } } }