XBT_LOG_NEW_DEFAULT_SUBCATEGORY(surf_plugin_dvfs, surf, "Logging specific to the SURF HostDvfs plugin");
+static const char* property_sampling_rate = "plugin/dvfs/sampling_rate";
+static const char* property_governor = "plugin/dvfs/governor";
+
namespace simgrid {
namespace plugin {
void init()
{
- const char* local_sampling_rate_config = host->getProperty("plugin/dvfs/sampling_rate");
- double global_sampling_rate_config = xbt_cfg_get_double("plugin/dvfs/sampling_rate");
+ const char* local_sampling_rate_config = host->getProperty(property_sampling_rate);
+ double global_sampling_rate_config = xbt_cfg_get_double(property_sampling_rate);
if (local_sampling_rate_config != nullptr) {
sampling_rate = std::stod(local_sampling_rate_config);
} else {
}
};
+/**
+ * Add this to your host tag:
+ * - <prop id="plugin/dvfs/governor" value="performance" />
+ *
+ * Valid values as of now are: performance, powersave, ondemand, conservative
+ * It doesn't matter if you use uppercase or lowercase.
+ *
+ * For the sampling rate, use this:
+ *
+ * - <prop id="plugin/dvfs/sampling_rate" value="2" />
+ *
+ * This will run the update() method of the specified governor every 2 seconds
+ * on that host.
+ *
+ * These properties can also be used within the <config> tag to configure
+ * these values globally. Using them within the <host> will overwrite this
+ * global configuration
+ */
class HostDvfs {
public:
static simgrid::xbt::Extension<simgrid::s4u::Host, HostDvfs> EXTENSION_ID;
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");
+ const char* host_conf = daemonProc->getHost()->getProperty(property_governor);
if (host_conf != nullptr) {
- dvfs_governor = std::string(daemonProc->getHost()->getProperty("plugin/dvfs/governor"));
+ dvfs_governor = std::string(daemonProc->getHost()->getProperty(property_governor));
boost::algorithm::to_lower(dvfs_governor);
} else {
- dvfs_governor = xbt_cfg_get_string("plugin/dvfs/governor");
+ dvfs_governor = xbt_cfg_get_string(property_governor);
boost::algorithm::to_lower(dvfs_governor);
}
sg_host_load_plugin_init();
simgrid::s4u::Host::onCreation.connect(&on_host_added);
- xbt_cfg_register_double("plugin/dvfs/sampling_rate", 0.1, nullptr,
+ xbt_cfg_register_double(property_sampling_rate, 0.1, nullptr,
"How often should the dvfs plugin check whether the frequency needs to be changed?");
- xbt_cfg_register_string("plugin/dvfs/governor", "performance", nullptr,
+ xbt_cfg_register_string(property_governor, "performance", nullptr,
"Which Governor should be used that adapts the CPU frequency?");
}
}