X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/b8df87e176f27b25534f27d7e240defa32ca35bc..21703dce5b816c7f87b16b29b44129b27629e71f:/src/plugins/link_energy.cpp
diff --git a/src/plugins/link_energy.cpp b/src/plugins/link_energy.cpp
index 98c5300874..01b0babad2 100644
--- a/src/plugins/link_energy.cpp
+++ b/src/plugins/link_energy.cpp
@@ -14,8 +14,7 @@
SIMGRID_REGISTER_PLUGIN(link_energy, "Link energy consumption.", &sg_link_energy_plugin_init)
-/** @addtogroup SURF_plugin_energy
-
+/** @defgroup plugin_link_energy
This is the link energy plugin, accounting for the dissipated energy in the simulated platform.
@@ -24,8 +23,8 @@ SIMGRID_REGISTER_PLUGIN(link_energy, "Link energy consumption.", &sg_link_energy
@verbatim
-
-
+
+
@endverbatim
@@ -87,7 +86,12 @@ void LinkEnergy::init_watts_range_list()
return;
inited_ = true;
- const char* all_power_values_str = this->link_->get_property("watt_range");
+ const char* all_power_values_str = this->link_->get_property("wattage_range");
+ if (all_power_values_str == nullptr) {
+ all_power_values_str = this->link_->get_property("watt_range");
+ if (all_power_values_str != nullptr)
+ XBT_WARN("Please rename the 'watt_range' property of link %s into 'wattage_range'.", link_->get_cname());
+ }
if (all_power_values_str == nullptr)
return;
@@ -107,13 +111,13 @@ void LinkEnergy::init_watts_range_list()
/* max_power is the power consumed at 100% link load */
try {
idle_ = std::stod(current_power_values.front());
- } catch (std::invalid_argument& ia) {
+ } catch (const std::invalid_argument&) {
throw std::invalid_argument(std::string("Invalid idle power value for link ") + this->link_->get_cname());
}
try {
busy_ = std::stod(current_power_values.back());
- } catch (std::invalid_argument& ia) {
+ } catch (const std::invalid_argument&) {
throw std::invalid_argument(std::string("Invalid busy power value for link ") + this->link_->get_cname());
}
}
@@ -136,7 +140,7 @@ double LinkEnergy::get_power()
double LinkEnergy::get_consumed_energy()
{
if (last_updated_ < surf_get_clock()) // We need to simcall this as it modifies the environment
- simgrid::simix::simcall(std::bind(&LinkEnergy::update, this));
+ simgrid::kernel::actor::simcall(std::bind(&LinkEnergy::update, this));
return this->total_energy_;
}
} // namespace plugin
@@ -145,10 +149,11 @@ double LinkEnergy::get_consumed_energy()
using simgrid::plugin::LinkEnergy;
/* **************************** events callback *************************** */
-static void on_communicate(simgrid::kernel::resource::NetworkAction* action, simgrid::s4u::Host*, simgrid::s4u::Host*)
+static void on_communicate(simgrid::kernel::resource::NetworkAction const& action, simgrid::s4u::Host*,
+ simgrid::s4u::Host*)
{
XBT_DEBUG("onCommunicate is called");
- for (simgrid::kernel::resource::LinkImpl* link : action->links()) {
+ for (simgrid::kernel::resource::LinkImpl* link : action.links()) {
if (link == nullptr)
continue;
@@ -178,14 +183,13 @@ int sg_link_energy_is_inited()
{
return LinkEnergy::EXTENSION_ID.valid();
}
-/** @ingroup SURF_plugin_energy
+/** @ingroup plugin_link_energy
* @brief Enable energy plugin
* @details Enable energy plugin to get joules consumption of each cpu. You should call this function before
* #MSG_init().
*/
void sg_link_energy_plugin_init()
{
-
if (LinkEnergy::EXTENSION_ID.valid())
return;
LinkEnergy::EXTENSION_ID = simgrid::s4u::Link::extension_create();
@@ -194,27 +198,28 @@ void sg_link_energy_plugin_init()
simgrid::s4u::Link::on_creation.connect([](simgrid::s4u::Link& link) { link.extension_set(new LinkEnergy(&link)); });
- simgrid::s4u::Link::on_state_change.connect([](simgrid::s4u::Link& link) { link.extension()->update(); });
+ simgrid::s4u::Link::on_state_change.connect(
+ [](simgrid::s4u::Link const& link) { link.extension()->update(); });
- simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link& link) {
- if (strcmp(link.get_cname(), "__loopback__"))
+ simgrid::s4u::Link::on_destruction.connect([](simgrid::s4u::Link const& link) {
+ if (link.get_name() != "__loopback__")
XBT_INFO("Energy consumption of link '%s': %f Joules", link.get_cname(),
link.extension()->get_consumed_energy());
});
- simgrid::s4u::Link::on_communication_state_change.connect(
- [](simgrid::kernel::resource::NetworkAction* action, simgrid::kernel::resource::Action::State /* previous */) {
- for (simgrid::kernel::resource::LinkImpl* link : action->links()) {
- if (link != nullptr)
- link->piface_.extension()->update();
- }
- });
+ simgrid::s4u::Link::on_communication_state_change.connect([](
+ simgrid::kernel::resource::NetworkAction const& action, simgrid::kernel::resource::Action::State /* previous */) {
+ for (simgrid::kernel::resource::LinkImpl* link : action.links()) {
+ if (link != nullptr)
+ link->piface_.extension()->update();
+ }
+ });
simgrid::s4u::Link::on_communicate.connect(&on_communicate);
- simgrid::s4u::on_simulation_end.connect(&on_simulation_end);
+ simgrid::s4u::Engine::on_simulation_end.connect(&on_simulation_end);
}
-/** @ingroup plugin_energy
+/** @ingroup plugin_link_energy
* @brief Returns the total energy consumed by the link so far (in Joules)
*
* Please note that since the consumption is lazily updated, it may require a simcall to update it.