--- /dev/null
+/* Copyright (c) 2007-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. */
+
+#include "simgrid/s4u.hpp"
+#include "simgrid/plugins/load.h"
+
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_test, "Messages specific for this s4u example");
+
+static void sender(const std::string & mailbox, uint64_t msg_size)
+{
+ auto mbox = simgrid::s4u::Mailbox::by_name(mailbox);
+ mbox->put((void*)1, msg_size);
+}
+
+static void receiver(const std::string & mailbox)
+{
+ auto mbox = simgrid::s4u::Mailbox::by_name(mailbox);
+ mbox->get();
+}
+
+static void run_transfer(simgrid::s4u::Host* src_host, simgrid::s4u::Host* dst_host,
+ const std::string & mailbox, uint64_t msg_size)
+{
+ XBT_INFO("Launching the transfer of %lu bytes", msg_size);
+ simgrid::s4u::Actor::create("sender", src_host, sender, mailbox, msg_size);
+ simgrid::s4u::Actor::create("receiver", dst_host, receiver, mailbox);
+}
+
+static void execute_load_test()
+{
+ auto host0 = simgrid::s4u::Host::by_name("node-0.simgrid.org");
+ auto host1 = simgrid::s4u::Host::by_name("node-1.simgrid.org");
+
+ simgrid::s4u::this_actor::sleep_for(1);
+ run_transfer(host0, host1, "1", 1000*1000*1000);
+
+ simgrid::s4u::this_actor::sleep_for(10);
+ run_transfer(host0, host1, "2", 1000*1000*1000);
+ simgrid::s4u::this_actor::sleep_for(3);
+ run_transfer(host0, host1, "3", 1000*1000*1000);
+}
+
+static void show_link_load(const std::string & link_name, const simgrid::s4u::Link* link)
+{
+ XBT_INFO("%s link load (cum, avg, min, max): (%g, %g, %g, %g)", link_name.c_str(),
+ sg_link_get_cum_load(link),
+ sg_link_get_avg_load(link),
+ sg_link_get_min_instantaneous_load(link),
+ sg_link_get_max_instantaneous_load(link)
+ );
+}
+
+static void monitor()
+{
+ auto link_backbone = simgrid::s4u::Link::by_name("cluster0_backbone");
+ auto link_host0 = simgrid::s4u::Link::by_name("cluster0_link_0_UP");
+ auto link_host1 = simgrid::s4u::Link::by_name("cluster0_link_1_DOWN");
+
+ XBT_INFO("Tracking desired links");
+ sg_link_cumload_track(link_backbone);
+ sg_link_cumload_track(link_host0);
+ sg_link_cumload_track(link_host1);
+
+ show_link_load("Backbone", link_backbone);
+ while (simgrid::s4u::Engine::get_clock() < 5)
+ {
+ simgrid::s4u::this_actor::sleep_for(1);
+ show_link_load("Backbone", link_backbone);
+ }
+
+ XBT_INFO("Untracking the backbone link");
+ sg_link_cumload_untrack(link_backbone);
+
+ show_link_load("Host0_UP", link_host0);
+ show_link_load("Host1_UP", link_host1);
+
+ XBT_INFO("Now resetting and probing host links each second.");
+
+ while (simgrid::s4u::Engine::get_clock() < 29)
+ {
+ sg_link_cumload_reset(link_host0);
+ sg_link_cumload_reset(link_host1);
+
+ simgrid::s4u::this_actor::sleep_for(1);
+
+ show_link_load("Host0_UP", link_host0);
+ show_link_load("Host1_UP", link_host1);
+ }
+}
+
+int main(int argc, char* argv[])
+{
+ simgrid::s4u::Engine e(&argc, argv);
+ sg_link_cumload_plugin_init();
+
+ xbt_assert(argc == 2, "Usage: %s platform_file\n\tExample: %s ../platforms/energy_platform.xml\n", argv[0], argv[0]);
+ e.load_platform(argv[1]);
+
+ simgrid::s4u::Actor::create("load_test", simgrid::s4u::Host::by_name("node-42.simgrid.org"), execute_load_test);
+ simgrid::s4u::Actor::create("monitor", simgrid::s4u::Host::by_name("node-51.simgrid.org"), monitor);
+
+ e.run();
+
+ XBT_INFO("Total simulation time: %.2f", simgrid::s4u::Engine::get_clock());
+
+ return 0;
+}
--- /dev/null
+#!/usr/bin/env tesh
+
+p This tests the LinkCumload plugin (this allows the user to get the cumulated load of a link)
+
+$ ${bindir:=.}/s4u-plugin-link-cumload ${platfdir}/cluster_backbone.xml "--log=root.fmt:[%10.6r]%e(%i:%P@%h)%e%m%n"
+> [ 0.000000] (2:monitor@node-51.simgrid.org) Tracking desired links
+> [ 0.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 1.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 1.000000] (1:load_test@node-42.simgrid.org) Launching the transfer of 1000000000 bytes
+> [ 2.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (1.27313e+08, 6.36563e+07, 0, 1.27313e+08)
+> [ 3.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (2.54625e+08, 8.4875e+07, 0, 1.27313e+08)
+> [ 4.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (3.81938e+08, 9.54844e+07, 0, 1.27313e+08)
+> [ 5.000000] (2:monitor@node-51.simgrid.org) Backbone link load (cum, avg, min, max): (5.0925e+08, 1.0185e+08, 0, 1.27313e+08)
+> [ 5.000000] (2:monitor@node-51.simgrid.org) Untracking the backbone link
+> [ 5.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (4.85e+08, 9.7e+07, 0, 1.2125e+08)
+> [ 5.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (4.85e+08, 9.7e+07, 0, 1.2125e+08)
+> [ 5.000000] (2:monitor@node-51.simgrid.org) Now resetting and probing host links each second.
+> [ 6.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 6.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 7.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 7.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 8.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 8.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 9.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 9.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 10.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (3.09465e+07, 3.09465e+07, 0, 1.2125e+08)
+> [ 10.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (3.09465e+07, 3.09465e+07, 0, 1.2125e+08)
+> [ 11.000000] (1:load_test@node-42.simgrid.org) Launching the transfer of 1000000000 bytes
+> [ 11.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 11.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 12.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 0, 1.2125e+08)
+> [ 12.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 0, 1.2125e+08)
+> [ 13.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 13.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 14.000000] (1:load_test@node-42.simgrid.org) Launching the transfer of 1000000000 bytes
+> [ 14.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 14.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 15.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 15.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 16.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 16.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 17.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 17.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 18.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 18.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 19.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 19.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 20.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 20.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 21.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 21.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 22.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 22.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 23.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 23.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 24.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 24.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 25.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 25.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 26.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 26.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 27.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 27.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (1.2125e+08, 1.2125e+08, 1.2125e+08, 1.2125e+08)
+> [ 28.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (6.09465e+07, 6.09465e+07, 0, 1.2125e+08)
+> [ 28.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (6.09465e+07, 6.09465e+07, 0, 1.2125e+08)
+> [ 29.000000] (2:monitor@node-51.simgrid.org) Host0_UP link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 29.000000] (2:monitor@node-51.simgrid.org) Host1_UP link load (cum, avg, min, max): (0, 0, 0, 0)
+> [ 29.000000] (0:maestro@) Total simulation time: 29.00