-/* Copyright (c) 2010-2019. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2020. 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. */
/** @defgroup plugin_host_load
- @rst
+ @beginrst
Simple plugin that monitors the current load for each host.
, last_updated_(surf_get_clock())
, last_reset_(surf_get_clock())
, current_speed_(host_->get_speed())
- , current_flops_(host_->pimpl_cpu->get_constraint()->get_usage())
- , theor_max_flops_(0)
+ , current_flops_(host_->get_load())
{
}
~HostLoad() = default;
auto current_iter = iter;
++iter;
- if (action != nullptr && action->get_finish_time() != now && activity->state_ == e_smx_state_t::SIMIX_RUNNING) {
+ if (action != nullptr && action->get_finish_time() != now && activity->state_ == kernel::activity::State::RUNNING) {
if (remaining_cost_after_last_update == activity_uninitialized_remaining_cost) {
remaining_cost_after_last_update = action->get_cost();
}
double computed_flops_since_last_update = remaining_cost_after_last_update - /*remaining now*/activity->get_remaining();
computed_flops_ += computed_flops_since_last_update;
remaining_cost_after_last_update = activity->get_remaining();
- }
- else if (activity->state_ == e_smx_state_t::SIMIX_DONE) {
+ } else if (activity->state_ == kernel::activity::State::DONE) {
computed_flops_ += remaining_cost_after_last_update;
current_activities.erase(current_iter);
}
/* Current flop per second computed by the cpu; current_flops = k * pstate_speed_in_flops, k @in {0, 1, ..., cores-1}
* designates number of active cores; will be 0 if CPU is currently idle */
- current_flops_ = host_->pimpl_cpu->get_constraint()->get_usage();
+ current_flops_ = host_->get_load();
if (current_flops_ == 0) {
idle_time_ += (now - last_updated_);
idle_time_ = 0;
computed_flops_ = 0;
theor_max_flops_ = 0;
- current_flops_ = host_->pimpl_cpu->get_constraint()->get_usage();
+ current_flops_ = host_->get_load();
current_speed_ = host_->get_speed();
}
} // namespace plugin
simgrid::s4u::Exec::on_start.connect([](simgrid::s4u::Actor const&, simgrid::s4u::Exec const& activity) {
if (activity.get_host_number() == 1) { // We only run on one host
simgrid::s4u::Host* host = activity.get_host();
- simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
+ const simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
if (vm != nullptr)
host = vm->get_pm();
xbt_assert(host != nullptr);
simgrid::s4u::Exec::on_completion.connect([](simgrid::s4u::Actor const&, simgrid::s4u::Exec const& activity) {
if (activity.get_host_number() == 1) { // We only run on one host
simgrid::s4u::Host* host = activity.get_host();
- simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
+ const simgrid::s4u::VirtualMachine* vm = dynamic_cast<simgrid::s4u::VirtualMachine*>(host);
if (vm != nullptr)
host = vm->get_pm();
xbt_assert(host != nullptr);
/** @brief Returns the current load of that host, as a ratio = achieved_flops / (core_current_speed * core_amount)
* @ingroup plugin_host_load
*/
-double sg_host_get_current_load(sg_host_t host)
+double sg_host_get_current_load(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");
/** @brief Returns the current load of that host
* @ingroup plugin_host_load
*/
-double sg_host_get_avg_load(sg_host_t host)
+double sg_host_get_avg_load(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");
/** @brief Returns the time this host was idle since the last reset
* @ingroup plugin_host_load
*/
-double sg_host_get_idle_time(sg_host_t host)
+double sg_host_get_idle_time(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");
/** @brief Returns the time this host was idle since the beginning of the simulation
* @ingroup plugin_host_load
*/
-double sg_host_get_total_idle_time(sg_host_t host)
+double sg_host_get_total_idle_time(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");
/** @brief Returns the amount of flops computed by that host since the last reset
* @ingroup plugin_host_load
*/
-double sg_host_get_computed_flops(sg_host_t host)
+double sg_host_get_computed_flops(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");
/** @brief Resets the idle time and flops amount of that host
* @ingroup plugin_host_load
*/
-void sg_host_load_reset(sg_host_t host)
+void sg_host_load_reset(const_sg_host_t host)
{
xbt_assert(HostLoad::EXTENSION_ID.valid(), "Please sg_host_load_plugin_init() to initialize this plugin.");