X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/72d32c4e88a57f4786f62fec48a1bfa454adbff9..ce354758f86f0fad1ea536f1cbc0a337267b9987:/src/plugins/host_energy.cpp diff --git a/src/plugins/host_energy.cpp b/src/plugins/host_energy.cpp index 6d9483d501..2bf95b1065 100644 --- a/src/plugins/host_energy.cpp +++ b/src/plugins/host_energy.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -12,6 +12,7 @@ #include #include "src/kernel/resource/CpuImpl.hpp" +#include "src/simgrid/module.hpp" #include #include @@ -59,14 +60,25 @@ This is enough to compute the wattage as a function of the amount of loaded core - - +
#Cores loadedWattageExplanation
0 (idle) 100 Watts  Idle value
0 (not idle) 120 Watts Epsilon value
0 (idle) 100 Watts Idle value
1 140 Watts Linear extrapolation between Epsilon and AllCores
2 160 Watts Linear extrapolation between Epsilon and AllCores
3 180 Watts Linear extrapolation between Epsilon and AllCores
4 200 Watts AllCores value
+Here is how it looks graphically: + +.. image:: img/plugin-energy.svg + :scale: 80% + :align: center + +As you can see, the ``Epsilon`` parameter allows to freely specify the slope you want, while using the 2 parameters +version of the model (with only ``Idle`` and ``AllCores``) requires that the ``Idle`` value is on the extension of the +line crossing the consumption you mesure for each core amount. Please note that specifying the consumption for each core +amount separately was not a solution because parallel tasks can use an amount of cores that is not an integer. The good +news is that it was not necessary, as our experiments (detailed in the paper) show that the proposed linear model is +sufficient to capture reality. .. raw:: html @@ -94,8 +106,8 @@ This encodes the following values: To change the pstate of a given CPU, use the following functions: -:cpp:func:`MSG_host_get_nb_pstates()`, :cpp:func:`simgrid::s4u::Host::set_pstate()`, -:cpp:func:`MSG_host_get_power_peak_at()`. +:cpp:func:`sg_host_get_nb_pstates()`, :cpp:func:`simgrid::s4u::Host::set_pstate()`, +:cpp:func:`sg_host_get_pstate_speed()`. .. raw:: html @@ -216,10 +228,10 @@ HostEnergy::HostEnergy(simgrid::s4u::Host* ptr) : host_(ptr) const char* off_power_str = host_->get_property("wattage_off"); if (off_power_str != nullptr) { try { - this->watts_off_ = std::stod(std::string(off_power_str)); + this->watts_off_ = std::stod(off_power_str); } catch (const std::invalid_argument&) { - throw std::invalid_argument(std::string("Invalid value for property wattage_off of host ") + host_->get_cname() + - ": " + off_power_str); + throw std::invalid_argument("Invalid value for property wattage_off of host " + host_->get_name() + ": " + + off_power_str); } } /* watts_off is 0 by default */