From 18baa3a0ab674a7402319d489a05e5b5d8b6fa36 Mon Sep 17 00:00:00 2001 From: Christian Heinrich Date: Tue, 2 Oct 2018 15:22:22 +0200 Subject: [PATCH] [ENERGY] Add getter for idle consumption We currently still have one idle value per pstate, however this should change soon. For this reason, this implementation only uses the value from pstate 0 and will move towards the next syntax. Doing this allows us to avoid changing the signature of the function (as the pstate will then be no longer required). --- include/simgrid/plugins/energy.h | 1 + src/plugins/host_energy.cpp | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/include/simgrid/plugins/energy.h b/include/simgrid/plugins/energy.h index 3cfe6e7b9c..67e5a260e4 100644 --- a/include/simgrid/plugins/energy.h +++ b/include/simgrid/plugins/energy.h @@ -14,6 +14,7 @@ SG_BEGIN_DECL() XBT_PUBLIC void sg_host_energy_plugin_init(); XBT_PUBLIC void sg_host_energy_update_all(); XBT_PUBLIC double sg_host_get_consumed_energy(sg_host_t host); +XBT_PUBLIC double sg_host_get_idle_consumption(sg_host_t host); XBT_PUBLIC double sg_host_get_wattmin_at(sg_host_t host, int pstate); XBT_PUBLIC double sg_host_get_wattmax_at(sg_host_t host, int pstate); XBT_PUBLIC double sg_host_get_current_consumption(sg_host_t host); diff --git a/src/plugins/host_energy.cpp b/src/plugins/host_energy.cpp index ec14e759e7..763b905c67 100644 --- a/src/plugins/host_energy.cpp +++ b/src/plugins/host_energy.cpp @@ -134,6 +134,7 @@ public: double get_current_watts_value(); double get_current_watts_value(double cpu_load); double get_consumed_energy(); + double get_idle_consumption(); double get_watt_min_at(int pstate); double get_watt_max_at(int pstate); void update(); @@ -212,6 +213,14 @@ HostEnergy::HostEnergy(simgrid::s4u::Host* ptr) : host_(ptr), last_updated_(surf HostEnergy::~HostEnergy() = default; +double HostEnergy::get_idle_consumption() +{ + xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", + host_->get_cname()); + + return power_range_watts_list_[0].idle_; +} + double HostEnergy::get_watt_min_at(int pstate) { xbt_assert(not power_range_watts_list_.empty(), "No power range properties specified for host %s", @@ -526,6 +535,16 @@ double sg_host_get_consumed_energy(sg_host_t host) return host->extension()->get_consumed_energy(); } +/** @ingroup plugin_energy + * @brief Get the amount of watt dissipated when the host is idling + */ +double sg_host_get_idle_consumption(sg_host_t host) +{ + xbt_assert(HostEnergy::EXTENSION_ID.valid(), + "The Energy plugin is not active. Please call sg_host_energy_plugin_init() during initialization."); + return host->extension()->get_idle_consumption(); +} + /** @ingroup plugin_energy * @brief Get the amount of watt dissipated at the given pstate when the host is idling */ -- 2.20.1