Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
[DVFS] Add function sg_host_get_idle_time(host)
authorChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 15 Feb 2018 14:08:19 +0000 (15:08 +0100)
committerChristian Heinrich <franz-christian.heinrich@inria.fr>
Thu, 1 Mar 2018 12:42:49 +0000 (13:42 +0100)
include/simgrid/plugins/load.h
src/surf/plugins/host_load.cpp

index 3d1c940..2fb2a94 100644 (file)
@@ -14,6 +14,7 @@ SG_BEGIN_DECL()
 
 XBT_PUBLIC(void) sg_host_load_plugin_init();
 XBT_PUBLIC(double) sg_host_get_current_load(sg_host_t host);
+XBT_PUBLIC(double) sg_host_get_idle_time(sg_host_t host);
 XBT_PUBLIC(double) sg_host_get_computed_flops(sg_host_t host);
 XBT_PUBLIC(void) sg_host_load_reset(sg_host_t host);
 
index 6845b07..f353661 100644 (file)
@@ -37,6 +37,7 @@ public:
   double getCurrentLoad();
   double getComputedFlops();
   double getAverageLoad();
+  double getIdleTime();
   void update();
   void reset();
 
@@ -86,6 +87,13 @@ double HostLoad::getCurrentLoad()
   return current_flops / static_cast<double>(host->getSpeed() * host->getCoreCount());
 }
 
+/**
+ * Return idle time since last reset
+ */
+double HostLoad::getIdleTime() {
+  return idle_time;
+}
+
 double HostLoad::getAverageLoad()
 {
   return getComputedFlops() / (host->getSpeed() * host->getCoreCount() * (surf_get_clock() - last_reset));
@@ -177,6 +185,18 @@ double sg_host_get_current_load(sg_host_t host)
   return host->extension<HostLoad>()->getCurrentLoad();
 }
 
+/** @brief Returns the time this host was idle since the last reset
+ *
+ *  See also @ref plugin_load
+ */
+double sg_host_get_idle_time(sg_host_t host)
+{
+  xbt_assert(HostLoad::EXTENSION_ID.valid(),
+             "The Load plugin is not active. Please call sg_host_load_plugin_init() during initialization.");
+
+  return host->extension<HostLoad>()->getIdleTime();
+}
+
 double sg_host_get_computed_flops(sg_host_t host)
 {
   xbt_assert(HostLoad::EXTENSION_ID.valid(),