-/* Copyright (c) 2017-2020. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2017-2021. 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 <limits>
-SIMGRID_REGISTER_PLUGIN(link_energy, "Link cumulated load.", &sg_link_load_plugin_init)
+SIMGRID_REGISTER_PLUGIN(link_load, "Link cumulated load.", &sg_link_load_plugin_init)
/** @defgroup plugin_link_load Plugin Link Cumulated Load
namespace plugin {
class LinkLoad {
+ s4u::Link* link_{}; /*< The link onto which this data is attached*/
+ bool is_tracked_{false}; /*<Whether the link is tracked or not*/
+
+ double cumulated_bytes_{}; /*< Cumulated load since last reset*/
+ double min_bytes_per_second_{}; /*< Minimum instantaneous load observed since last reset*/
+ double max_bytes_per_second_{}; /*< Maximum instantaneous load observed since last reset*/
+ double last_reset_{}; /*< Timestamp of the last reset (init timestamp by default)*/
+ double last_updated_{}; /*< Timestamp of the last energy update event*/
+
public:
- static simgrid::xbt::Extension<simgrid::s4u::Link, LinkLoad> EXTENSION_ID;
+ static xbt::Extension<s4u::Link, LinkLoad> EXTENSION_ID;
- explicit LinkLoad(simgrid::s4u::Link* ptr);
- ~LinkLoad() = default;
+ explicit LinkLoad(s4u::Link* ptr);
void track();
void untrack();
double get_average_bytes();
/// Getter methods.
- bool is_tracked() const;
+ bool is_tracked() const { return is_tracked_; }
double get_cumulated_bytes();
double get_min_bytes_per_second();
double get_max_bytes_per_second();
-
-private:
- s4u::Link* link_{}; /*< The link onto which this data is attached*/
- bool is_tracked_{false}; /*<Whether the link is tracked or not*/
-
- double cumulated_bytes_{}; /*< Cumulated load since last reset*/
- double min_bytes_per_second_{}; /*< Minimum instantaneous load observed since last reset*/
- double max_bytes_per_second_{}; /*< Maximum instantaneous load observed since last reset*/
- double last_reset_{}; /*< Timestamp of the last reset (init timestamp by default)*/
- double last_updated_{}; /*< Timestamp of the last energy update event*/
};
xbt::Extension<s4u::Link, LinkLoad> LinkLoad::EXTENSION_ID;
-LinkLoad::LinkLoad(simgrid::s4u::Link* ptr) : link_(ptr), is_tracked_(false)
+LinkLoad::LinkLoad(s4u::Link* ptr) : link_(ptr), is_tracked_(false)
{
XBT_DEBUG("Instantiating a LinkLoad for link '%s'", link_->get_cname());
}
void LinkLoad::track()
{
- xbt_assert(!is_tracked_, "Trying to track load of link '%s' while it is already tracked, aborting.",
+ xbt_assert(not is_tracked_, "Trying to track load of link '%s' while it is already tracked, aborting.",
link_->get_cname());
XBT_DEBUG("Tracking load of link '%s'", link_->get_cname());
XBT_DEBUG("min_bytes_per_second_ = %g", min_bytes_per_second_);
XBT_DEBUG("max_bytes_per_second_ = %g", max_bytes_per_second_);
last_reset_ = surf_get_clock();
- last_updated_ = last_updated_;
+ last_updated_ = last_reset_;
}
void LinkLoad::update()
last_updated_ = now;
}
-bool LinkLoad::is_tracked() const
-{
- return is_tracked_;
-}
double LinkLoad::get_cumulated_bytes()
{
update();
static void on_communicate(const simgrid::kernel::resource::NetworkAction& action)
{
XBT_DEBUG("on_communicate is called");
- for (simgrid::kernel::resource::LinkImpl* link : action.get_links()) {
+ for (auto* link : action.get_links()) {
if (link == nullptr || link->get_sharing_policy() == simgrid::s4u::Link::SharingPolicy::WIFI)
continue;
void sg_link_load_plugin_init()
{
xbt_assert(sg_host_count() == 0, "Please call sg_link_load_plugin_init() BEFORE initializing the platform.");
- xbt_assert(!LinkLoad::EXTENSION_ID.valid(), "Double call to sg_link_load_plugin_init. Aborting.");
+ xbt_assert(not LinkLoad::EXTENSION_ID.valid(), "Double call to sg_link_load_plugin_init. Aborting.");
LinkLoad::EXTENSION_ID = simgrid::s4u::Link::extension_create<LinkLoad>();
// Attach new LinkLoad links created in the future.
simgrid::s4u::Link::on_communication_state_change.connect(
[](simgrid::kernel::resource::NetworkAction const& action,
simgrid::kernel::resource::Action::State /* previous */) {
- for (simgrid::kernel::resource::LinkImpl* link : action.get_links()) {
+ for (auto const* link : action.get_links()) {
if (link != nullptr && link->get_sharing_policy() != simgrid::s4u::Link::SharingPolicy::WIFI) {
auto link_load = link->get_iface()->extension<LinkLoad>();
if (link_load->is_tracked())