X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/da6239380f0e9b6430062d01ad33ce882ebd46fd..76aa5f3a171581cdc6c36e481fd96201d186cc01:/src/surf/plugins/host_dvfs.cpp diff --git a/src/surf/plugins/host_dvfs.cpp b/src/surf/plugins/host_dvfs.cpp index 6eac77742c..808bab9c04 100644 --- a/src/surf/plugins/host_dvfs.cpp +++ b/src/surf/plugins/host_dvfs.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2010, 2012-2016. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2010, 2012-2018. 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. */ @@ -9,9 +9,9 @@ #include "src/plugins/vm/VirtualMachineImpl.hpp" #include "src/surf/cpu_interface.hpp" +#include #include #include -#include #include #include #include @@ -139,18 +139,13 @@ class HostDvfs { public: static simgrid::xbt::Extension EXTENSION_ID; - explicit HostDvfs(simgrid::s4u::Host* ptr); + explicit HostDvfs(simgrid::s4u::Host*); ~HostDvfs(); - -private: - simgrid::s4u::Host* host = nullptr; }; simgrid::xbt::Extension HostDvfs::EXTENSION_ID; -HostDvfs::HostDvfs(simgrid::s4u::Host* ptr) : host(ptr) -{ -} +HostDvfs::HostDvfs(simgrid::s4u::Host* ptr) {} HostDvfs::~HostDvfs() = default; } @@ -164,45 +159,43 @@ static void on_host_added(simgrid::s4u::Host& host) if (dynamic_cast(&host)) // Ignore virtual machines return; - std::string name = "dvfs-daemon-" + host.getName(); + std::string name = std::string("dvfs-daemon-") + host.getCname(); simgrid::s4u::ActorPtr daemon = simgrid::s4u::Actor::createActor(name.c_str(), &host, []() { - /** - * This lambda function is the function the actor (daemon) will execute - * all the time - in the case of the dvfs plugin, this controls when to - * lower/raise the frequency. - */ - simgrid::s4u::ActorPtr daemonProc = simgrid::s4u::Actor::self(); - - XBT_DEBUG("DVFS process on %s is a daemon: %d", daemonProc->getHost()->getName().c_str(), daemonProc->isDaemon()); - - std::string dvfs_governor; - const char* host_conf = daemonProc->getHost()->getProperty("plugin/dvfs/governor"); - if (host_conf != nullptr) { - dvfs_governor = std::string(daemonProc->getHost()->getProperty("plugin/dvfs/governor")); - boost::algorithm::to_lower(dvfs_governor); - } - else { - dvfs_governor = xbt_cfg_get_string("plugin/dvfs/governor"); - boost::algorithm::to_lower(dvfs_governor); - } - - simgrid::plugin::dvfs::Governor governor(daemonProc->getHost()); - if (dvfs_governor == "conservative") { - governor = simgrid::plugin::dvfs::Conservative(daemonProc->getHost()); - } + /** + * This lambda function is the function the actor (daemon) will execute + * all the time - in the case of the dvfs plugin, this controls when to + * lower/raise the frequency. + */ + simgrid::s4u::ActorPtr daemonProc = simgrid::s4u::Actor::self(); + + XBT_DEBUG("DVFS process on %s is a daemon: %d", daemonProc->getHost()->getName().c_str(), daemonProc->isDaemon()); + + std::string dvfs_governor; + const char* host_conf = daemonProc->getHost()->getProperty("plugin/dvfs/governor"); + if (host_conf != nullptr) { + dvfs_governor = std::string(daemonProc->getHost()->getProperty("plugin/dvfs/governor")); + boost::algorithm::to_lower(dvfs_governor); + } else { + dvfs_governor = xbt_cfg_get_string("plugin/dvfs/governor"); + boost::algorithm::to_lower(dvfs_governor); + } - while (1) { - // Sleep *before* updating; important for startup (i.e., t = 0). - // In the beginning, we want to go with the pstates specified in the platform file - // (so we sleep first) - simgrid::s4u::this_actor::sleep_for(governor.samplingRate()); - governor.update(); - XBT_INFO("Governor just updated!"); - } + simgrid::plugin::dvfs::Governor governor(daemonProc->getHost()); + if (dvfs_governor == "conservative") { + governor = simgrid::plugin::dvfs::Conservative(daemonProc->getHost()); + } + while (1) { + // Sleep *before* updating; important for startup (i.e., t = 0). + // In the beginning, we want to go with the pstates specified in the platform file + // (so we sleep first) + simgrid::s4u::this_actor::sleep_for(governor.samplingRate()); + governor.update(); + XBT_INFO("Governor just updated!"); + } - XBT_WARN("I should have never reached this point: daemons should be killed when all regular processes are done"); - return 0; + XBT_WARN("I should have never reached this point: daemons should be killed when all regular processes are done"); + return 0; }); // This call must be placed in this function. Otherweise, the daemonize() call comes too late and