-/* Copyright (c) 2010, 2012-2018. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-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. */
#include "simgrid/plugins/dvfs.h"
#include "simgrid/plugins/load.h"
-#include "simgrid/simix.hpp"
#include "src/plugins/vm/VirtualMachineImpl.hpp"
-#include "src/surf/cpu_interface.hpp"
+#include <xbt/config.hpp>
#include <boost/algorithm/string.hpp>
-#include <boost/algorithm/string/classification.hpp>
-#include <boost/algorithm/string/split.hpp>
-#include <simgrid/msg.h>
-#include <simgrid/s4u/Engine.hpp>
-#include <string>
-#include <utility>
-#include <vector>
-#include <xbt/config.hpp>
/** @addtogroup SURF_plugin_load
class Governor {
protected:
- simgrid::s4u::Host* host;
+ simgrid::s4u::Host* const host;
public:
double sampling_rate;
*/
class OnDemand : public Governor {
/**
- * See https://elixir.bootlin.com/linux/v4.15.4/source/drivers/cpufreq/cpufreq_ondemand.c
+ * See https://elixir.bootlin.com/linux/v4.15.4/source/drivers/cpufreq/cpufreq_ondemand.c
* DEF_FREQUENCY_UP_THRESHOLD and od_update()
*/
double freq_up_threshold = 0.80;
if (dynamic_cast<simgrid::s4u::VirtualMachine*>(&host)) // Ignore virtual machines
return;
- std::string name = std::string("dvfs-daemon-") + host.getCname();
- simgrid::s4u::ActorPtr daemon = simgrid::s4u::Actor::createActor(name.c_str(), &host, []() {
+ std::string name = std::string("dvfs-daemon-") + host.get_cname();
+ simgrid::s4u::ActorPtr daemon = simgrid::s4u::Actor::create(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();
+ simgrid::s4u::ActorPtr daemon_proc = simgrid::s4u::Actor::self();
- XBT_DEBUG("DVFS process on %s is a daemon: %d", daemonProc->getHost()->getName().c_str(), daemonProc->isDaemon());
+ XBT_DEBUG("DVFS process on %s is a daemon: %d", daemon_proc->get_host()->get_cname(), daemon_proc->is_daemon());
std::string dvfs_governor;
- const char* host_conf = daemonProc->getHost()->getProperty(property_governor);
+ const char* host_conf = daemon_proc->get_host()->getProperty(property_governor);
if (host_conf != nullptr) {
- dvfs_governor = std::string(daemonProc->getHost()->getProperty(property_governor));
+ dvfs_governor = std::string(daemon_proc->get_host()->getProperty(property_governor));
boost::algorithm::to_lower(dvfs_governor);
} else {
dvfs_governor = xbt_cfg_get_string(property_governor);
boost::algorithm::to_lower(dvfs_governor);
}
- auto governor = [&dvfs_governor, &daemonProc]() {
+ auto governor = [&dvfs_governor, &daemon_proc]() {
if (dvfs_governor == "conservative") {
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
- new simgrid::plugin::dvfs::Conservative(daemonProc->getHost()));
+ new simgrid::plugin::dvfs::Conservative(daemon_proc->get_host()));
} else if (dvfs_governor == "ondemand") {
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
- new simgrid::plugin::dvfs::OnDemand(daemonProc->getHost()));
+ new simgrid::plugin::dvfs::OnDemand(daemon_proc->get_host()));
} else if (dvfs_governor == "performance") {
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
- new simgrid::plugin::dvfs::Performance(daemonProc->getHost()));
+ new simgrid::plugin::dvfs::Performance(daemon_proc->get_host()));
} else if (dvfs_governor == "powersave") {
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
- new simgrid::plugin::dvfs::Powersave(daemonProc->getHost()));
+ new simgrid::plugin::dvfs::Powersave(daemon_proc->get_host()));
} else {
XBT_CRITICAL("No governor specified for host %s, falling back to Performance",
- daemonProc->getHost()->getCname());
+ daemon_proc->get_host()->get_cname());
return std::unique_ptr<simgrid::plugin::dvfs::Governor>(
- new simgrid::plugin::dvfs::Performance(daemonProc->getHost()));
+ new simgrid::plugin::dvfs::Performance(daemon_proc->get_host()));
}
}();
}
/* **************************** Public interface *************************** */
-extern "C" {
/** \ingroup SURF_plugin_load
* \brief Initializes the HostDvfs plugin
xbt_cfg_register_string(property_governor, "performance", nullptr,
"Which Governor should be used that adapts the CPU frequency?");
}
-}