X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/131ea969cf91c332bd533b7e9d67c729149e9b4d..b372d23d3d8818b4547ef207f43b45709298a002:/src/plugins/host_energy.cpp diff --git a/src/plugins/host_energy.cpp b/src/plugins/host_energy.cpp index 1f4ba650f1..a09a39f538 100644 --- a/src/plugins/host_energy.cpp +++ b/src/plugins/host_energy.cpp @@ -156,13 +156,13 @@ public: ~HostEnergy(); double get_current_watts_value(); - double get_current_watts_value(double cpu_load); + double get_current_watts_value(double cpu_load) const; double get_consumed_energy(); - double get_watt_idle_at(int pstate); - double get_watt_min_at(int pstate); - double get_watt_max_at(int pstate); - double get_power_range_slope_at(int pstate); - double get_last_update_time() { return last_updated_; } + double get_watt_idle_at(int pstate) const; + double get_watt_min_at(int pstate) const; + double get_watt_max_at(int pstate) const; + double get_power_range_slope_at(int pstate) const; + double get_last_update_time() const { return last_updated_; } void update(); }; @@ -228,28 +228,28 @@ HostEnergy::HostEnergy(simgrid::s4u::Host* ptr) : host_(ptr) HostEnergy::~HostEnergy() = default; -double HostEnergy::get_watt_idle_at(int pstate) +double HostEnergy::get_watt_idle_at(int pstate) const { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", host_->get_cname()); return power_range_watts_list_[pstate].idle_; } -double HostEnergy::get_watt_min_at(int pstate) +double HostEnergy::get_watt_min_at(int pstate) const { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", host_->get_cname()); return power_range_watts_list_[pstate].epsilon_; } -double HostEnergy::get_watt_max_at(int pstate) +double HostEnergy::get_watt_max_at(int pstate) const { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", host_->get_cname()); return power_range_watts_list_[pstate].max_; } -double HostEnergy::get_power_range_slope_at(int pstate) +double HostEnergy::get_power_range_slope_at(int pstate) const { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", host_->get_cname()); @@ -292,7 +292,7 @@ double HostEnergy::get_current_watts_value() * * Whether the host is ON or OFF is not taken into account. */ -double HostEnergy::get_current_watts_value(double cpu_load) +double HostEnergy::get_current_watts_value(double cpu_load) const { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", host_->get_cname()); @@ -350,7 +350,7 @@ void HostEnergy::init_watts_range_list() host_->get_pstate_count()); // XBT_ATTRIB_DEPRECATED_v328: putting this macro name here so that we find it during the deprecation cleanups - std::string msg = std::string("DEPRECATION WARNING: Property 'watt_per_state' will only work until v3.28.\n"); + std::string msg = "DEPRECATION WARNING: Property 'watt_per_state' will only work until v3.28.\n"; msg += std::string("The old syntax 'Idle:OneCore:AllCores' must be converted into 'Idle:Epsilon:AllCores' to " "properly model the consumption of non-whole tasks on mono-core hosts. Here are the values to " "use for host '") + @@ -481,7 +481,7 @@ static void on_action_state_change(simgrid::kernel::resource::CpuAction const& a host = vm->get_pm(); // Get the host_energy extension for the relevant host - HostEnergy* host_energy = host->extension(); + auto* host_energy = host->extension(); if (host_energy->get_last_update_time() < surf_get_clock()) host_energy->update(); @@ -496,7 +496,7 @@ static void on_host_change(simgrid::s4u::Host const& host) if (dynamic_cast(&host)) // Ignore virtual machines return; - HostEnergy* host_energy = host.extension(); + auto* host_energy = host.extension(); host_energy->update(); } @@ -512,15 +512,13 @@ static void on_host_destruction(simgrid::s4u::Host const& host) static void on_simulation_end() { - std::vector hosts = simgrid::s4u::Engine::get_instance()->get_all_hosts(); - double total_energy = 0.0; // Total energy consumption (whole platform) double used_hosts_energy = 0.0; // Energy consumed by hosts that computed something - for (size_t i = 0; i < hosts.size(); i++) { - if (dynamic_cast(hosts[i]) == nullptr) { // Ignore virtual machines - double energy = hosts[i]->extension()->get_consumed_energy(); + for (simgrid::s4u::Host const* host : simgrid::s4u::Engine::get_instance()->get_all_hosts()) { + if (host && dynamic_cast(host) == nullptr) { // Ignore virtual machines + double energy = host->extension()->get_consumed_energy(); total_energy += energy; - if (hosts[i]->extension()->host_was_used_) + if (host->extension()->host_was_used_) used_hosts_energy += energy; } } @@ -553,7 +551,7 @@ void sg_host_energy_plugin_init() // that the next trigger would be the 2nd compute, hence ignoring the idle time // during the recv call. By updating at the beginning of a compute, we can // fix that. (If the cpu is not idle, this is not required.) - simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::Actor const&, simgrid::s4u::Exec const& activity) { + simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::Exec const& activity) { if (activity.get_host_number() == 1) { // We only run on one host simgrid::s4u::Host* host = activity.get_host(); const simgrid::s4u::VirtualMachine* vm = dynamic_cast(host);